diff --git a/.flake8 b/.flake8 deleted file mode 100644 index a46d303e..00000000 --- a/.flake8 +++ /dev/null @@ -1,6 +0,0 @@ -[flake8] -ignore = E501, F821, W504, W605, E303, E126, E131, E241 -show-source = True -count = True -statistics = True -max-line-length=127 \ No newline at end of file diff --git a/.github/workflows/ci-master-scheduled.yml b/.github/workflows/ci-master-scheduled.yaml similarity index 59% rename from .github/workflows/ci-master-scheduled.yml rename to .github/workflows/ci-master-scheduled.yaml index a94e31c7..e4b38cd9 100644 --- a/.github/workflows/ci-master-scheduled.yml +++ b/.github/workflows/ci-master-scheduled.yaml @@ -20,35 +20,25 @@ jobs: - "3.11" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - name: Setup python + uses: actions/setup-python@v5 with: - python-version: ${{ matrix.python_version }} + python-version: "${{ matrix.python_version }}" - - name: Install Poetry - run: python -m pip install poetry poetry-dynamic-versioning - - - uses: actions/cache@v3 - name: Cache Poetry dependencies + - name: Install uv + uses: astral-sh/setup-uv@v6 with: - path: | - ~/.cache - ~/.local/share/virtualenvs/ - key: ${{ runner.os }}-poetry-${{ hashFiles('**/poetry.lock') }} - restore-keys: | - ${{ runner.os }}-poetry- - - - name: Get dependencies - run: poetry install + python-version: "${{ matrix.python_version }}" + enable-cache: true + version: "0.8.7" - name: Lint continue-on-error: true run: | # stop the build if there are Python syntax errors or undefined names - poetry run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - poetry run flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + uvx ruff check . --fix --select=E9,F63,F7,F82 --statistics --config ruff.toml --exclude specs - name: Travis Test - Start agent id: start_agent @@ -59,11 +49,6 @@ jobs: sudo apt-get install linux-headers-$(uname -r) dkms gcc-multilib g++-multilib ./test/start_agent.sh - - name: Travis Test - Install dependencies - run: | - poetry build - python -m pip install $(find dist -iname "*.whl" | head -1) - - name: Travis Test - Secure APIs env: PYTHON_SDC_TEST_API_TOKEN: ${{ secrets.STAGING_SECURE_API_TOKEN }} @@ -75,7 +60,7 @@ jobs: SDC_SECURE_TOKEN: ${{ secrets.STAGING_SECURE_API_TOKEN }} SDC_MONITOR_URL: "https://app-staging.sysdigcloud.com" SDC_SECURE_URL: "https://secure-staging.sysdig.com" - run: poetry run mamba -f documentation + run: uv run -- mamba -f documentation - name: Travis Test - Stop agent run: ./test/stop_agent.sh diff --git a/.github/workflows/ci-pull-request.yml b/.github/workflows/ci-pull-request.yaml similarity index 56% rename from .github/workflows/ci-pull-request.yml rename to .github/workflows/ci-pull-request.yaml index 1e42804c..ab2474b0 100644 --- a/.github/workflows/ci-pull-request.yml +++ b/.github/workflows/ci-pull-request.yaml @@ -15,41 +15,29 @@ jobs: matrix: python_version: # https://python-release-cycle.glitch.me/ - - "3.7" - - "3.8" - "3.9" - "3.10" - "3.11" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - name: Setup python + uses: actions/setup-python@v5 with: - python-version: ${{ matrix.python_version }} + python-version: "${{ matrix.python_version }}" - - name: Install Poetry - run: python -m pip install poetry poetry-dynamic-versioning - - - uses: actions/cache@v3 - name: Cache Poetry dependencies + - name: Install uv + uses: astral-sh/setup-uv@v6 with: - path: | - ~/.cache - ~/.local/share/virtualenvs/ - key: ${{ runner.os }}-poetry-${{ hashFiles('**/poetry.lock') }} - restore-keys: | - ${{ runner.os }}-poetry- - - - name: Get dependencies - run: poetry install + python-version: "${{ matrix.python_version }}" + enable-cache: true + version: "0.8.7" - name: Lint run: | - # stop the build if there are Python syntax errors or undefined names - poetry run flake8 # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - poetry run flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + uvx ruff check . --fix --select=E9,F63,F7,F82 --statistics --config ruff.toml --exclude specs - name: Test in staging env: @@ -57,12 +45,12 @@ jobs: SDC_SECURE_TOKEN: ${{ secrets.STAGING_SECURE_API_TOKEN }} SDC_MONITOR_URL: "https://app-staging.sysdigcloud.com" SDC_SECURE_URL: "https://secure-staging.sysdig.com" - run: poetry run mamba -f documentation -t integration + run: uv run -- mamba -f documentation -t integration test-release: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 + steps: + - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -79,15 +67,17 @@ jobs: - name: Generate changelog run: git-chglog -c .github/git-chglog/config.yml -o RELEASE_CHANGELOG.md $(git describe --tags $(git rev-list --tags --max-count=1)) - - name: Set up Python - uses: actions/setup-python@v4 + - name: Setup python + uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: "3.10" - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install poetry poetry-dynamic-versioning + - name: Install uv + uses: astral-sh/setup-uv@v6 + with: + python-version: "3.10" + enable-cache: true + version: "0.8.7" - name: Build - run: poetry build + run: uv build diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yaml similarity index 97% rename from .github/workflows/codeql-analysis.yml rename to .github/workflows/codeql-analysis.yaml index ea21158f..9cd573ea 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yaml @@ -30,7 +30,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. @@ -47,7 +47,7 @@ jobs: with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. + # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. # queries: ./path/to/local/query, your-org/your-repo/queries@main diff --git a/.github/workflows/python.yaml b/.github/workflows/python.yaml new file mode 100644 index 00000000..6591a262 --- /dev/null +++ b/.github/workflows/python.yaml @@ -0,0 +1,99 @@ +# NOTE: This file is auto generated by OpenAPI Generator. +# URL: https://openapi-generator.tech +# +# ref: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: sysdig_client Python package + +on: + push: + pull_request: + workflow_call: + workflow_dispatch: + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + max-parallel: 5 + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install uv + uses: astral-sh/setup-uv@v6 + with: + python-version: "${{ matrix.python-version }}" + enable-cache: true + version: "0.8.7" + + - name: Download dependencies + run: make init + + - name: Run ruff check + run: uvx ruff check . --fix --select=E9,F63,F7,F82 --statistics --config ruff.toml --exclude specs + + - name: Run Tests + run: make test-all + + check_version: + name: Check Version + runs-on: ubuntu-latest + needs: build + permissions: + contents: write # required for creating a tag + steps: + - name: Check out repository + uses: actions/checkout@v4 + with: + ref: ${{ github.sha }} # required for better experience using pre-releases + fetch-depth: '0' # Required due to the way Git works, without it this action won't be able to find any or the correct tags + + - name: Extract current version + id: pyproject_version + run: | + TAG=v$(grep 'version =' pyproject.toml | sed -e 's/version = "\(.*\)"/\1/') + echo "TAG=$TAG" >> "$GITHUB_OUTPUT" + + - name: Get branch ref name + id: branch_ref + run: | + BRANCH_NAME=${{ github.base_ref || github.ref_name }} + echo "$BRANCH_NAME" + echo "BRANCH_NAME=$BRANCH_NAME" >> "$GITHUB_OUTPUT" + + - name: Get tag version + id: semantic_release + uses: anothrNick/github-tag-action@1.71.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DEFAULT_BUMP: "patch" + TAG_CONTEXT: 'repo' + WITH_V: true + DRY_RUN: true + + - name: Compare versions + run: | + echo "Current version: ${{ steps.pyproject_version.outputs.TAG }}" + echo "New version: ${{ steps.semantic_release.outputs.tag }}" + if [ "${{ steps.pyproject_version.outputs.TAG }}" != "${{ steps.semantic_release.outputs.tag }}" ]; then + echo "### Version mismatch detected! :warning: + Current pyproject version: ${{ steps.pyproject_version.outputs.TAG }} + New Tag version: **${{ steps.semantic_release.outputs.tag }}** + Current Tag: ${{ steps.semantic_release.outputs.old_tag }} + Please update the version in pyproject.toml." >> $GITHUB_STEP_SUMMARY + exit 1 + else + echo "### Version match confirmed! :rocket: + Current pyproject version: ${{ steps.pyproject_version.outputs.TAG }} + New Tag version: **${{ steps.semantic_release.outputs.tag }}** + The version is up-to-date." >> $GITHUB_STEP_SUMMARY + fi diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml new file mode 100644 index 00000000..ee44464f --- /dev/null +++ b/.github/workflows/python.yml @@ -0,0 +1,31 @@ +# NOTE: This file is auto generated by OpenAPI Generator. +# URL: https://openapi-generator.tech +# +# ref: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: sysdig_client Python package + +on: [push, pull_request] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install -r test-requirements.txt + - name: Test with pytest + run: | + pytest --cov=sysdig_client diff --git a/.github/workflows/release.yml b/.github/workflows/release.yaml similarity index 75% rename from .github/workflows/release.yml rename to .github/workflows/release.yaml index a8e18961..7306f863 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yaml @@ -4,7 +4,7 @@ on: push: tags: - v* - + workflow_dispatch: jobs: release: runs-on: ubuntu-latest @@ -12,7 +12,7 @@ jobs: upload_url: ${{ steps.create_release.outputs.upload_url }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -45,17 +45,21 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.10 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install poetry poetry-dynamic-versioning + - name: Install uv + uses: astral-sh/setup-uv@v6 + with: + python-version: 3.10 + enable-cache: true + version: "0.8.7" - name: Build and publish - run: poetry publish --build -u ${{ secrets.PYPI_USER }} -p ${{ secrets.PYPI_PASSWORD }} + run: | + uv build + uv publish -u ${{ secrets.PYPI_USER }} -p ${{ secrets.PYPI_PASSWORD }} diff --git a/.gitignore b/.gitignore index 404fc5aa..133692ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] +*$py.class # C extensions *.so @@ -42,6 +43,12 @@ htmlcov/ nosetests.xml coverage.xml *,cover +.hypothesis/ +venv/ +.venv/ +.python-version +.pytest_cache +pytest.xml # Translations *.mo @@ -56,13 +63,5 @@ docs/_build/ # PyBuilder target/ -# virtualenv -venv/ - -# Direnv -.envrc - -# IntelliJ projects -.idea/ - -coverage/ +#Ipython Notebook +.ipynb_checkpoints diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..47e2ff81 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "api-spec"] + path = api-spec + url = git@github.com:draios/api-spec.git@0d4b5a9fb72b1bb2275878f0b46ec1cba3ee91a4 diff --git a/.openapi-generator-ignore b/.openapi-generator-ignore new file mode 100644 index 00000000..00c59cb4 --- /dev/null +++ b/.openapi-generator-ignore @@ -0,0 +1,32 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux +.gitlab-ci.yml +.travis.yml +git_push.sh +requirements.txt +setup.cfg +setup.py +test-requirements.txt +tox.ini +pyproject.toml + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES new file mode 100644 index 00000000..74b225fa --- /dev/null +++ b/.openapi-generator/FILES @@ -0,0 +1,1179 @@ +.github/workflows/python.yml +.gitignore +README.md +docs/reference/AccessKeyResponseV1.md +docs/reference/AccessKeysApi.md +docs/reference/Action.md +docs/reference/ActionExecution.md +docs/reference/ActionExecutionParameterValue.md +docs/reference/ActionExecutionStatus.md +docs/reference/ActionExecutions.md +docs/reference/ActionOutputsMetadata.md +docs/reference/ActionParameterMetadata.md +docs/reference/ActionType.md +docs/reference/Actions.md +docs/reference/ActivityAuditApi.md +docs/reference/AdditionalTeamPermissionsV1.md +docs/reference/AgentlessMlRuntimeDetectionContent.md +docs/reference/AgentlessMlRuntimeDetectionContentAllOfFields.md +docs/reference/AgentlessRuntimeDetectionContent.md +docs/reference/AgentlessRuntimeDetectionContentAllOfFields.md +docs/reference/AlertMonitorEvent.md +docs/reference/AlertsResponseV1.md +docs/reference/AlertsResponseV1Data.md +docs/reference/AlertsResponseV1DataAlertsInner.md +docs/reference/AllSsoSettingsResponseV1.md +docs/reference/AmazonSQSCreateConnectionInfo.md +docs/reference/AmazonSQSUpdateConnectionInfo.md +docs/reference/AuditEvent.md +docs/reference/AuditPage.md +docs/reference/AuditSupportedFilter.md +docs/reference/AuditSupportedFiltersResponse.md +docs/reference/AuditTrailContent.md +docs/reference/AuthenticatedConnectionInfoElasticsearch.md +docs/reference/AuthenticatedConnectionInfoKafka.md +docs/reference/AuthenticatedConnectionInfoWebhook.md +docs/reference/BOMMetadata.md +docs/reference/BaseAction.md +docs/reference/BaseConnectionInfoAmazonSqs.md +docs/reference/BaseConnectionInfoChronicle.md +docs/reference/BaseConnectionInfoChronicleV2.md +docs/reference/BaseConnectionInfoElasticsearch.md +docs/reference/BaseConnectionInfoGooglePubSub.md +docs/reference/BaseConnectionInfoGoogleScc.md +docs/reference/BaseConnectionInfoKafka.md +docs/reference/BaseConnectionInfoMcm.md +docs/reference/BaseConnectionInfoMicrosoftSentinel.md +docs/reference/BaseConnectionInfoQradar.md +docs/reference/BaseConnectionInfoSplunk.md +docs/reference/BaseConnectionInfoSyslog.md +docs/reference/BaseConnectionInfoWebhook.md +docs/reference/BaseContent.md +docs/reference/BaseImage.md +docs/reference/BaseIntegrationPayload.md +docs/reference/BaseMonitorEvent.md +docs/reference/BaseRiskAcceptedPayload.md +docs/reference/BaseRiskAcceptedResponsePayload.md +docs/reference/BucketConfigurationV1.md +docs/reference/Bundle.md +docs/reference/BundleRef.md +docs/reference/BundleRule.md +docs/reference/BundleRulePredicatesInner.md +docs/reference/CaptureAction.md +docs/reference/CaptureStorageApi.md +docs/reference/CaptureStorageConfigurationResponseV1.md +docs/reference/Category.md +docs/reference/Certificate.md +docs/reference/CertificateValidity.md +docs/reference/CertificatesApi.md +docs/reference/CertificatesResponse.md +docs/reference/CheckboxFieldValueV1.md +docs/reference/ChronicleCreateConnectionInfo.md +docs/reference/ChronicleUpdateConnectionInfo.md +docs/reference/CisaKevAvailableSince.md +docs/reference/CisaKevKnownRansomwareCampaignUse.md +docs/reference/CisaKevPublishDate.md +docs/reference/CisaKevPublishDateExtra.md +docs/reference/Command.md +docs/reference/CompositionsInner.md +docs/reference/Connection.md +docs/reference/ContainerInfo.md +docs/reference/ContainerKilledAction.md +docs/reference/ContainerPausedAction.md +docs/reference/ContainerStoppedAction.md +docs/reference/Context.md +docs/reference/CostAdvisorCustomPricingApi.md +docs/reference/CostAdvisorDataApi.md +docs/reference/CreateAccessKeyRequestV1.md +docs/reference/CreateAmazonSqsIntegrationRequest.md +docs/reference/CreateBundleRequest.md +docs/reference/CreateChronicleIntegrationConnInfo.md +docs/reference/CreateChronicleIntegrationConnInfoV2.md +docs/reference/CreateChronicleIntegrationRequest.md +docs/reference/CreateCustomWebhookNotificationChannelRequestV1.md +docs/reference/CreateElasticsearchIntegrationRequest.md +docs/reference/CreateElasticsearchIntegrationRequestAllOfConnectionInfo.md +docs/reference/CreateEmailNotificationChannelRequestV1.md +docs/reference/CreateGchatNotificationChannelRequestV1.md +docs/reference/CreateGlobalServiceAccountRequestV1.md +docs/reference/CreateGooglePubSubIntegrationRequest.md +docs/reference/CreateGoogleSccIntegrationRequest.md +docs/reference/CreateGroupMappingRequestV1.md +docs/reference/CreateIbmEventNotificationsNotificationChannelRequestV1.md +docs/reference/CreateInhibitionRuleRequestV1.md +docs/reference/CreateIntegrationRequest.md +docs/reference/CreateIntegrationRequestV1.md +docs/reference/CreateIpFilterV1.md +docs/reference/CreateIssueTypeRequestV1.md +docs/reference/CreateKafkaIntegrationRequest.md +docs/reference/CreateKafkaIntegrationRequestAllOfConnectionInfo.md +docs/reference/CreateMcmIntegrationRequest.md +docs/reference/CreateMicrosoftSentinelIntegrationRequest.md +docs/reference/CreateMsTeamsNotificationChannelRequestV1.md +docs/reference/CreateNotificationChannelRequestV1.md +docs/reference/CreateOpsgenieNotificationChannelRequestV1.md +docs/reference/CreatePagerDutyNotificationChannelRequestV1.md +docs/reference/CreatePolicyRequest.md +docs/reference/CreatePricingRequestV1.md +docs/reference/CreatePrometheusAlertManagerNotificationChannelRequestV1.md +docs/reference/CreateQradarIntegrationRequest.md +docs/reference/CreateRiskAcceptedRequest.md +docs/reference/CreateRiskAcceptedRequestAllOfContext.md +docs/reference/CreateServiceAccountRequestV1.md +docs/reference/CreateServiceAccountsNotificationSettingsRequestV1.md +docs/reference/CreateSlackNotificationChannelRequestV1.md +docs/reference/CreateSnsNotificationChannelRequestV1.md +docs/reference/CreateSplunkIntegrationRequest.md +docs/reference/CreateSsoSettingsRequestV1.md +docs/reference/CreateSyslogIntegrationRequest.md +docs/reference/CreateTeamEmailNotificationChannelRequestV1.md +docs/reference/CreateTeamRequestV1.md +docs/reference/CreateTeamServiceAccountRequestV1.md +docs/reference/CreateUserRequestV1.md +docs/reference/CreateVictorOpsNotificationChannelRequestV1.md +docs/reference/CreateWebhookIntegrationRequest.md +docs/reference/CreateWebhookIntegrationRequestAllOfConnectionInfo.md +docs/reference/CreateWebhookNotificationChannelRequestV1.md +docs/reference/CreateZoneRequestV1.md +docs/reference/CreateZoneScopeRequestV1.md +docs/reference/CustomJobV1.md +docs/reference/CustomJobsEnablementV1.md +docs/reference/CustomMonitorEvent.md +docs/reference/CustomWebhookNotificationChannelOptionsV1.md +docs/reference/CustomWebhookNotificationChannelResponseV1.md +docs/reference/CvssScore.md +docs/reference/DateRange.md +docs/reference/DenyCve.md +docs/reference/DenyCveExtra.md +docs/reference/DenyPkg.md +docs/reference/DenyPkgExtra.md +docs/reference/DenyPkgExtraPackagesInner.md +docs/reference/Dependency.md +docs/reference/DisableJobsAndMetricsV1.md +docs/reference/DisableMetricV1.md +docs/reference/DriftPreventedAction.md +docs/reference/EmailNotificationChannelOptionsV1.md +docs/reference/EmailNotificationChannelResponseV1.md +docs/reference/EntityDefinition.md +docs/reference/EntityDefinitionDefinition.md +docs/reference/EntriesResponse.md +docs/reference/EntriesResponseDataInner.md +docs/reference/Entry.md +docs/reference/EntryPointModuleV1.md +docs/reference/EntryPointV1.md +docs/reference/EntryResponse.md +docs/reference/Error.md +docs/reference/Event.md +docs/reference/EventContent.md +docs/reference/EventContentType.md +docs/reference/EventsFeedPage.md +docs/reference/EventsForwarderApi.md +docs/reference/Exploit.md +docs/reference/Failure.md +docs/reference/Fileaccess.md +docs/reference/GchatNotificationChannelOptionsV1.md +docs/reference/GchatNotificationChannelResponseV1.md +docs/reference/GetAccessKeysPaginatedResponseV1.md +docs/reference/GetAmazonSqsIntegrationResponse.md +docs/reference/GetBundleResponse.md +docs/reference/GetChronicleIntegrationResponse.md +docs/reference/GetChronicleIntegrationResponseAllOfConnectionInfo.md +docs/reference/GetCustomJobsPaginatedResponseV1.md +docs/reference/GetElasticsearchIntegrationResponse.md +docs/reference/GetGooglePubSubIntegrationResponse.md +docs/reference/GetGoogleSccIntegrationResponse.md +docs/reference/GetInhibitionRulesPaginatedResponseV1.md +docs/reference/GetKafkaIntegrationResponse.md +docs/reference/GetKafkaIntegrationResponseAllOfConnectionInfo.md +docs/reference/GetMcmIntegrationResponse.md +docs/reference/GetMicrosoftSentinelIntegrationResponse.md +docs/reference/GetNotificationChannelsPaginatedResponseV1.md +docs/reference/GetPermissionsResponseV1.md +docs/reference/GetPolicyResponse.md +docs/reference/GetPricingPaginatedResponseV1.md +docs/reference/GetPricingProjectedPaginatedResponseV1.md +docs/reference/GetQradarIntegrationResponse.md +docs/reference/GetQueryRangeV1StepParameter.md +docs/reference/GetQueryV1401Response.md +docs/reference/GetRolesPaginatedResponseV1.md +docs/reference/GetServiceAccountsPaginatedResponseV1.md +docs/reference/GetSplunkIntegrationResponse.md +docs/reference/GetSyslogIntegrationResponse.md +docs/reference/GetTeamUsersPaginatedResponseV1.md +docs/reference/GetTeamsPaginatedResponseV1.md +docs/reference/GetUsersPaginatedResponseV1.md +docs/reference/GetWebhookIntegrationResponse.md +docs/reference/GlobalSsoSettingsRequestV1.md +docs/reference/GlobalSsoSettingsResponseV1.md +docs/reference/GooglePubSubCreateConnectionInfo.md +docs/reference/GooglePubSubCreateConnectionInfo1.md +docs/reference/GoogleSCCCreateConnectionInfo.md +docs/reference/GoogleSCCCreateConnectionInfo1.md +docs/reference/GroupMappingResponseV1.md +docs/reference/GroupMappingSettingsV1.md +docs/reference/GroupMappingsApi.md +docs/reference/GroupMappingsPaginatedResponseV1.md +docs/reference/GssapiConnectionInfoKafka.md +docs/reference/HostMetadata.md +docs/reference/HostName.md +docs/reference/HostNameContains.md +docs/reference/IBMMulticloudCloudCreateConnectionInfo.md +docs/reference/IBMMulticloudCloudCreateConnectionInfo1.md +docs/reference/IPFilteringApi.md +docs/reference/IbmEventNotificationsNotificationChannelOptionsV1.md +docs/reference/IbmEventNotificationsNotificationChannelResponseV1.md +docs/reference/Image.md +docs/reference/ImageConfigCreationDateWithAge.md +docs/reference/ImageConfigCreationDateWithAgeExtra.md +docs/reference/ImageConfigDefaultUserIsNot.md +docs/reference/ImageConfigDefaultUserIsNotExtra.md +docs/reference/ImageConfigDefaultUserIsRoot.md +docs/reference/ImageConfigDefaultUserList.md +docs/reference/ImageConfigDefaultUserListExtra.md +docs/reference/ImageConfigEnvVariableContains.md +docs/reference/ImageConfigEnvVariableContainsExtra.md +docs/reference/ImageConfigEnvVariableExists.md +docs/reference/ImageConfigEnvVariableExistsExtra.md +docs/reference/ImageConfigEnvVariableNotExists.md +docs/reference/ImageConfigFailure.md +docs/reference/ImageConfigInstructionIsPkgManager.md +docs/reference/ImageConfigInstructionNotRecommended.md +docs/reference/ImageConfigLabelExists.md +docs/reference/ImageConfigLabelExistsExtra.md +docs/reference/ImageConfigLabelNotContains.md +docs/reference/ImageConfigLabelNotContainsExtra.md +docs/reference/ImageConfigLabelNotExists.md +docs/reference/ImageConfigLabelNotExistsExtra.md +docs/reference/ImageConfigSensitiveInformationAndSecrets.md +docs/reference/ImageMetadata.md +docs/reference/ImageName.md +docs/reference/ImageNameContains.md +docs/reference/ImagePrefix.md +docs/reference/ImageSuffix.md +docs/reference/InhibitionRuleResponseV1.md +docs/reference/InhibitionRulesApi.md +docs/reference/IntegrationChannel.md +docs/reference/IntegrationChannelsResponse.md +docs/reference/IntegrationResponse.md +docs/reference/IntegrationResponseV1.md +docs/reference/IntegrationType.md +docs/reference/IntegrationTypesResponse.md +docs/reference/InvalidCertificate.md +docs/reference/InvalidRequest.md +docs/reference/InvalidRequest1.md +docs/reference/InventoryApi.md +docs/reference/InventoryPage.md +docs/reference/InventoryResource.md +docs/reference/InventoryResourceExtended.md +docs/reference/InventoryResourceResponse.md +docs/reference/InventoryZone.md +docs/reference/IpFilterResponseV1.md +docs/reference/IpFiltersPaginatedResponseV1.md +docs/reference/IpFiltersSettingsV1.md +docs/reference/IssueTypeFieldResponseV1.md +docs/reference/IssueTypeFieldResponseV1AllowedValuesInner.md +docs/reference/IssueTypeResponseV1.md +docs/reference/IssueTypesResponseV1.md +docs/reference/JiraIntegrationsApi.md +docs/reference/JobResponse.md +docs/reference/K8sAdmissionReviewContent.md +docs/reference/K8sAdmissionReviewContentAllOfScanResult.md +docs/reference/KafkaPlaintext.md +docs/reference/KafkaTlsEncrypted.md +docs/reference/KeyValueObject.md +docs/reference/Kubernetes.md +docs/reference/LabelMatcherV1.md +docs/reference/LabelValuesResponseV1.md +docs/reference/LabelsResponseV1.md +docs/reference/Layer.md +docs/reference/ListAuditEventsResponse.md +docs/reference/ListBundlesResponse.md +docs/reference/ListEventsResponse.md +docs/reference/ListIntegrationsResponse.md +docs/reference/ListJobAndDisabledMetricsV1.md +docs/reference/ListJobs.md +docs/reference/ListMonitorEventsResponse.md +docs/reference/ListPoliciesResponse.md +docs/reference/ListRiskAcceptedResponse.md +docs/reference/ListRiskAcceptedResponseAllOfData.md +docs/reference/ListSchedules.md +docs/reference/ListZonesResponseV1.md +docs/reference/ListZonesResponseV1AllOfData.md +docs/reference/MalwarePreventedAction.md +docs/reference/MetadataResponseV1.md +docs/reference/MetadataResponseV1DataValueInner.md +docs/reference/MetricErrorV1.md +docs/reference/MetricV1.md +docs/reference/MetricsCollectionApi.md +docs/reference/MicrosoftSentinelCreateConnectionInfo.md +docs/reference/MicrosoftSentinelUpdateConnectionInfo.md +docs/reference/MonitorEvent.md +docs/reference/MonitorEventsApi.md +docs/reference/MonitorEventsPage.md +docs/reference/MonitorScopeLabel.md +docs/reference/MsTeamsNotificationChannelOptionsV1.md +docs/reference/MsTeamsNotificationChannelResponseV1.md +docs/reference/NewRule.md +docs/reference/NewStage.md +docs/reference/NotificationChannel.md +docs/reference/NotificationChannelOptionsV1.md +docs/reference/NotificationChannelResponseV1.md +docs/reference/NotificationChannelTypeV1.md +docs/reference/NotificationChannelV1.md +docs/reference/NotificationChannelsApi.md +docs/reference/OffsetPaginatedResponse.md +docs/reference/OffsetPaginatedResponsePage.md +docs/reference/OpenIdBaseV1.md +docs/reference/OpenIdConfigResponseV1.md +docs/reference/OpenIdCreateRequestV1.md +docs/reference/OpenIdMetadataV1.md +docs/reference/OpenIdRequestBaseV1.md +docs/reference/OpenIdUpdateRequestV1.md +docs/reference/Operand.md +docs/reference/OpsgenieNotificationChannelOptionsV1.md +docs/reference/OpsgenieNotificationChannelResponseV1.md +docs/reference/Originator.md +docs/reference/Package.md +docs/reference/PackageName.md +docs/reference/PackageNameVersion.md +docs/reference/PackagePath.md +docs/reference/PackagePathVersion.md +docs/reference/PackageVersion.md +docs/reference/Page.md +docs/reference/PagerDutyNotificationChannelOptionsV1.md +docs/reference/PagerDutyNotificationChannelResponseV1.md +docs/reference/PaginatedIntegrationsResponseV1.md +docs/reference/PermissionV1.md +docs/reference/PermissionsApi.md +docs/reference/PipelineResult.md +docs/reference/PipelineResultsResponse.md +docs/reference/PkgVulnFailure.md +docs/reference/PlatformAuditApi.md +docs/reference/Policies.md +docs/reference/PoliciesPage.md +docs/reference/PoliciesSummaryEntry.md +docs/reference/PolicyEvaluation.md +docs/reference/PolicyEvaluationResult.md +docs/reference/PolicyOrigin.md +docs/reference/PolicySummary.md +docs/reference/PosturePolicySummary.md +docs/reference/Predicate.md +docs/reference/PredicatesInner.md +docs/reference/PricingProjectedResponseV1.md +docs/reference/PricingResponseV1.md +docs/reference/PricingType.md +docs/reference/PrivateConnectionInfoAmazonSqs.md +docs/reference/PrivateConnectionInfoChronicle.md +docs/reference/PrivateConnectionInfoChronicleV2.md +docs/reference/PrivateConnectionInfoElasticsearch.md +docs/reference/PrivateConnectionInfoGooglePubSub.md +docs/reference/PrivateConnectionInfoGoogleScc.md +docs/reference/PrivateConnectionInfoKafka.md +docs/reference/PrivateConnectionInfoMcm.md +docs/reference/PrivateConnectionInfoMicrosoftSentinel.md +docs/reference/PrivateConnectionInfoSplunk.md +docs/reference/PrivateConnectionInfoWebhook.md +docs/reference/ProcessKilledAction.md +docs/reference/Producer.md +docs/reference/Product.md +docs/reference/PrometheusAlertManagerNotificationChannelOptionsV1.md +docs/reference/PrometheusAlertManagerNotificationChannelResponseV1.md +docs/reference/PrometheusApi.md +docs/reference/PrometheusError.md +docs/reference/PromqlMatcher.md +docs/reference/QueryResponse.md +docs/reference/QueryResponseEntities.md +docs/reference/QueryResponseV1.md +docs/reference/QueryResponseV1Data.md +docs/reference/QueryResponseV1DataResult.md +docs/reference/QueryResponseV1DataResultAnyOfInner.md +docs/reference/QueryResponseV1DataResultAnyOfInner1.md +docs/reference/QueryResponseV1DataResultAnyOfInner2.md +docs/reference/QuerySummary.md +docs/reference/QuerySysqlPostRequest.md +docs/reference/QueryTime.md +docs/reference/RegistryResult.md +docs/reference/RegistryResultsResponse.md +docs/reference/ReportingApi.md +docs/reference/RequestBodyDisabledMetricsV1.md +docs/reference/ResponderType.md +docs/reference/ResponseAction.md +docs/reference/ResponseActionsApi.md +docs/reference/ResponseListDisabledMetricsAndErrorV1.md +docs/reference/ResponseListDisabledMetricsV1.md +docs/reference/RiskAcceptanceDefinition.md +docs/reference/RiskAcceptedResponse.md +docs/reference/RiskAcceptedResponseAllOfContext.md +docs/reference/RoleRequestV1.md +docs/reference/RoleResponseV1.md +docs/reference/RolesApi.md +docs/reference/Rule.md +docs/reference/RuleFailuresInner.md +docs/reference/RulesResponseV1.md +docs/reference/RulesResponseV1Data.md +docs/reference/RulesResponseV1DataGroupsInner.md +docs/reference/RulesResponseV1DataGroupsInnerRulesInner.md +docs/reference/RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.md +docs/reference/RuntimeResult.md +docs/reference/RuntimeResultsResponse.md +docs/reference/SBOMApi.md +docs/reference/SSOSettingsApi.md +docs/reference/SamlBaseV1.md +docs/reference/SamlCreateRequestV1.md +docs/reference/SamlResponseV1.md +docs/reference/SamlUpdateRequestV1.md +docs/reference/SaveCaptureStorageConfigurationRequestV1.md +docs/reference/SaveTeamUserRequestV1.md +docs/reference/SbomComponent.md +docs/reference/SbomResultResponse.md +docs/reference/ScanResultResponse.md +docs/reference/ScanResultResponseMetadata.md +docs/reference/ScheduleResponse.md +docs/reference/ScopeTypeV1.md +docs/reference/ScopeV1.md +docs/reference/SecureEventsApi.md +docs/reference/SequenceInner.md +docs/reference/SeriesResponseV1.md +docs/reference/ServiceAccountResponseV1.md +docs/reference/ServiceAccountWithKeyResponseV1.md +docs/reference/ServiceAccountsApi.md +docs/reference/ServiceAccountsNotificationSettingsApi.md +docs/reference/ServiceAccountsNotificationSettingsResponseV1.md +docs/reference/ServiceAccountsNotificationSettinsBase.md +docs/reference/Services.md +docs/reference/ServicesResponse.md +docs/reference/SlackBaseNotificationChannelOptionsV1.md +docs/reference/SlackCreateNotificationChannelOptionsV1.md +docs/reference/SlackNotificationChannelResponseV1.md +docs/reference/SlackReadNotificationChannelOptionsV1.md +docs/reference/SlackUpdateNotificationChannelOptionsV1.md +docs/reference/SnsNotificationChannelOptionsV1.md +docs/reference/SnsNotificationChannelResponseV1.md +docs/reference/Source.md +docs/reference/SourceDetails.md +docs/reference/SplunkCreateConnectionInfo.md +docs/reference/SplunkUpdateConnectionInfo.md +docs/reference/SsoSettingsBaseSchemaV1.md +docs/reference/SsoSettingsCreateRequestBaseV1.md +docs/reference/SsoSettingsResponseBaseV1.md +docs/reference/SsoSettingsResponseV1.md +docs/reference/SsoSettingsUpdateRequestBaseV1.md +docs/reference/SsoTypeV1.md +docs/reference/Stage.md +docs/reference/StageConfiguration.md +docs/reference/StatefulDetectionsContent.md +docs/reference/StatefulDetectionsContentAllOfFields.md +docs/reference/StatsInner.md +docs/reference/SubmitActionExecutionRequest.md +docs/reference/SupportedFilter.md +docs/reference/SupportedFilterType.md +docs/reference/SupportedFiltersResponse.md +docs/reference/SysQLApi.md +docs/reference/TeamEmailNotificationChannelOptionsV1.md +docs/reference/TeamEmailNotificationChannelResponseV1.md +docs/reference/TeamMapV1.md +docs/reference/TeamResponseV1.md +docs/reference/TeamRoleV1.md +docs/reference/TeamUserResponseV1.md +docs/reference/TeamsApi.md +docs/reference/TimeFrame.md +docs/reference/Types.md +docs/reference/UiSettingsV1.md +docs/reference/UnitPricingV1.md +docs/reference/UpdateAccessKeyRequestV1.md +docs/reference/UpdateAmazonSqsIntegrationRequest.md +docs/reference/UpdateChronicleIntegrationConnInfo.md +docs/reference/UpdateChronicleIntegrationConnInfoV2.md +docs/reference/UpdateChronicleIntegrationRequest.md +docs/reference/UpdateCustomWebhookNotificationChannelRequestV1.md +docs/reference/UpdateElasticsearchIntegrationRequest.md +docs/reference/UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.md +docs/reference/UpdateEmailNotificationChannelRequestV1.md +docs/reference/UpdateGchatNotificationChannelRequestV1.md +docs/reference/UpdateGooglePubSubIntegrationRequest.md +docs/reference/UpdateGoogleSccIntegrationRequest.md +docs/reference/UpdateGroupMappingRequestV1.md +docs/reference/UpdateIbmEventNotificationsNotificationChannelRequestV1.md +docs/reference/UpdateInhibitionRuleRequestV1.md +docs/reference/UpdateIntegrationRequest.md +docs/reference/UpdateIntegrationRequestV1.md +docs/reference/UpdateIpFilterV1.md +docs/reference/UpdateIssueTypeRequestV1.md +docs/reference/UpdateKafkaIntegrationRequest.md +docs/reference/UpdateKafkaIntegrationRequestAllOfConnectionInfo.md +docs/reference/UpdateMcmIntegrationRequest.md +docs/reference/UpdateMicrosoftSentinelIntegrationRequest.md +docs/reference/UpdateMsTeamsNotificationChannelRequestV1.md +docs/reference/UpdateNotificationChannelRequestV1.md +docs/reference/UpdateOpsgenieNotificationChannelRequestV1.md +docs/reference/UpdatePagerDutyNotificationChannelRequestV1.md +docs/reference/UpdatePricingRequestV1.md +docs/reference/UpdatePrometheusAlertManagerNotificationChannelRequestV1.md +docs/reference/UpdateQradarIntegrationRequest.md +docs/reference/UpdateRiskAccepted.md +docs/reference/UpdateServiceAccountsNotificationSettingsRequestV1.md +docs/reference/UpdateSlackNotificationChannelRequestV1.md +docs/reference/UpdateSnsNotificationChannelRequestV1.md +docs/reference/UpdateSplunkIntegrationRequest.md +docs/reference/UpdateSsoSettingsRequestV1.md +docs/reference/UpdateSyslogIntegrationRequest.md +docs/reference/UpdateTeamEmailNotificationChannelRequestV1.md +docs/reference/UpdateTeamRequestV1.md +docs/reference/UpdateUserDeactivationConfigurationRequestV1.md +docs/reference/UpdateUserRequestV1.md +docs/reference/UpdateVictorOpsNotificationChannelRequestV1.md +docs/reference/UpdateWebhookIntegrationRequest.md +docs/reference/UpdateWebhookIntegrationRequestAllOfConnectionInfo.md +docs/reference/UpdateWebhookNotificationChannelRequestV1.md +docs/reference/User.md +docs/reference/UserDeactivationApi.md +docs/reference/UserDeactivationConfigurationResponseV1.md +docs/reference/UserResponseV1.md +docs/reference/UsersApi.md +docs/reference/VictorOpsNotificationChannelOptionsV1.md +docs/reference/VictorOpsNotificationChannelResponseV1.md +docs/reference/VulnAge.md +docs/reference/VulnAgeExtra.md +docs/reference/VulnCvss.md +docs/reference/VulnCvssEquals.md +docs/reference/VulnCvssEqualsExtra.md +docs/reference/VulnCvssExtra.md +docs/reference/VulnDisclosureRange.md +docs/reference/VulnDisclosureRangeExtra.md +docs/reference/VulnEpssPercentileGte.md +docs/reference/VulnEpssPercentileGteExtra.md +docs/reference/VulnEpssScoreGte.md +docs/reference/VulnEpssScoreGteExtra.md +docs/reference/VulnExploitable.md +docs/reference/VulnExploitableNoAdmin.md +docs/reference/VulnExploitableNoUser.md +docs/reference/VulnExploitableViaNetwork.md +docs/reference/VulnExploitableWithAge.md +docs/reference/VulnExploitableWithAgeExtra.md +docs/reference/VulnIsFixable.md +docs/reference/VulnIsFixableWithAge.md +docs/reference/VulnIsFixableWithAgeExtra.md +docs/reference/VulnIsInUse.md +docs/reference/VulnPkgType.md +docs/reference/VulnPkgTypeExtra.md +docs/reference/VulnSeverity.md +docs/reference/VulnSeverityEquals.md +docs/reference/VulnSeverityExtra.md +docs/reference/VulnTotalBySeverity.md +docs/reference/Vulnerability.md +docs/reference/VulnerabilityManagementApi.md +docs/reference/VulnerabilityManagementPage.md +docs/reference/VulnerabilitySummary.md +docs/reference/WastedWorkloadDataRequest.md +docs/reference/WastedWorkloadSpendDataResponse.md +docs/reference/WastedWorkloadSpendDataResponseGroupByDataInner.md +docs/reference/WastedWorkloadSpendDataResponseTotal.md +docs/reference/WebhookNotificationChannelOptionsV1.md +docs/reference/WebhookNotificationChannelResponseV1.md +docs/reference/WorkloadCostTrendsDataRequest.md +docs/reference/WorkloadCostTrendsDataResponse.md +docs/reference/WorkloadCostTrendsDataResponseGroupByDataInner.md +docs/reference/WorkloadCostTrendsDataResponseTotal.md +docs/reference/WorkloadMlRuntimeDetectionContent.md +docs/reference/WorkloadRightsizingDataRequest.md +docs/reference/WorkloadRightsizingDataResponse.md +docs/reference/WorkloadRightsizingDataResponseGroupByDataInner.md +docs/reference/WorkloadRuntimeDetectionContent.md +docs/reference/WorkloadRuntimeDetectionContentAllOfFields.md +docs/reference/Zone.md +docs/reference/ZoneResponseV1.md +docs/reference/ZoneScope.md +docs/reference/ZonesApi.md +sysdig_client/__init__.py +sysdig_client/api/__init__.py +sysdig_client/api/access_keys_api.py +sysdig_client/api/activity_audit_api.py +sysdig_client/api/capture_storage_api.py +sysdig_client/api/certificates_api.py +sysdig_client/api/cost_advisor_custom_pricing_api.py +sysdig_client/api/cost_advisor_data_api.py +sysdig_client/api/events_forwarder_api.py +sysdig_client/api/group_mappings_api.py +sysdig_client/api/inhibition_rules_api.py +sysdig_client/api/inventory_api.py +sysdig_client/api/ip_filtering_api.py +sysdig_client/api/jira_integrations_api.py +sysdig_client/api/metrics_collection_api.py +sysdig_client/api/monitor_events_api.py +sysdig_client/api/notification_channels_api.py +sysdig_client/api/permissions_api.py +sysdig_client/api/platform_audit_api.py +sysdig_client/api/prometheus_api.py +sysdig_client/api/reporting_api.py +sysdig_client/api/response_actions_api.py +sysdig_client/api/roles_api.py +sysdig_client/api/sbom_api.py +sysdig_client/api/secure_events_api.py +sysdig_client/api/service_accounts_api.py +sysdig_client/api/service_accounts_notification_settings_api.py +sysdig_client/api/sso_settings_api.py +sysdig_client/api/sys_ql_api.py +sysdig_client/api/teams_api.py +sysdig_client/api/user_deactivation_api.py +sysdig_client/api/users_api.py +sysdig_client/api/vulnerability_management_api.py +sysdig_client/api/zones_api.py +sysdig_client/api_client.py +sysdig_client/api_response.py +sysdig_client/configuration.py +sysdig_client/exceptions.py +sysdig_client/models/__init__.py +sysdig_client/models/access_key_response_v1.py +sysdig_client/models/action.py +sysdig_client/models/action_execution.py +sysdig_client/models/action_execution_parameter_value.py +sysdig_client/models/action_execution_status.py +sysdig_client/models/action_executions.py +sysdig_client/models/action_outputs_metadata.py +sysdig_client/models/action_parameter_metadata.py +sysdig_client/models/action_type.py +sysdig_client/models/actions.py +sysdig_client/models/additional_team_permissions_v1.py +sysdig_client/models/agentless_ml_runtime_detection_content.py +sysdig_client/models/agentless_ml_runtime_detection_content_all_of_fields.py +sysdig_client/models/agentless_runtime_detection_content.py +sysdig_client/models/agentless_runtime_detection_content_all_of_fields.py +sysdig_client/models/alert_monitor_event.py +sysdig_client/models/alerts_response_v1.py +sysdig_client/models/alerts_response_v1_data.py +sysdig_client/models/alerts_response_v1_data_alerts_inner.py +sysdig_client/models/all_sso_settings_response_v1.py +sysdig_client/models/amazon_sqs_create_connection_info.py +sysdig_client/models/amazon_sqs_update_connection_info.py +sysdig_client/models/audit_event.py +sysdig_client/models/audit_page.py +sysdig_client/models/audit_supported_filter.py +sysdig_client/models/audit_supported_filters_response.py +sysdig_client/models/audit_trail_content.py +sysdig_client/models/authenticated_connection_info_elasticsearch.py +sysdig_client/models/authenticated_connection_info_kafka.py +sysdig_client/models/authenticated_connection_info_webhook.py +sysdig_client/models/base_action.py +sysdig_client/models/base_connection_info_amazon_sqs.py +sysdig_client/models/base_connection_info_chronicle.py +sysdig_client/models/base_connection_info_chronicle_v2.py +sysdig_client/models/base_connection_info_elasticsearch.py +sysdig_client/models/base_connection_info_google_pub_sub.py +sysdig_client/models/base_connection_info_google_scc.py +sysdig_client/models/base_connection_info_kafka.py +sysdig_client/models/base_connection_info_mcm.py +sysdig_client/models/base_connection_info_microsoft_sentinel.py +sysdig_client/models/base_connection_info_qradar.py +sysdig_client/models/base_connection_info_splunk.py +sysdig_client/models/base_connection_info_syslog.py +sysdig_client/models/base_connection_info_webhook.py +sysdig_client/models/base_content.py +sysdig_client/models/base_image.py +sysdig_client/models/base_integration_payload.py +sysdig_client/models/base_monitor_event.py +sysdig_client/models/base_risk_accepted_payload.py +sysdig_client/models/base_risk_accepted_response_payload.py +sysdig_client/models/bom_metadata.py +sysdig_client/models/bucket_configuration_v1.py +sysdig_client/models/bundle.py +sysdig_client/models/bundle_ref.py +sysdig_client/models/bundle_rule.py +sysdig_client/models/bundle_rule_predicates_inner.py +sysdig_client/models/capture_action.py +sysdig_client/models/capture_storage_configuration_response_v1.py +sysdig_client/models/category.py +sysdig_client/models/certificate.py +sysdig_client/models/certificate_validity.py +sysdig_client/models/certificates_response.py +sysdig_client/models/checkbox_field_value_v1.py +sysdig_client/models/chronicle_create_connection_info.py +sysdig_client/models/chronicle_update_connection_info.py +sysdig_client/models/cisa_kev_available_since.py +sysdig_client/models/cisa_kev_known_ransomware_campaign_use.py +sysdig_client/models/cisa_kev_publish_date.py +sysdig_client/models/cisa_kev_publish_date_extra.py +sysdig_client/models/command.py +sysdig_client/models/compositions_inner.py +sysdig_client/models/connection.py +sysdig_client/models/container_info.py +sysdig_client/models/container_killed_action.py +sysdig_client/models/container_paused_action.py +sysdig_client/models/container_stopped_action.py +sysdig_client/models/context.py +sysdig_client/models/create_access_key_request_v1.py +sysdig_client/models/create_amazon_sqs_integration_request.py +sysdig_client/models/create_bundle_request.py +sysdig_client/models/create_chronicle_integration_conn_info.py +sysdig_client/models/create_chronicle_integration_conn_info_v2.py +sysdig_client/models/create_chronicle_integration_request.py +sysdig_client/models/create_custom_webhook_notification_channel_request_v1.py +sysdig_client/models/create_elasticsearch_integration_request.py +sysdig_client/models/create_elasticsearch_integration_request_all_of_connection_info.py +sysdig_client/models/create_email_notification_channel_request_v1.py +sysdig_client/models/create_gchat_notification_channel_request_v1.py +sysdig_client/models/create_global_service_account_request_v1.py +sysdig_client/models/create_google_pub_sub_integration_request.py +sysdig_client/models/create_google_scc_integration_request.py +sysdig_client/models/create_group_mapping_request_v1.py +sysdig_client/models/create_ibm_event_notifications_notification_channel_request_v1.py +sysdig_client/models/create_inhibition_rule_request_v1.py +sysdig_client/models/create_integration_request.py +sysdig_client/models/create_integration_request_v1.py +sysdig_client/models/create_ip_filter_v1.py +sysdig_client/models/create_issue_type_request_v1.py +sysdig_client/models/create_kafka_integration_request.py +sysdig_client/models/create_kafka_integration_request_all_of_connection_info.py +sysdig_client/models/create_mcm_integration_request.py +sysdig_client/models/create_microsoft_sentinel_integration_request.py +sysdig_client/models/create_ms_teams_notification_channel_request_v1.py +sysdig_client/models/create_notification_channel_request_v1.py +sysdig_client/models/create_opsgenie_notification_channel_request_v1.py +sysdig_client/models/create_pager_duty_notification_channel_request_v1.py +sysdig_client/models/create_policy_request.py +sysdig_client/models/create_pricing_request_v1.py +sysdig_client/models/create_prometheus_alert_manager_notification_channel_request_v1.py +sysdig_client/models/create_qradar_integration_request.py +sysdig_client/models/create_risk_accepted_request.py +sysdig_client/models/create_risk_accepted_request_all_of_context.py +sysdig_client/models/create_service_account_request_v1.py +sysdig_client/models/create_service_accounts_notification_settings_request_v1.py +sysdig_client/models/create_slack_notification_channel_request_v1.py +sysdig_client/models/create_sns_notification_channel_request_v1.py +sysdig_client/models/create_splunk_integration_request.py +sysdig_client/models/create_sso_settings_request_v1.py +sysdig_client/models/create_syslog_integration_request.py +sysdig_client/models/create_team_email_notification_channel_request_v1.py +sysdig_client/models/create_team_request_v1.py +sysdig_client/models/create_team_service_account_request_v1.py +sysdig_client/models/create_user_request_v1.py +sysdig_client/models/create_victor_ops_notification_channel_request_v1.py +sysdig_client/models/create_webhook_integration_request.py +sysdig_client/models/create_webhook_integration_request_all_of_connection_info.py +sysdig_client/models/create_webhook_notification_channel_request_v1.py +sysdig_client/models/create_zone_request_v1.py +sysdig_client/models/create_zone_scope_request_v1.py +sysdig_client/models/custom_job_v1.py +sysdig_client/models/custom_jobs_enablement_v1.py +sysdig_client/models/custom_monitor_event.py +sysdig_client/models/custom_webhook_notification_channel_options_v1.py +sysdig_client/models/custom_webhook_notification_channel_response_v1.py +sysdig_client/models/cvss_score.py +sysdig_client/models/date_range.py +sysdig_client/models/deny_cve.py +sysdig_client/models/deny_cve_extra.py +sysdig_client/models/deny_pkg.py +sysdig_client/models/deny_pkg_extra.py +sysdig_client/models/deny_pkg_extra_packages_inner.py +sysdig_client/models/dependency.py +sysdig_client/models/disable_jobs_and_metrics_v1.py +sysdig_client/models/disable_metric_v1.py +sysdig_client/models/drift_prevented_action.py +sysdig_client/models/email_notification_channel_options_v1.py +sysdig_client/models/email_notification_channel_response_v1.py +sysdig_client/models/entity_definition.py +sysdig_client/models/entity_definition_definition.py +sysdig_client/models/entries_response.py +sysdig_client/models/entries_response_data_inner.py +sysdig_client/models/entry.py +sysdig_client/models/entry_point_module_v1.py +sysdig_client/models/entry_point_v1.py +sysdig_client/models/entry_response.py +sysdig_client/models/error.py +sysdig_client/models/event.py +sysdig_client/models/event_content.py +sysdig_client/models/event_content_type.py +sysdig_client/models/events_feed_page.py +sysdig_client/models/exploit.py +sysdig_client/models/failure.py +sysdig_client/models/fileaccess.py +sysdig_client/models/gchat_notification_channel_options_v1.py +sysdig_client/models/gchat_notification_channel_response_v1.py +sysdig_client/models/get_access_keys_paginated_response_v1.py +sysdig_client/models/get_amazon_sqs_integration_response.py +sysdig_client/models/get_bundle_response.py +sysdig_client/models/get_chronicle_integration_response.py +sysdig_client/models/get_chronicle_integration_response_all_of_connection_info.py +sysdig_client/models/get_custom_jobs_paginated_response_v1.py +sysdig_client/models/get_elasticsearch_integration_response.py +sysdig_client/models/get_google_pub_sub_integration_response.py +sysdig_client/models/get_google_scc_integration_response.py +sysdig_client/models/get_inhibition_rules_paginated_response_v1.py +sysdig_client/models/get_kafka_integration_response.py +sysdig_client/models/get_kafka_integration_response_all_of_connection_info.py +sysdig_client/models/get_mcm_integration_response.py +sysdig_client/models/get_microsoft_sentinel_integration_response.py +sysdig_client/models/get_notification_channels_paginated_response_v1.py +sysdig_client/models/get_permissions_response_v1.py +sysdig_client/models/get_policy_response.py +sysdig_client/models/get_pricing_paginated_response_v1.py +sysdig_client/models/get_pricing_projected_paginated_response_v1.py +sysdig_client/models/get_qradar_integration_response.py +sysdig_client/models/get_query_range_v1_step_parameter.py +sysdig_client/models/get_query_v1401_response.py +sysdig_client/models/get_roles_paginated_response_v1.py +sysdig_client/models/get_service_accounts_paginated_response_v1.py +sysdig_client/models/get_splunk_integration_response.py +sysdig_client/models/get_syslog_integration_response.py +sysdig_client/models/get_team_users_paginated_response_v1.py +sysdig_client/models/get_teams_paginated_response_v1.py +sysdig_client/models/get_users_paginated_response_v1.py +sysdig_client/models/get_webhook_integration_response.py +sysdig_client/models/global_sso_settings_request_v1.py +sysdig_client/models/global_sso_settings_response_v1.py +sysdig_client/models/google_pub_sub_create_connection_info.py +sysdig_client/models/google_pub_sub_create_connection_info1.py +sysdig_client/models/google_scc_create_connection_info.py +sysdig_client/models/google_scc_create_connection_info1.py +sysdig_client/models/group_mapping_response_v1.py +sysdig_client/models/group_mapping_settings_v1.py +sysdig_client/models/group_mappings_paginated_response_v1.py +sysdig_client/models/gssapi_connection_info_kafka.py +sysdig_client/models/host_metadata.py +sysdig_client/models/host_name.py +sysdig_client/models/host_name_contains.py +sysdig_client/models/ibm_event_notifications_notification_channel_options_v1.py +sysdig_client/models/ibm_event_notifications_notification_channel_response_v1.py +sysdig_client/models/ibm_multicloud_cloud_create_connection_info.py +sysdig_client/models/ibm_multicloud_cloud_create_connection_info1.py +sysdig_client/models/image.py +sysdig_client/models/image_config_creation_date_with_age.py +sysdig_client/models/image_config_creation_date_with_age_extra.py +sysdig_client/models/image_config_default_user_is_not.py +sysdig_client/models/image_config_default_user_is_not_extra.py +sysdig_client/models/image_config_default_user_is_root.py +sysdig_client/models/image_config_default_user_list.py +sysdig_client/models/image_config_default_user_list_extra.py +sysdig_client/models/image_config_env_variable_contains.py +sysdig_client/models/image_config_env_variable_contains_extra.py +sysdig_client/models/image_config_env_variable_exists.py +sysdig_client/models/image_config_env_variable_exists_extra.py +sysdig_client/models/image_config_env_variable_not_exists.py +sysdig_client/models/image_config_failure.py +sysdig_client/models/image_config_instruction_is_pkg_manager.py +sysdig_client/models/image_config_instruction_not_recommended.py +sysdig_client/models/image_config_label_exists.py +sysdig_client/models/image_config_label_exists_extra.py +sysdig_client/models/image_config_label_not_contains.py +sysdig_client/models/image_config_label_not_contains_extra.py +sysdig_client/models/image_config_label_not_exists.py +sysdig_client/models/image_config_label_not_exists_extra.py +sysdig_client/models/image_config_sensitive_information_and_secrets.py +sysdig_client/models/image_metadata.py +sysdig_client/models/image_name.py +sysdig_client/models/image_name_contains.py +sysdig_client/models/image_prefix.py +sysdig_client/models/image_suffix.py +sysdig_client/models/inhibition_rule_response_v1.py +sysdig_client/models/integration_channel.py +sysdig_client/models/integration_channels_response.py +sysdig_client/models/integration_response.py +sysdig_client/models/integration_response_v1.py +sysdig_client/models/integration_type.py +sysdig_client/models/integration_types_response.py +sysdig_client/models/invalid_certificate.py +sysdig_client/models/invalid_request.py +sysdig_client/models/invalid_request1.py +sysdig_client/models/inventory_page.py +sysdig_client/models/inventory_resource.py +sysdig_client/models/inventory_resource_extended.py +sysdig_client/models/inventory_resource_response.py +sysdig_client/models/inventory_zone.py +sysdig_client/models/ip_filter_response_v1.py +sysdig_client/models/ip_filters_paginated_response_v1.py +sysdig_client/models/ip_filters_settings_v1.py +sysdig_client/models/issue_type_field_response_v1.py +sysdig_client/models/issue_type_field_response_v1_allowed_values_inner.py +sysdig_client/models/issue_type_response_v1.py +sysdig_client/models/issue_types_response_v1.py +sysdig_client/models/job_response.py +sysdig_client/models/k8s_admission_review_content.py +sysdig_client/models/k8s_admission_review_content_all_of_scan_result.py +sysdig_client/models/kafka_plaintext.py +sysdig_client/models/kafka_tls_encrypted.py +sysdig_client/models/key_value_object.py +sysdig_client/models/kubernetes.py +sysdig_client/models/label_matcher_v1.py +sysdig_client/models/label_values_response_v1.py +sysdig_client/models/labels_response_v1.py +sysdig_client/models/layer.py +sysdig_client/models/list_audit_events_response.py +sysdig_client/models/list_bundles_response.py +sysdig_client/models/list_events_response.py +sysdig_client/models/list_integrations_response.py +sysdig_client/models/list_job_and_disabled_metrics_v1.py +sysdig_client/models/list_jobs.py +sysdig_client/models/list_monitor_events_response.py +sysdig_client/models/list_policies_response.py +sysdig_client/models/list_risk_accepted_response.py +sysdig_client/models/list_risk_accepted_response_all_of_data.py +sysdig_client/models/list_schedules.py +sysdig_client/models/list_zones_response_v1.py +sysdig_client/models/list_zones_response_v1_all_of_data.py +sysdig_client/models/malware_prevented_action.py +sysdig_client/models/metadata_response_v1.py +sysdig_client/models/metadata_response_v1_data_value_inner.py +sysdig_client/models/metric_error_v1.py +sysdig_client/models/metric_v1.py +sysdig_client/models/microsoft_sentinel_create_connection_info.py +sysdig_client/models/microsoft_sentinel_update_connection_info.py +sysdig_client/models/monitor_event.py +sysdig_client/models/monitor_events_page.py +sysdig_client/models/monitor_scope_label.py +sysdig_client/models/ms_teams_notification_channel_options_v1.py +sysdig_client/models/ms_teams_notification_channel_response_v1.py +sysdig_client/models/new_rule.py +sysdig_client/models/new_stage.py +sysdig_client/models/notification_channel.py +sysdig_client/models/notification_channel_options_v1.py +sysdig_client/models/notification_channel_response_v1.py +sysdig_client/models/notification_channel_type_v1.py +sysdig_client/models/notification_channel_v1.py +sysdig_client/models/offset_paginated_response.py +sysdig_client/models/offset_paginated_response_page.py +sysdig_client/models/open_id_base_v1.py +sysdig_client/models/open_id_config_response_v1.py +sysdig_client/models/open_id_create_request_v1.py +sysdig_client/models/open_id_metadata_v1.py +sysdig_client/models/open_id_request_base_v1.py +sysdig_client/models/open_id_update_request_v1.py +sysdig_client/models/operand.py +sysdig_client/models/opsgenie_notification_channel_options_v1.py +sysdig_client/models/opsgenie_notification_channel_response_v1.py +sysdig_client/models/originator.py +sysdig_client/models/package.py +sysdig_client/models/package_name.py +sysdig_client/models/package_name_version.py +sysdig_client/models/package_path.py +sysdig_client/models/package_path_version.py +sysdig_client/models/package_version.py +sysdig_client/models/page.py +sysdig_client/models/pager_duty_notification_channel_options_v1.py +sysdig_client/models/pager_duty_notification_channel_response_v1.py +sysdig_client/models/paginated_integrations_response_v1.py +sysdig_client/models/permission_v1.py +sysdig_client/models/pipeline_result.py +sysdig_client/models/pipeline_results_response.py +sysdig_client/models/pkg_vuln_failure.py +sysdig_client/models/policies.py +sysdig_client/models/policies_page.py +sysdig_client/models/policies_summary_entry.py +sysdig_client/models/policy_evaluation.py +sysdig_client/models/policy_evaluation_result.py +sysdig_client/models/policy_origin.py +sysdig_client/models/policy_summary.py +sysdig_client/models/posture_policy_summary.py +sysdig_client/models/predicate.py +sysdig_client/models/predicates_inner.py +sysdig_client/models/pricing_projected_response_v1.py +sysdig_client/models/pricing_response_v1.py +sysdig_client/models/pricing_type.py +sysdig_client/models/private_connection_info_amazon_sqs.py +sysdig_client/models/private_connection_info_chronicle.py +sysdig_client/models/private_connection_info_chronicle_v2.py +sysdig_client/models/private_connection_info_elasticsearch.py +sysdig_client/models/private_connection_info_google_pub_sub.py +sysdig_client/models/private_connection_info_google_scc.py +sysdig_client/models/private_connection_info_kafka.py +sysdig_client/models/private_connection_info_mcm.py +sysdig_client/models/private_connection_info_microsoft_sentinel.py +sysdig_client/models/private_connection_info_splunk.py +sysdig_client/models/private_connection_info_webhook.py +sysdig_client/models/process_killed_action.py +sysdig_client/models/producer.py +sysdig_client/models/product.py +sysdig_client/models/prometheus_alert_manager_notification_channel_options_v1.py +sysdig_client/models/prometheus_alert_manager_notification_channel_response_v1.py +sysdig_client/models/prometheus_error.py +sysdig_client/models/promql_matcher.py +sysdig_client/models/query_response.py +sysdig_client/models/query_response_entities.py +sysdig_client/models/query_response_v1.py +sysdig_client/models/query_response_v1_data.py +sysdig_client/models/query_response_v1_data_result.py +sysdig_client/models/query_response_v1_data_result_any_of_inner.py +sysdig_client/models/query_response_v1_data_result_any_of_inner1.py +sysdig_client/models/query_response_v1_data_result_any_of_inner2.py +sysdig_client/models/query_summary.py +sysdig_client/models/query_sysql_post_request.py +sysdig_client/models/query_time.py +sysdig_client/models/registry_result.py +sysdig_client/models/registry_results_response.py +sysdig_client/models/request_body_disabled_metrics_v1.py +sysdig_client/models/responder_type.py +sysdig_client/models/response_action.py +sysdig_client/models/response_list_disabled_metrics_and_error_v1.py +sysdig_client/models/response_list_disabled_metrics_v1.py +sysdig_client/models/risk_acceptance_definition.py +sysdig_client/models/risk_accepted_response.py +sysdig_client/models/risk_accepted_response_all_of_context.py +sysdig_client/models/role_request_v1.py +sysdig_client/models/role_response_v1.py +sysdig_client/models/rule.py +sysdig_client/models/rule_failures_inner.py +sysdig_client/models/rules_response_v1.py +sysdig_client/models/rules_response_v1_data.py +sysdig_client/models/rules_response_v1_data_groups_inner.py +sysdig_client/models/rules_response_v1_data_groups_inner_rules_inner.py +sysdig_client/models/rules_response_v1_data_groups_inner_rules_inner_alerts_inner.py +sysdig_client/models/runtime_result.py +sysdig_client/models/runtime_results_response.py +sysdig_client/models/saml_base_v1.py +sysdig_client/models/saml_create_request_v1.py +sysdig_client/models/saml_response_v1.py +sysdig_client/models/saml_update_request_v1.py +sysdig_client/models/save_capture_storage_configuration_request_v1.py +sysdig_client/models/save_team_user_request_v1.py +sysdig_client/models/sbom_component.py +sysdig_client/models/sbom_result_response.py +sysdig_client/models/scan_result_response.py +sysdig_client/models/scan_result_response_metadata.py +sysdig_client/models/schedule_response.py +sysdig_client/models/scope_type_v1.py +sysdig_client/models/scope_v1.py +sysdig_client/models/sequence_inner.py +sysdig_client/models/series_response_v1.py +sysdig_client/models/service_account_response_v1.py +sysdig_client/models/service_account_with_key_response_v1.py +sysdig_client/models/service_accounts_notification_settings_response_v1.py +sysdig_client/models/service_accounts_notification_settins_base.py +sysdig_client/models/services.py +sysdig_client/models/services_response.py +sysdig_client/models/slack_base_notification_channel_options_v1.py +sysdig_client/models/slack_create_notification_channel_options_v1.py +sysdig_client/models/slack_notification_channel_response_v1.py +sysdig_client/models/slack_read_notification_channel_options_v1.py +sysdig_client/models/slack_update_notification_channel_options_v1.py +sysdig_client/models/sns_notification_channel_options_v1.py +sysdig_client/models/sns_notification_channel_response_v1.py +sysdig_client/models/source.py +sysdig_client/models/source_details.py +sysdig_client/models/splunk_create_connection_info.py +sysdig_client/models/splunk_update_connection_info.py +sysdig_client/models/sso_settings_base_schema_v1.py +sysdig_client/models/sso_settings_create_request_base_v1.py +sysdig_client/models/sso_settings_response_base_v1.py +sysdig_client/models/sso_settings_response_v1.py +sysdig_client/models/sso_settings_update_request_base_v1.py +sysdig_client/models/sso_type_v1.py +sysdig_client/models/stage.py +sysdig_client/models/stage_configuration.py +sysdig_client/models/stateful_detections_content.py +sysdig_client/models/stateful_detections_content_all_of_fields.py +sysdig_client/models/stats_inner.py +sysdig_client/models/submit_action_execution_request.py +sysdig_client/models/supported_filter.py +sysdig_client/models/supported_filter_type.py +sysdig_client/models/supported_filters_response.py +sysdig_client/models/team_email_notification_channel_options_v1.py +sysdig_client/models/team_email_notification_channel_response_v1.py +sysdig_client/models/team_map_v1.py +sysdig_client/models/team_response_v1.py +sysdig_client/models/team_role_v1.py +sysdig_client/models/team_user_response_v1.py +sysdig_client/models/time_frame.py +sysdig_client/models/types.py +sysdig_client/models/ui_settings_v1.py +sysdig_client/models/unit_pricing_v1.py +sysdig_client/models/update_access_key_request_v1.py +sysdig_client/models/update_amazon_sqs_integration_request.py +sysdig_client/models/update_chronicle_integration_conn_info.py +sysdig_client/models/update_chronicle_integration_conn_info_v2.py +sysdig_client/models/update_chronicle_integration_request.py +sysdig_client/models/update_custom_webhook_notification_channel_request_v1.py +sysdig_client/models/update_elasticsearch_integration_request.py +sysdig_client/models/update_elasticsearch_integration_request_all_of_connection_info.py +sysdig_client/models/update_email_notification_channel_request_v1.py +sysdig_client/models/update_gchat_notification_channel_request_v1.py +sysdig_client/models/update_google_pub_sub_integration_request.py +sysdig_client/models/update_google_scc_integration_request.py +sysdig_client/models/update_group_mapping_request_v1.py +sysdig_client/models/update_ibm_event_notifications_notification_channel_request_v1.py +sysdig_client/models/update_inhibition_rule_request_v1.py +sysdig_client/models/update_integration_request.py +sysdig_client/models/update_integration_request_v1.py +sysdig_client/models/update_ip_filter_v1.py +sysdig_client/models/update_issue_type_request_v1.py +sysdig_client/models/update_kafka_integration_request.py +sysdig_client/models/update_kafka_integration_request_all_of_connection_info.py +sysdig_client/models/update_mcm_integration_request.py +sysdig_client/models/update_microsoft_sentinel_integration_request.py +sysdig_client/models/update_ms_teams_notification_channel_request_v1.py +sysdig_client/models/update_notification_channel_request_v1.py +sysdig_client/models/update_opsgenie_notification_channel_request_v1.py +sysdig_client/models/update_pager_duty_notification_channel_request_v1.py +sysdig_client/models/update_pricing_request_v1.py +sysdig_client/models/update_prometheus_alert_manager_notification_channel_request_v1.py +sysdig_client/models/update_qradar_integration_request.py +sysdig_client/models/update_risk_accepted.py +sysdig_client/models/update_service_accounts_notification_settings_request_v1.py +sysdig_client/models/update_slack_notification_channel_request_v1.py +sysdig_client/models/update_sns_notification_channel_request_v1.py +sysdig_client/models/update_splunk_integration_request.py +sysdig_client/models/update_sso_settings_request_v1.py +sysdig_client/models/update_syslog_integration_request.py +sysdig_client/models/update_team_email_notification_channel_request_v1.py +sysdig_client/models/update_team_request_v1.py +sysdig_client/models/update_user_deactivation_configuration_request_v1.py +sysdig_client/models/update_user_request_v1.py +sysdig_client/models/update_victor_ops_notification_channel_request_v1.py +sysdig_client/models/update_webhook_integration_request.py +sysdig_client/models/update_webhook_integration_request_all_of_connection_info.py +sysdig_client/models/update_webhook_notification_channel_request_v1.py +sysdig_client/models/user.py +sysdig_client/models/user_deactivation_configuration_response_v1.py +sysdig_client/models/user_response_v1.py +sysdig_client/models/victor_ops_notification_channel_options_v1.py +sysdig_client/models/victor_ops_notification_channel_response_v1.py +sysdig_client/models/vuln_age.py +sysdig_client/models/vuln_age_extra.py +sysdig_client/models/vuln_cvss.py +sysdig_client/models/vuln_cvss_equals.py +sysdig_client/models/vuln_cvss_equals_extra.py +sysdig_client/models/vuln_cvss_extra.py +sysdig_client/models/vuln_disclosure_range.py +sysdig_client/models/vuln_disclosure_range_extra.py +sysdig_client/models/vuln_epss_percentile_gte.py +sysdig_client/models/vuln_epss_percentile_gte_extra.py +sysdig_client/models/vuln_epss_score_gte.py +sysdig_client/models/vuln_epss_score_gte_extra.py +sysdig_client/models/vuln_exploitable.py +sysdig_client/models/vuln_exploitable_no_admin.py +sysdig_client/models/vuln_exploitable_no_user.py +sysdig_client/models/vuln_exploitable_via_network.py +sysdig_client/models/vuln_exploitable_with_age.py +sysdig_client/models/vuln_exploitable_with_age_extra.py +sysdig_client/models/vuln_is_fixable.py +sysdig_client/models/vuln_is_fixable_with_age.py +sysdig_client/models/vuln_is_fixable_with_age_extra.py +sysdig_client/models/vuln_is_in_use.py +sysdig_client/models/vuln_pkg_type.py +sysdig_client/models/vuln_pkg_type_extra.py +sysdig_client/models/vuln_severity.py +sysdig_client/models/vuln_severity_equals.py +sysdig_client/models/vuln_severity_extra.py +sysdig_client/models/vuln_total_by_severity.py +sysdig_client/models/vulnerability.py +sysdig_client/models/vulnerability_management_page.py +sysdig_client/models/vulnerability_summary.py +sysdig_client/models/wasted_workload_data_request.py +sysdig_client/models/wasted_workload_spend_data_response.py +sysdig_client/models/wasted_workload_spend_data_response_group_by_data_inner.py +sysdig_client/models/wasted_workload_spend_data_response_total.py +sysdig_client/models/webhook_notification_channel_options_v1.py +sysdig_client/models/webhook_notification_channel_response_v1.py +sysdig_client/models/workload_cost_trends_data_request.py +sysdig_client/models/workload_cost_trends_data_response.py +sysdig_client/models/workload_cost_trends_data_response_group_by_data_inner.py +sysdig_client/models/workload_cost_trends_data_response_total.py +sysdig_client/models/workload_ml_runtime_detection_content.py +sysdig_client/models/workload_rightsizing_data_request.py +sysdig_client/models/workload_rightsizing_data_response.py +sysdig_client/models/workload_rightsizing_data_response_group_by_data_inner.py +sysdig_client/models/workload_runtime_detection_content.py +sysdig_client/models/workload_runtime_detection_content_all_of_fields.py +sysdig_client/models/zone.py +sysdig_client/models/zone_response_v1.py +sysdig_client/models/zone_scope.py +sysdig_client/py.typed +sysdig_client/rest.py +test/__init__.py diff --git a/.openapi-generator/VERSION b/.openapi-generator/VERSION new file mode 100644 index 00000000..eb1dc6a5 --- /dev/null +++ b/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.13.0 diff --git a/.openapi-generator/config.yaml b/.openapi-generator/config.yaml new file mode 100644 index 00000000..ffcdf548 --- /dev/null +++ b/.openapi-generator/config.yaml @@ -0,0 +1,3 @@ +additionalProperties: + packageName: sysdig_client + projectName: sysdig-sdk-python diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..072185c8 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,15 @@ +repos: + - repo: local + hooks: + - id: ruff-format + name: Ruff Format + description: Format code with ruff. + entry: make fmt + language: system + stages: ["pre-commit", "pre-push"] + - id: ruff-check + name: Ruff Check + description: Check code style with ruff. + entry: make lint + language: system + stages: ["pre-commit", "pre-push"] diff --git a/Makefile b/Makefile index b5a97bcf..85fec233 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,40 @@ +.PHONY: help init lint fmt test test-coverage +help: + @echo "Available commands:" + @echo " make init - Install dependencies" + @echo " make lint - Lint and fix code" + @echo " make fmt - Format code" + @echo " make test - Run tests" + @echo " make test-coverage - Run tests and generate coverage report" + +init: + uv sync + +lint: + uvx ruff check --fix --config ruff.toml + +fmt: + uvx ruff format --config ruff.toml -.PHONY: test test: - poetry run mamba -f documentation + uv run pytest --capture=tee-sys --junitxml=pytest.xml + +test-coverage: + uv run pytest --cov=. --cov-report=xml + +test-all: test test-coverage -.coverage: - poetry run coverage run $(shell poetry run which mamba) -f documentation || true +update-api-spec-submodule: + git submodule update --init --recursive -cover: .coverage - poetry run coverage report --include 'sdcclient/*' +build-openapi-yaml: update-api-spec-submodule + cd api-spec && make merge-all -.PHONY: cover-html -cover-html: .coverage - poetry run coverage html -d coverage --include 'sdcclient/*' +openapi-update-python-client: post-openapi-update build-openapi-yaml + @echo "Generating Python client from OpenAPI definition..." + openapi-generator-cli generate -i api-spec/openapi.yaml -g python -o . -c .openapi-generator/config.yaml +post-openapi-update: openapi-update-python-client + @echo "Running post-update tasks..." + ./scripts/move_model_docs.sh diff --git a/README.md b/README.md index 2fd46bb8..a663dd17 100644 --- a/README.md +++ b/README.md @@ -1,106 +1,886 @@ -Sysdig Monitor/Secure Python client library -=== +# sysdig-sdk-python -![CI - Master - Scheduled](https://github.com/sysdiglabs/sysdig-sdk-python/workflows/CI%20-%20Master%20-%20Scheduled/badge.svg) -[![Current version on PyPI](http://img.shields.io/pypi/v/sdcclient.svg)](https://pypi.python.org/pypi/sdcclient) -![PyPI - Python Version](https://img.shields.io/pypi/pyversions/sdcclient) -![PyPI - License](https://img.shields.io/pypi/l/sdcclient) -![PyPI - Downloads](https://img.shields.io/pypi/dm/sdcclient) +Sysdig Public API. -A Python client API for Sysdig Monitor/Sysdig Secure. +This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -This module is a wrapper around the Sysdig Monitor/Sysdig Secure APIs. It exposes most of the sysdig REST API functionality as an easy to use and easy to install Python interface. The repository includes a rich set of examples (in the [examples](examples/) subdir) that quickly address several use cases. +- API version: 1.1.1 +- Package version: 1.0.0 +- Generator version: 7.13.0 +- Build package: org.openapitools.codegen.languages.PythonClientCodegen +For more information, please visit [https://sysdig.com](https://sysdig.com) -Installation ------------- -#### Automatic with PyPI - pip install sdcclient +## Requirements. -#### Manual (development only) +Python 3.9+ -This method requires [Poetry](https://python-poetry.org/) installed +## Installation & Usage - git clone https://github.com/sysdiglabs/sysdig-sdk-python.git - cd python-sdc-client - poetry install +### Backwards Compatibility -Quick start ------------ -- If you are interested in exporting metrics data from Sysdig Monitor, take a look at [examples/get_data_simple.py](examples/get_data_simple.py) and [examples/get_data_advanced.py](examples/get_data_advanced.py). -- If you want to programmatically create an alert, refer to [examples/create_alert.py](examples/create_alert.py) -- If you want to programmatically create a dashboard, refer to [examples/create_dashboard.py](examples/create_dashboard.py) +You can still import the other module: `sdcclient`. We will work on bring its contents to the new package `sysdig_client` to maintain a standard. -Usage ------ +### OpenAPI def from [api-spec](https://github.com/draios/api-spec) -_Note:_ in order to use this API you must obtain a Sysdig Monitor/Secure API token. You can get your user's token in the _Sysdig Monitor API_ section of the settings page for [monitor](https://app.sysdigcloud.com/#/settings/user) or [secure](https://secure.sysdig.com/#/settings/user). +We are defining the API client from the `openapi.yaml` created from the specific commit version of the [api-spec](https://github.com/draios/api-spec) repo. We are using the [openapi-generator](https://openapi-generator.tech/docs/generators/python/) for python. -The library exports two classes, `SdMonitorClient` and `SdSecureClient` that are used to connect to Sysdig Monitor/Secure and execute actions. They can be instantiated like this: +#### Build -``` python -from sdcclient import SdMonitorClient +To run the above steps lets run the following command -api_token = "MY_API_TOKEN" +Run `make openapi-update-python-client` -# -# Instantiate the Sysdig Monitor client -# -client = SdMonitorClient(api_token) -``` +### pip install -For backwards compatibility purposes, a third class `SdcClient` is exported which is an alias of `SdMonitorClient`. +If the python package is hosted on a repository, you can install directly using: -Once instantiated, all the methods documented below can be called on the object. +```sh +pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git +``` +(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`) -#### Return Values -Every method in the SdMonitorClient/SdSecureClient classes returns **a list with two entries**. The first one is a boolean value indicating if the call was successful. The second entry depends on the result: -- If the call was successful, it's a dictionary reflecting the json returned by the underlying REST call -- If the call failed, it's a string describing the error +Then import the package: +```python +import sysdig_client +``` -For an example on how to parse this output, take a look at a simple example like [get_data_simple.py](examples/get_data_simple.py) +In another project you can also reference the current client using the commit hash like this: + +```yaml +# pyproject.toml +[project] +name = "your-project" +... +dependencies = [ + ... + "sysdig-sdk @ git+https://github.com/sysdiglabs/sysdig-sdk-python@e9b0d336c2f617f3bbd752416860f84eed160c41", + "requests", + ... +] +``` -Function List & Documentation ------------------------------ -**Work in progress** +### Tests -Fully documented methods is in our roadmap and will be available soon. +Execute `pytest` to run the tests. -On-Premises Installs --------------------- -For [On-Premises Sysdig Monitor installs](https://support.sysdigcloud.com/hc/en-us/articles/206519903-On-Premises-Installation-Guide), additional configuration is necessary to point to your API server rather than the default SaaS-based one, and also to easily connect when using a self-signed certificate for SSL. One way to handle this is by setting environment variables before running your Python scripts: +## Getting Started -``` -export SDC_URL='https://' -export SDC_SSL_VERIFY='false' -``` +Please follow the [installation procedure](#installation--usage) and then run the following: -Alternatively, you can specify the additional arguments in your Python scripts as you instantiate the SDC client: +```python -``` -client = SdMonitorClient(api_token, sdc_url='https://', ssl_verify=False) -``` +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) -Transitioning from Python to REST ---------------------------------- +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. -If your goal is to interact with the REST API directly, you can use this Python client library to understand the REST interactions by logging the actions it takes. This is useful because full documentation of the REST API has not yet been created; and also provides a complete example of known working operations. +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) -- Use or modify an example, or write a new script against the Python sdcclient module. -- Log the HTTP requests made by the script. -To log all the requests made by your script in significant detail, add to your script: +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.AccessKeysApi(api_client) + create_access_key_request_v1 = sysdig_client.CreateAccessKeyRequestV1() # CreateAccessKeyRequestV1 | (optional) -``` python -import logging -import http.client -http.client.HTTPConnection.debuglevel = 1 + try: + # Create Access Key + api_response = api_instance.create_access_key_v1(create_access_key_request_v1=create_access_key_request_v1) + print("The response of AccessKeysApi->create_access_key_v1:\n") + pprint(api_response) + except ApiException as e: + print("Exception when calling AccessKeysApi->create_access_key_v1: %s\n" % e) -logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests -logging.getLogger().setLevel(logging.DEBUG) -requests_log = logging.getLogger("requests.packages.urllib3") -requests_log.setLevel(logging.DEBUG) -requests_log.propagate = True ``` -Then run as normal. +## Documentation for API Endpoints + +All URIs are relative to *http://localhost* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*AccessKeysApi* | [**create_access_key_v1**](docs/AccessKeysApi.md#create_access_key_v1) | **POST** /platform/v1/access-keys | Create Access Key +*AccessKeysApi* | [**delete_access_key_by_id_v1**](docs/AccessKeysApi.md#delete_access_key_by_id_v1) | **DELETE** /platform/v1/access-keys/{accessKeyId} | Delete Access Key +*AccessKeysApi* | [**get_access_key_by_id_v1**](docs/AccessKeysApi.md#get_access_key_by_id_v1) | **GET** /platform/v1/access-keys/{accessKeyId} | Get Access Key +*AccessKeysApi* | [**get_access_keys_v1**](docs/AccessKeysApi.md#get_access_keys_v1) | **GET** /platform/v1/access-keys | List Access Keys +*AccessKeysApi* | [**update_access_key_by_id_v1**](docs/AccessKeysApi.md#update_access_key_by_id_v1) | **PUT** /platform/v1/access-keys/{accessKeyId} | Update Access Key +*ActivityAuditApi* | [**get_activity_audit_entries_supported_filters_v1**](docs/ActivityAuditApi.md#get_activity_audit_entries_supported_filters_v1) | **GET** /secure/activity-audit/v1/supported-filters | Get available filters +*ActivityAuditApi* | [**get_activity_audit_entries_v1**](docs/ActivityAuditApi.md#get_activity_audit_entries_v1) | **GET** /secure/activity-audit/v1/entries | List entries +*ActivityAuditApi* | [**get_activity_audit_entry_v1**](docs/ActivityAuditApi.md#get_activity_audit_entry_v1) | **GET** /secure/activity-audit/v1/entries/{entryId} | Get entry +*CaptureStorageApi* | [**get_capture_storage_configuration_v1**](docs/CaptureStorageApi.md#get_capture_storage_configuration_v1) | **GET** /platform/v1/configuration/capture-storage | Get Capture Storage Configuration +*CaptureStorageApi* | [**update_capture_storage_configuration_v1**](docs/CaptureStorageApi.md#update_capture_storage_configuration_v1) | **PUT** /platform/v1/configuration/capture-storage | Update or Create Capture Storage Configuration +*CertificatesApi* | [**create_csrv1**](docs/CertificatesApi.md#create_csrv1) | **POST** /secure/certman/v1/csr | Create CSR +*CertificatesApi* | [**delete_certificate_v1**](docs/CertificatesApi.md#delete_certificate_v1) | **DELETE** /secure/certman/v1/certificates/{certId} | Delete Certificate +*CertificatesApi* | [**get_certificate_registration_v1**](docs/CertificatesApi.md#get_certificate_registration_v1) | **GET** /secure/certman/v1/certificates/{certId}/services | List Services +*CertificatesApi* | [**get_certificate_v1**](docs/CertificatesApi.md#get_certificate_v1) | **GET** /secure/certman/v1/certificates/{certId} | Get Certificate +*CertificatesApi* | [**get_certificates_v1**](docs/CertificatesApi.md#get_certificates_v1) | **GET** /secure/certman/v1/certificates | List Certificates +*CertificatesApi* | [**upload_certificate_v1**](docs/CertificatesApi.md#upload_certificate_v1) | **POST** /secure/certman/v1/certificates | Upload Certificate +*CostAdvisorCustomPricingApi* | [**create_pricing_v1**](docs/CostAdvisorCustomPricingApi.md#create_pricing_v1) | **POST** /monitor/cost-advisor/v1/pricing | Create Pricing +*CostAdvisorCustomPricingApi* | [**delete_pricing_by_id_v1**](docs/CostAdvisorCustomPricingApi.md#delete_pricing_by_id_v1) | **DELETE** /monitor/cost-advisor/v1/pricing/{pricingId} | Delete Pricing +*CostAdvisorCustomPricingApi* | [**get_pricing_by_id_v1**](docs/CostAdvisorCustomPricingApi.md#get_pricing_by_id_v1) | **GET** /monitor/cost-advisor/v1/pricing/{pricingId} | Get Pricing +*CostAdvisorCustomPricingApi* | [**get_pricing_projected_costs_v1**](docs/CostAdvisorCustomPricingApi.md#get_pricing_projected_costs_v1) | **GET** /monitor/cost-advisor/v1/pricing/{pricingId}/projected-costs | Get Pricing Projected Costs +*CostAdvisorCustomPricingApi* | [**get_pricing_v1**](docs/CostAdvisorCustomPricingApi.md#get_pricing_v1) | **GET** /monitor/cost-advisor/v1/pricing | List Pricing +*CostAdvisorCustomPricingApi* | [**update_pricing_by_id_v1**](docs/CostAdvisorCustomPricingApi.md#update_pricing_by_id_v1) | **PUT** /monitor/cost-advisor/v1/pricing/{pricingId} | Update Pricing +*CostAdvisorDataApi* | [**get_wasted_workload_data**](docs/CostAdvisorDataApi.md#get_wasted_workload_data) | **POST** /monitor/cost-advisor/v1alpha1/data/wasted-workload-spend | Wasted Workload Spend Data +*CostAdvisorDataApi* | [**get_workload_cost_data_v1**](docs/CostAdvisorDataApi.md#get_workload_cost_data_v1) | **POST** /monitor/cost-advisor/v1alpha1/data/workload-cost-trends | Workload Cost Trends Data +*CostAdvisorDataApi* | [**get_workload_rightsizing_data**](docs/CostAdvisorDataApi.md#get_workload_rightsizing_data) | **POST** /monitor/cost-advisor/v1alpha1/data/workload-rightsizing | Workload Rightsizing Data +*EventsForwarderApi* | [**create_efo_inegration_v1**](docs/EventsForwarderApi.md#create_efo_inegration_v1) | **POST** /secure/events-forwarder/v1/integrations | Create Integration +*EventsForwarderApi* | [**delete_efo_integration_by_idv1**](docs/EventsForwarderApi.md#delete_efo_integration_by_idv1) | **DELETE** /secure/events-forwarder/v1/integrations/{integrationId} | Delete Integration +*EventsForwarderApi* | [**get_efo_integration_by_id_v1**](docs/EventsForwarderApi.md#get_efo_integration_by_id_v1) | **GET** /secure/events-forwarder/v1/integrations/{integrationId} | Get Integration +*EventsForwarderApi* | [**list_efo_channels_by_integration_v1**](docs/EventsForwarderApi.md#list_efo_channels_by_integration_v1) | **GET** /secure/events-forwarder/v1/channels | List Channels +*EventsForwarderApi* | [**list_efo_integrations_types_v1**](docs/EventsForwarderApi.md#list_efo_integrations_types_v1) | **GET** /secure/events-forwarder/v1/types | List Integrations types +*EventsForwarderApi* | [**list_efo_integrations_v1**](docs/EventsForwarderApi.md#list_efo_integrations_v1) | **GET** /secure/events-forwarder/v1/integrations | List Integrations +*EventsForwarderApi* | [**update_efo_integration_by_id_v1**](docs/EventsForwarderApi.md#update_efo_integration_by_id_v1) | **PUT** /secure/events-forwarder/v1/integrations/{integrationId} | Update Integration +*GroupMappingsApi* | [**create_group_mapping_v1**](docs/GroupMappingsApi.md#create_group_mapping_v1) | **POST** /platform/v1/group-mappings | Create Group Mapping +*GroupMappingsApi* | [**delete_group_mapping_by_id_v1**](docs/GroupMappingsApi.md#delete_group_mapping_by_id_v1) | **DELETE** /platform/v1/group-mappings/{groupMappingId} | Delete Group Mapping +*GroupMappingsApi* | [**get_group_mapping_by_id_v1**](docs/GroupMappingsApi.md#get_group_mapping_by_id_v1) | **GET** /platform/v1/group-mappings/{groupMappingId} | Get Group Mapping +*GroupMappingsApi* | [**get_group_mapping_settings_v1**](docs/GroupMappingsApi.md#get_group_mapping_settings_v1) | **GET** /platform/v1/group-mappings-settings | Get Group Mappings Settings +*GroupMappingsApi* | [**get_group_mappings_v1**](docs/GroupMappingsApi.md#get_group_mappings_v1) | **GET** /platform/v1/group-mappings | List Group Mappings +*GroupMappingsApi* | [**save_group_mapping_settings_v1**](docs/GroupMappingsApi.md#save_group_mapping_settings_v1) | **PUT** /platform/v1/group-mappings-settings | Save Group Mapping settings +*GroupMappingsApi* | [**update_group_mapping_by_id_v1**](docs/GroupMappingsApi.md#update_group_mapping_by_id_v1) | **PUT** /platform/v1/group-mappings/{groupMappingId} | Update Group Mapping +*IPFilteringApi* | [**create_ip_filter_v1**](docs/IPFilteringApi.md#create_ip_filter_v1) | **POST** /platform/v1/ip-filters | Create IP Filter +*IPFilteringApi* | [**delete_ip_filter_by_id_v1**](docs/IPFilteringApi.md#delete_ip_filter_by_id_v1) | **DELETE** /platform/v1/ip-filters/{ipFilterId} | Delete IP Filter +*IPFilteringApi* | [**get_ip_filter_by_id_v1**](docs/IPFilteringApi.md#get_ip_filter_by_id_v1) | **GET** /platform/v1/ip-filters/{ipFilterId} | Get IP Filter by ID +*IPFilteringApi* | [**get_ip_filters_settings_v1**](docs/IPFilteringApi.md#get_ip_filters_settings_v1) | **GET** /platform/v1/ip-filters-settings | Get IP Filters Settings +*IPFilteringApi* | [**get_ip_filters_v1**](docs/IPFilteringApi.md#get_ip_filters_v1) | **GET** /platform/v1/ip-filters | List IP Filters +*IPFilteringApi* | [**save_ip_filters_settings_v1**](docs/IPFilteringApi.md#save_ip_filters_settings_v1) | **PUT** /platform/v1/ip-filters-settings | Save IP Filters settings +*IPFilteringApi* | [**update_ip_filter_v1**](docs/IPFilteringApi.md#update_ip_filter_v1) | **PUT** /platform/v1/ip-filters/{ipFilterId} | Update IP Filter +*InhibitionRulesApi* | [**create_inhibition_rule**](docs/InhibitionRulesApi.md#create_inhibition_rule) | **POST** /monitor/alerts/v1/inhibition-rules | Create Inhibition Rule +*InhibitionRulesApi* | [**delete_inhibition_rule_by_id**](docs/InhibitionRulesApi.md#delete_inhibition_rule_by_id) | **DELETE** /monitor/alerts/v1/inhibition-rules/{inhibitionRuleId} | Delete Inhibition Rule +*InhibitionRulesApi* | [**get_inhibition_rule_by_id**](docs/InhibitionRulesApi.md#get_inhibition_rule_by_id) | **GET** /monitor/alerts/v1/inhibition-rules/{inhibitionRuleId} | Get Inhibition Rule +*InhibitionRulesApi* | [**get_inhibition_rules**](docs/InhibitionRulesApi.md#get_inhibition_rules) | **GET** /monitor/alerts/v1/inhibition-rules | List Inhibition Rules +*InhibitionRulesApi* | [**update_inhibition_rule**](docs/InhibitionRulesApi.md#update_inhibition_rule) | **PUT** /monitor/alerts/v1/inhibition-rules/{inhibitionRuleId} | Update Inhibition Rule +*InventoryApi* | [**get_resource**](docs/InventoryApi.md#get_resource) | **GET** /secure/inventory/v1/resources/{hash} | Get Resource +*InventoryApi* | [**get_resources**](docs/InventoryApi.md#get_resources) | **GET** /secure/inventory/v1/resources | List Resources +*JiraIntegrationsApi* | [**create_jira_integration_v1**](docs/JiraIntegrationsApi.md#create_jira_integration_v1) | **POST** /platform/jira/v1/integrations | Create Jira integration +*JiraIntegrationsApi* | [**create_jira_issue_type_v1**](docs/JiraIntegrationsApi.md#create_jira_issue_type_v1) | **POST** /platform/jira/v1/integrations/{integrationId}/issue-types | Create Jira issue type +*JiraIntegrationsApi* | [**delete_jira_integration_v1**](docs/JiraIntegrationsApi.md#delete_jira_integration_v1) | **DELETE** /platform/jira/v1/integrations/{integrationId} | Delete Jira integration +*JiraIntegrationsApi* | [**delete_jira_issue_type_v1**](docs/JiraIntegrationsApi.md#delete_jira_issue_type_v1) | **DELETE** /platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId} | Delete Jira issue type +*JiraIntegrationsApi* | [**get_jira_integration_v1**](docs/JiraIntegrationsApi.md#get_jira_integration_v1) | **GET** /platform/jira/v1/integrations/{integrationId} | Get Jira integration +*JiraIntegrationsApi* | [**get_jira_integrations_v1**](docs/JiraIntegrationsApi.md#get_jira_integrations_v1) | **GET** /platform/jira/v1/integrations | List Jira integrations +*JiraIntegrationsApi* | [**get_jira_issue_type_v1**](docs/JiraIntegrationsApi.md#get_jira_issue_type_v1) | **GET** /platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId} | Get Jira issue type +*JiraIntegrationsApi* | [**get_jira_issue_types_v1**](docs/JiraIntegrationsApi.md#get_jira_issue_types_v1) | **GET** /platform/jira/v1/integrations/{integrationId}/issue-types | List Jira issue types +*JiraIntegrationsApi* | [**update_jira_integration_v1**](docs/JiraIntegrationsApi.md#update_jira_integration_v1) | **PUT** /platform/jira/v1/integrations/{integrationId} | Update Jira integration +*JiraIntegrationsApi* | [**update_jira_issue_type_v1**](docs/JiraIntegrationsApi.md#update_jira_issue_type_v1) | **PUT** /platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId} | Update Jira issue type +*MetricsCollectionApi* | [**create_custom_prometheus_job_v1**](docs/MetricsCollectionApi.md#create_custom_prometheus_job_v1) | **POST** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName} | Create Custom Prometheus job +*MetricsCollectionApi* | [**delete_custom_prometheus_job_by_id_v1**](docs/MetricsCollectionApi.md#delete_custom_prometheus_job_by_id_v1) | **DELETE** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName} | Delete Custom Prometheus job +*MetricsCollectionApi* | [**get_custom_prometheus_job_by_name_v1**](docs/MetricsCollectionApi.md#get_custom_prometheus_job_by_name_v1) | **GET** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName} | Get Custom Prometheus Job +*MetricsCollectionApi* | [**get_custom_prometheus_job_enablement_v1**](docs/MetricsCollectionApi.md#get_custom_prometheus_job_enablement_v1) | **GET** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement | Get Custom Prometheus Job enablement +*MetricsCollectionApi* | [**get_custom_prometheus_jobs_v1**](docs/MetricsCollectionApi.md#get_custom_prometheus_jobs_v1) | **GET** /monitor/prometheus-jobs/v1alpha1/custom-jobs | List Custom Prometheus jobs +*MetricsCollectionApi* | [**get_disabled_metrics_by_job_v1**](docs/MetricsCollectionApi.md#get_disabled_metrics_by_job_v1) | **GET** /monitor/prometheus-jobs/v1/disabled-metrics | List disabled metrics collection for Jobs. +*MetricsCollectionApi* | [**post_disabled_metrics_v1**](docs/MetricsCollectionApi.md#post_disabled_metrics_v1) | **POST** /monitor/prometheus-jobs/v1/disabled-metrics | Disable or re-enable metrics collection for Jobs +*MetricsCollectionApi* | [**update_custom_prometheus_job_by_id_v1**](docs/MetricsCollectionApi.md#update_custom_prometheus_job_by_id_v1) | **PUT** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName} | Update Custom Prometheus Job +*MetricsCollectionApi* | [**update_custom_prometheus_job_enablement_v1**](docs/MetricsCollectionApi.md#update_custom_prometheus_job_enablement_v1) | **PUT** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement | Update Custom Prometheus Job enablement +*MonitorEventsApi* | [**get_monitor_events_v1**](docs/MonitorEventsApi.md#get_monitor_events_v1) | **GET** /monitor/events/v1/events | Get Events +*NotificationChannelsApi* | [**create_notification_channel**](docs/NotificationChannelsApi.md#create_notification_channel) | **POST** /platform/v1/notification-channels | Create Notification Channel +*NotificationChannelsApi* | [**delete_notification_channel_by_id**](docs/NotificationChannelsApi.md#delete_notification_channel_by_id) | **DELETE** /platform/v1/notification-channels/{notificationChannelId} | Delete Notification Channel +*NotificationChannelsApi* | [**get_notification_channel_by_id**](docs/NotificationChannelsApi.md#get_notification_channel_by_id) | **GET** /platform/v1/notification-channels/{notificationChannelId} | Get Notification Channel +*NotificationChannelsApi* | [**get_notification_channels**](docs/NotificationChannelsApi.md#get_notification_channels) | **GET** /platform/v1/notification-channels | List Notification Channels +*NotificationChannelsApi* | [**update_notification_channel_by_id**](docs/NotificationChannelsApi.md#update_notification_channel_by_id) | **PUT** /platform/v1/notification-channels/{notificationChannelId} | Update Notification Channel +*PermissionsApi* | [**get_permissions_v1**](docs/PermissionsApi.md#get_permissions_v1) | **GET** /platform/v1/permissions | Get Customer Permissions +*PlatformAuditApi* | [**get_platform_audit_events_v1**](docs/PlatformAuditApi.md#get_platform_audit_events_v1) | **GET** /platform/v1/platform-audit-events | Get Platform Audit Events +*PrometheusApi* | [**get_admin_tsdb_clean_tombstones_v1**](docs/PrometheusApi.md#get_admin_tsdb_clean_tombstones_v1) | **POST** /prometheus/api/v1/admin/tsdb/clean_tombstones | Clean Tombstones +*PrometheusApi* | [**get_admin_tsdb_delete_series_v1**](docs/PrometheusApi.md#get_admin_tsdb_delete_series_v1) | **POST** /prometheus/api/v1/admin/tsdb/delete_series | Delete Series +*PrometheusApi* | [**get_admin_tsdb_snapshot_v1**](docs/PrometheusApi.md#get_admin_tsdb_snapshot_v1) | **POST** /prometheus/api/v1/admin/tsdb/snapshot | Snapshot +*PrometheusApi* | [**get_alert_managers_v1**](docs/PrometheusApi.md#get_alert_managers_v1) | **GET** /prometheus/api/v1//alertmanagers | Alertmanagers +*PrometheusApi* | [**get_alerts_v1**](docs/PrometheusApi.md#get_alerts_v1) | **GET** /prometheus/api/v1/alerts | Alerts +*PrometheusApi* | [**get_exemplars_v1**](docs/PrometheusApi.md#get_exemplars_v1) | **GET** /prometheus/api/v1/query_exemplars | Query Exemplars +*PrometheusApi* | [**get_format_query_v1**](docs/PrometheusApi.md#get_format_query_v1) | **GET** /prometheus/api/v1/format_query | Format Query +*PrometheusApi* | [**get_label_values_v1**](docs/PrometheusApi.md#get_label_values_v1) | **GET** /prometheus/api/v1/label/{labelName}/values | Labels Values Query +*PrometheusApi* | [**get_labels_v1**](docs/PrometheusApi.md#get_labels_v1) | **GET** /prometheus/api/v1/labels | Labels Query +*PrometheusApi* | [**get_live_notifications_v1**](docs/PrometheusApi.md#get_live_notifications_v1) | **GET** /prometheus/api/v1/notifications/live | Live Notifications +*PrometheusApi* | [**get_metadata_v1**](docs/PrometheusApi.md#get_metadata_v1) | **GET** /prometheus/api/v1/metadata | Querying metric metadata +*PrometheusApi* | [**get_notifications_v1**](docs/PrometheusApi.md#get_notifications_v1) | **GET** /prometheus/api/v1/notifications | Active Notifications +*PrometheusApi* | [**get_parse_query_v1**](docs/PrometheusApi.md#get_parse_query_v1) | **GET** /prometheus/api/v1/parse_query | Parse Query +*PrometheusApi* | [**get_query_range_v1**](docs/PrometheusApi.md#get_query_range_v1) | **GET** /prometheus/api/v1/query_range | Range Query +*PrometheusApi* | [**get_query_v1**](docs/PrometheusApi.md#get_query_v1) | **GET** /prometheus/api/v1/query | Instant Query +*PrometheusApi* | [**get_rules_v1**](docs/PrometheusApi.md#get_rules_v1) | **GET** /prometheus/api/v1/rules | Rules +*PrometheusApi* | [**get_series_v1**](docs/PrometheusApi.md#get_series_v1) | **GET** /prometheus/api/v1/series | Series Query +*PrometheusApi* | [**get_status_build_info_v1**](docs/PrometheusApi.md#get_status_build_info_v1) | **GET** /prometheus/api/v1/status/buildinfo | Build Information +*PrometheusApi* | [**get_status_config_v1**](docs/PrometheusApi.md#get_status_config_v1) | **GET** /prometheus/api/v1/status/config | Config +*PrometheusApi* | [**get_status_flags_v1**](docs/PrometheusApi.md#get_status_flags_v1) | **GET** /prometheus/api/v1/status/flags | Flags +*PrometheusApi* | [**get_status_runtime_info_v1**](docs/PrometheusApi.md#get_status_runtime_info_v1) | **GET** /prometheus/api/v1/status/runtimeinfo | Runtime Information +*PrometheusApi* | [**get_status_tsdb_v1**](docs/PrometheusApi.md#get_status_tsdb_v1) | **GET** /prometheus/api/v1/status/tsdb | TSDB Stats +*PrometheusApi* | [**get_status_wal_replay_v1**](docs/PrometheusApi.md#get_status_wal_replay_v1) | **GET** /prometheus/api/v1/status/walreplay | WAL Replay +*PrometheusApi* | [**get_targets_metadata_v1**](docs/PrometheusApi.md#get_targets_metadata_v1) | **GET** /prometheus/api/v1/targets/metadata | Querying target metadata +*PrometheusApi* | [**get_targets_v1**](docs/PrometheusApi.md#get_targets_v1) | **GET** /prometheus/api/v1/targets | Targets +*PrometheusApi* | [**post_admin_tsdb_clean_tombstones_v1**](docs/PrometheusApi.md#post_admin_tsdb_clean_tombstones_v1) | **PUT** /prometheus/api/v1/admin/tsdb/clean_tombstones | Clean Tombstones +*PrometheusApi* | [**post_admin_tsdb_delete_series_v1**](docs/PrometheusApi.md#post_admin_tsdb_delete_series_v1) | **PUT** /prometheus/api/v1/admin/tsdb/delete_series | Delete Series +*PrometheusApi* | [**post_admin_tsdb_snapshot_v1**](docs/PrometheusApi.md#post_admin_tsdb_snapshot_v1) | **PUT** /prometheus/api/v1/admin/tsdb/snapshot | Snapshot +*PrometheusApi* | [**post_exemplars_v1**](docs/PrometheusApi.md#post_exemplars_v1) | **POST** /prometheus/api/v1/query_exemplars | Query Exemplars +*PrometheusApi* | [**post_format_query_v1**](docs/PrometheusApi.md#post_format_query_v1) | **POST** /prometheus/api/v1/format_query | Format Query +*PrometheusApi* | [**post_labels_v1**](docs/PrometheusApi.md#post_labels_v1) | **POST** /prometheus/api/v1/labels | Labels Query +*PrometheusApi* | [**post_parse_query_v1**](docs/PrometheusApi.md#post_parse_query_v1) | **POST** /prometheus/api/v1/parse_query | Parse Query +*PrometheusApi* | [**post_query_range_v1**](docs/PrometheusApi.md#post_query_range_v1) | **POST** /prometheus/api/v1/query_range | Range Query +*PrometheusApi* | [**post_query_v1**](docs/PrometheusApi.md#post_query_v1) | **POST** /prometheus/api/v1/query | Instant Query +*PrometheusApi* | [**post_series_v1**](docs/PrometheusApi.md#post_series_v1) | **POST** /prometheus/api/v1/series | Series Query +*PrometheusApi* | [**remote_write_v1**](docs/PrometheusApi.md#remote_write_v1) | **POST** /prometheus/api/v1/write | Ingest metric data (remote write) +*ReportingApi* | [**list_jobs_v1**](docs/ReportingApi.md#list_jobs_v1) | **GET** /platform/reporting/v1/jobs | List Report Job Runs +*ReportingApi* | [**list_schedules_v1**](docs/ReportingApi.md#list_schedules_v1) | **GET** /platform/reporting/v1/schedules | List Report Schedules +*ResponseActionsApi* | [**get_action_execution_file_acquire_v1**](docs/ResponseActionsApi.md#get_action_execution_file_acquire_v1) | **GET** /secure/response-actions/v1alpha1/action-executions/{actionExecutionId}/acquired-file | Get Acquired File +*ResponseActionsApi* | [**get_action_execution_v1**](docs/ResponseActionsApi.md#get_action_execution_v1) | **GET** /secure/response-actions/v1alpha1/action-executions/{actionExecutionId} | Get Action Execution +*ResponseActionsApi* | [**get_action_executionsv1**](docs/ResponseActionsApi.md#get_action_executionsv1) | **GET** /secure/response-actions/v1alpha1/action-executions | Returns the list of Response Actions executions. You can filter them with the available query parameters. +*ResponseActionsApi* | [**get_actions_v1**](docs/ResponseActionsApi.md#get_actions_v1) | **GET** /secure/response-actions/v1alpha1/actions | Get All Response Actions +*ResponseActionsApi* | [**submit_action_executionv1**](docs/ResponseActionsApi.md#submit_action_executionv1) | **POST** /secure/response-actions/v1alpha1/action-executions | Submit the execution of an action +*ResponseActionsApi* | [**undo_action_execution_v1**](docs/ResponseActionsApi.md#undo_action_execution_v1) | **DELETE** /secure/response-actions/v1alpha1/action-executions/{actionExecutionId} | Undoes an Action Execution +*RolesApi* | [**create_role_v1**](docs/RolesApi.md#create_role_v1) | **POST** /platform/v1/roles | Create Role +*RolesApi* | [**delete_role_by_id_v1**](docs/RolesApi.md#delete_role_by_id_v1) | **DELETE** /platform/v1/roles/{roleId} | Delete Role +*RolesApi* | [**get_role_by_id_v1**](docs/RolesApi.md#get_role_by_id_v1) | **GET** /platform/v1/roles/{roleId} | Get Role +*RolesApi* | [**get_roles_v1**](docs/RolesApi.md#get_roles_v1) | **GET** /platform/v1/roles | List Roles +*RolesApi* | [**update_role_by_id_v1**](docs/RolesApi.md#update_role_by_id_v1) | **PUT** /platform/v1/roles/{roleId} | Update Role +*SBOMApi* | [**get_sbomv1beta1**](docs/SBOMApi.md#get_sbomv1beta1) | **GET** /secure/vulnerability/v1beta1/sboms | Get SBOM +*SSOSettingsApi* | [**create_sso_settings_v1**](docs/SSOSettingsApi.md#create_sso_settings_v1) | **POST** /platform/v1/sso-settings | Create SSO Settings +*SSOSettingsApi* | [**delete_sso_settings_by_id_v1**](docs/SSOSettingsApi.md#delete_sso_settings_by_id_v1) | **DELETE** /platform/v1/sso-settings/{ssoSettingsId} | Delete SSO Settings +*SSOSettingsApi* | [**get_globa_sso_settings_v1**](docs/SSOSettingsApi.md#get_globa_sso_settings_v1) | **GET** /platform/v1/global-sso-settings/{ssoProductId} | Get Global SSO Settings +*SSOSettingsApi* | [**get_sso_settings_by_id_v1**](docs/SSOSettingsApi.md#get_sso_settings_by_id_v1) | **GET** /platform/v1/sso-settings/{ssoSettingsId} | Get SSO Settings +*SSOSettingsApi* | [**get_sso_settings_v1**](docs/SSOSettingsApi.md#get_sso_settings_v1) | **GET** /platform/v1/sso-settings | List SSO Settings +*SSOSettingsApi* | [**update_global_sso_settings_v1**](docs/SSOSettingsApi.md#update_global_sso_settings_v1) | **PUT** /platform/v1/global-sso-settings/{ssoProductId} | Update Global SSO Settings +*SSOSettingsApi* | [**update_sso_settings_by_id_v1**](docs/SSOSettingsApi.md#update_sso_settings_by_id_v1) | **PUT** /platform/v1/sso-settings/{ssoSettingsId} | Update SSO Settings +*SecureEventsApi* | [**get_event_v1**](docs/SecureEventsApi.md#get_event_v1) | **GET** /secure/events/v1/events/{eventId} | Get event +*SecureEventsApi* | [**get_events_supported_filters_v1**](docs/SecureEventsApi.md#get_events_supported_filters_v1) | **GET** /secure/events/v1/supported-filters | Get available filters +*SecureEventsApi* | [**get_events_v1**](docs/SecureEventsApi.md#get_events_v1) | **GET** /secure/events/v1/events | List events +*ServiceAccountsApi* | [**create_global_service_account_v1**](docs/ServiceAccountsApi.md#create_global_service_account_v1) | **POST** /platform/v1/service-accounts | Create a Global Service Account +*ServiceAccountsApi* | [**create_team_service_account_v1**](docs/ServiceAccountsApi.md#create_team_service_account_v1) | **POST** /platform/v1/teams/{teamId}/service-accounts | Create a Team Service Account +*ServiceAccountsApi* | [**delete_global_service_account_by_id_v1**](docs/ServiceAccountsApi.md#delete_global_service_account_by_id_v1) | **DELETE** /platform/v1/service-accounts/{serviceAccountId} | Delete a Global Service Account +*ServiceAccountsApi* | [**delete_team_service_account_by_id_v1**](docs/ServiceAccountsApi.md#delete_team_service_account_by_id_v1) | **DELETE** /platform/v1/teams/{teamId}/service-accounts/{serviceAccountId} | Delete a Team Service Account +*ServiceAccountsApi* | [**get_global_service_account_by_id_v1**](docs/ServiceAccountsApi.md#get_global_service_account_by_id_v1) | **GET** /platform/v1/service-accounts/{serviceAccountId} | Get a Global Service Account +*ServiceAccountsApi* | [**get_global_service_accounts_v1**](docs/ServiceAccountsApi.md#get_global_service_accounts_v1) | **GET** /platform/v1/service-accounts | List Global Service Accounts +*ServiceAccountsApi* | [**get_team_service_account_by_id_v1**](docs/ServiceAccountsApi.md#get_team_service_account_by_id_v1) | **GET** /platform/v1/teams/{teamId}/service-accounts/{serviceAccountId} | Get a Team Service Account +*ServiceAccountsApi* | [**get_team_service_accounts_v1**](docs/ServiceAccountsApi.md#get_team_service_accounts_v1) | **GET** /platform/v1/teams/{teamId}/service-accounts | List Team Service Accounts +*ServiceAccountsNotificationSettingsApi* | [**create_global_service_accounts_notification_settings_v1**](docs/ServiceAccountsNotificationSettingsApi.md#create_global_service_accounts_notification_settings_v1) | **POST** /platform/v1/service-accounts/notification-settings | Create Global Service Accounts Notification Settings +*ServiceAccountsNotificationSettingsApi* | [**create_service_accounts_notification_settings_v1**](docs/ServiceAccountsNotificationSettingsApi.md#create_service_accounts_notification_settings_v1) | **POST** /platform/v1/teams/{teamId}/service-accounts/notification-settings | Create Service Accounts Notification Settings +*ServiceAccountsNotificationSettingsApi* | [**delete_global_service_accounts_notification_settings_v1**](docs/ServiceAccountsNotificationSettingsApi.md#delete_global_service_accounts_notification_settings_v1) | **DELETE** /platform/v1/service-accounts/notification-settings | Delete Global Service Accounts Notification Settings +*ServiceAccountsNotificationSettingsApi* | [**delete_service_accounts_notification_settings_v1**](docs/ServiceAccountsNotificationSettingsApi.md#delete_service_accounts_notification_settings_v1) | **DELETE** /platform/v1/teams/{teamId}/service-accounts/notification-settings | Delete Service Accounts Notification Settings +*ServiceAccountsNotificationSettingsApi* | [**get_global_service_accounts_notification_settings_v1**](docs/ServiceAccountsNotificationSettingsApi.md#get_global_service_accounts_notification_settings_v1) | **GET** /platform/v1/service-accounts/notification-settings | Get Global Service Accounts Notification Settings +*ServiceAccountsNotificationSettingsApi* | [**get_service_accounts_notification_settings_v1**](docs/ServiceAccountsNotificationSettingsApi.md#get_service_accounts_notification_settings_v1) | **GET** /platform/v1/teams/{teamId}/service-accounts/notification-settings | Get Service Accounts Notification Settings +*ServiceAccountsNotificationSettingsApi* | [**update_global_service_accounts_notification_settings_v1**](docs/ServiceAccountsNotificationSettingsApi.md#update_global_service_accounts_notification_settings_v1) | **PUT** /platform/v1/service-accounts/notification-settings | Update Global Service Accounts Notification Settings +*ServiceAccountsNotificationSettingsApi* | [**update_service_accounts_notification_settings_v1**](docs/ServiceAccountsNotificationSettingsApi.md#update_service_accounts_notification_settings_v1) | **PUT** /platform/v1/teams/{teamId}/service-accounts/notification-settings | Update Service Accounts Notification Settings +*SysQLApi* | [**get_sysql_schema**](docs/SysQLApi.md#get_sysql_schema) | **GET** /api/sysql/v2/schema | Get SysQL Schema +*SysQLApi* | [**query_sysql_get**](docs/SysQLApi.md#query_sysql_get) | **GET** /api/sysql/v2/query | Execute SysQL query via GET +*SysQLApi* | [**query_sysql_post**](docs/SysQLApi.md#query_sysql_post) | **POST** /api/sysql/v2/query | Execute SysQL query via POST +*TeamsApi* | [**create_team_v1**](docs/TeamsApi.md#create_team_v1) | **POST** /platform/v1/teams | Create Team +*TeamsApi* | [**delete_team_by_id_v1**](docs/TeamsApi.md#delete_team_by_id_v1) | **DELETE** /platform/v1/teams/{teamId} | Delete Team +*TeamsApi* | [**delete_team_user_by_id_v1**](docs/TeamsApi.md#delete_team_user_by_id_v1) | **DELETE** /platform/v1/teams/{teamId}/users/{userId} | Delete Membership +*TeamsApi* | [**get_team_by_id_v1**](docs/TeamsApi.md#get_team_by_id_v1) | **GET** /platform/v1/teams/{teamId} | Get Team +*TeamsApi* | [**get_team_user_by_id_v1**](docs/TeamsApi.md#get_team_user_by_id_v1) | **GET** /platform/v1/teams/{teamId}/users/{userId} | Get Membership +*TeamsApi* | [**get_team_users_v1**](docs/TeamsApi.md#get_team_users_v1) | **GET** /platform/v1/teams/{teamId}/users | List Memberships +*TeamsApi* | [**get_teams_v1**](docs/TeamsApi.md#get_teams_v1) | **GET** /platform/v1/teams | List Teams +*TeamsApi* | [**save_team_user_v1**](docs/TeamsApi.md#save_team_user_v1) | **PUT** /platform/v1/teams/{teamId}/users/{userId} | Save Membership +*TeamsApi* | [**update_team_by_id_v1**](docs/TeamsApi.md#update_team_by_id_v1) | **PUT** /platform/v1/teams/{teamId} | Update Team +*UserDeactivationApi* | [**get_user_deactivation_configuration_v1**](docs/UserDeactivationApi.md#get_user_deactivation_configuration_v1) | **GET** /platform/v1/configuration/user-deactivation | Get User Deactivation Configuration +*UserDeactivationApi* | [**update_user_deactivation_configuration_by_id_v1**](docs/UserDeactivationApi.md#update_user_deactivation_configuration_by_id_v1) | **PUT** /platform/v1/configuration/user-deactivation | Update or Create User Deactivation Configuration +*UsersApi* | [**create_user_v1**](docs/UsersApi.md#create_user_v1) | **POST** /platform/v1/users | Create User +*UsersApi* | [**delete_user_by_id_v1**](docs/UsersApi.md#delete_user_by_id_v1) | **DELETE** /platform/v1/users/{userId} | Delete User +*UsersApi* | [**get_user_by_id_v1**](docs/UsersApi.md#get_user_by_id_v1) | **GET** /platform/v1/users/{userId} | Get User +*UsersApi* | [**get_users_v1**](docs/UsersApi.md#get_users_v1) | **GET** /platform/v1/users | List Users +*UsersApi* | [**update_user_v1**](docs/UsersApi.md#update_user_v1) | **PUT** /platform/v1/users/{userId} | Update User +*VulnerabilityManagementApi* | [**delete_accepted_risk_v1**](docs/VulnerabilityManagementApi.md#delete_accepted_risk_v1) | **DELETE** /secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID} | Delete an Accepted Risk +*VulnerabilityManagementApi* | [**get_accepted_risk_v1**](docs/VulnerabilityManagementApi.md#get_accepted_risk_v1) | **GET** /secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID} | Get Accepted Risk +*VulnerabilityManagementApi* | [**get_accepted_risks_v1**](docs/VulnerabilityManagementApi.md#get_accepted_risks_v1) | **GET** /secure/vulnerability/v1beta1/accepted-risks | List all Accepted Risks +*VulnerabilityManagementApi* | [**post_accepted_risk_v1**](docs/VulnerabilityManagementApi.md#post_accepted_risk_v1) | **POST** /secure/vulnerability/v1beta1/accepted-risks | Create Accepted Risk +*VulnerabilityManagementApi* | [**scanner_api_service_list_registry_results**](docs/VulnerabilityManagementApi.md#scanner_api_service_list_registry_results) | **GET** /secure/vulnerability/v1/registry-results | Get a list of registry scan results +*VulnerabilityManagementApi* | [**scanner_api_service_list_runtime_results**](docs/VulnerabilityManagementApi.md#scanner_api_service_list_runtime_results) | **GET** /secure/vulnerability/v1/runtime-results | Get a list of runtime scan results +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_bundles_bundle_id_delete**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_bundle_id_delete) | **DELETE** /secure/vulnerability/v1/bundles/{bundleId} | Delete Bundle +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_bundles_bundle_id_get**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_bundle_id_get) | **GET** /secure/vulnerability/v1/bundles/{bundleId} | Get a Bundle +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_bundles_bundle_id_put**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_bundle_id_put) | **PUT** /secure/vulnerability/v1/bundles/{bundleId} | Edit Bundle +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_bundles_get**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_get) | **GET** /secure/vulnerability/v1/bundles | List Bundles +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_bundles_post**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_post) | **POST** /secure/vulnerability/v1/bundles | Create a new Bundle +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_pipeline_results_get**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_pipeline_results_get) | **GET** /secure/vulnerability/v1/pipeline-results | Get a list of pipeline scan results +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_policies_get**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_get) | **GET** /secure/vulnerability/v1/policies | List Policies +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_policies_policy_id_delete**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_policy_id_delete) | **DELETE** /secure/vulnerability/v1/policies/{policyId} | Delete a Policy +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_policies_policy_id_get**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_policy_id_get) | **GET** /secure/vulnerability/v1/policies/{policyId} | Get a Policy +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_policies_policy_id_put**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_policy_id_put) | **PUT** /secure/vulnerability/v1/policies/{policyId} | Edit a Policy +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_policies_post**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_post) | **POST** /secure/vulnerability/v1/policies | Create a new Policy +*VulnerabilityManagementApi* | [**secure_vulnerability_v1_results_result_id_get**](docs/VulnerabilityManagementApi.md#secure_vulnerability_v1_results_result_id_get) | **GET** /secure/vulnerability/v1/results/{resultId} | Get full scan result +*VulnerabilityManagementApi* | [**update_accepted_risk_v1**](docs/VulnerabilityManagementApi.md#update_accepted_risk_v1) | **PUT** /secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID} | Update an Accepted Risk +*ZonesApi* | [**create_zone_v1**](docs/ZonesApi.md#create_zone_v1) | **POST** /platform/v1/zones | Create Zone +*ZonesApi* | [**delete_zone_v1**](docs/ZonesApi.md#delete_zone_v1) | **DELETE** /platform/v1/zones/{zoneId} | Delete Zone +*ZonesApi* | [**edit_zone_v1**](docs/ZonesApi.md#edit_zone_v1) | **PUT** /platform/v1/zones/{zoneId} | Update Zone +*ZonesApi* | [**get_zone_by_id_v1**](docs/ZonesApi.md#get_zone_by_id_v1) | **GET** /platform/v1/zones/{zoneId} | Get Zone +*ZonesApi* | [**list_zones_v1**](docs/ZonesApi.md#list_zones_v1) | **GET** /platform/v1/zones | List Zones + + +## Documentation For Models + + - [AccessKeyResponseV1](docs/AccessKeyResponseV1.md) + - [Action](docs/Action.md) + - [ActionExecution](docs/ActionExecution.md) + - [ActionExecutionParameterValue](docs/ActionExecutionParameterValue.md) + - [ActionExecutionStatus](docs/ActionExecutionStatus.md) + - [ActionExecutions](docs/ActionExecutions.md) + - [ActionOutputsMetadata](docs/ActionOutputsMetadata.md) + - [ActionParameterMetadata](docs/ActionParameterMetadata.md) + - [ActionType](docs/ActionType.md) + - [Actions](docs/Actions.md) + - [AdditionalTeamPermissionsV1](docs/AdditionalTeamPermissionsV1.md) + - [AgentlessMlRuntimeDetectionContent](docs/AgentlessMlRuntimeDetectionContent.md) + - [AgentlessMlRuntimeDetectionContentAllOfFields](docs/AgentlessMlRuntimeDetectionContentAllOfFields.md) + - [AgentlessRuntimeDetectionContent](docs/AgentlessRuntimeDetectionContent.md) + - [AgentlessRuntimeDetectionContentAllOfFields](docs/AgentlessRuntimeDetectionContentAllOfFields.md) + - [AlertMonitorEvent](docs/AlertMonitorEvent.md) + - [AlertsResponseV1](docs/AlertsResponseV1.md) + - [AlertsResponseV1Data](docs/AlertsResponseV1Data.md) + - [AlertsResponseV1DataAlertsInner](docs/AlertsResponseV1DataAlertsInner.md) + - [AllSsoSettingsResponseV1](docs/AllSsoSettingsResponseV1.md) + - [AmazonSQSCreateConnectionInfo](docs/AmazonSQSCreateConnectionInfo.md) + - [AmazonSQSUpdateConnectionInfo](docs/AmazonSQSUpdateConnectionInfo.md) + - [AuditEvent](docs/AuditEvent.md) + - [AuditPage](docs/AuditPage.md) + - [AuditSupportedFilter](docs/AuditSupportedFilter.md) + - [AuditSupportedFiltersResponse](docs/AuditSupportedFiltersResponse.md) + - [AuditTrailContent](docs/AuditTrailContent.md) + - [AuthenticatedConnectionInfoElasticsearch](docs/AuthenticatedConnectionInfoElasticsearch.md) + - [AuthenticatedConnectionInfoKafka](docs/AuthenticatedConnectionInfoKafka.md) + - [AuthenticatedConnectionInfoWebhook](docs/AuthenticatedConnectionInfoWebhook.md) + - [BOMMetadata](docs/BOMMetadata.md) + - [BaseAction](docs/BaseAction.md) + - [BaseConnectionInfoAmazonSqs](docs/BaseConnectionInfoAmazonSqs.md) + - [BaseConnectionInfoChronicle](docs/BaseConnectionInfoChronicle.md) + - [BaseConnectionInfoChronicleV2](docs/BaseConnectionInfoChronicleV2.md) + - [BaseConnectionInfoElasticsearch](docs/BaseConnectionInfoElasticsearch.md) + - [BaseConnectionInfoGooglePubSub](docs/BaseConnectionInfoGooglePubSub.md) + - [BaseConnectionInfoGoogleScc](docs/BaseConnectionInfoGoogleScc.md) + - [BaseConnectionInfoKafka](docs/BaseConnectionInfoKafka.md) + - [BaseConnectionInfoMcm](docs/BaseConnectionInfoMcm.md) + - [BaseConnectionInfoMicrosoftSentinel](docs/BaseConnectionInfoMicrosoftSentinel.md) + - [BaseConnectionInfoQradar](docs/BaseConnectionInfoQradar.md) + - [BaseConnectionInfoSplunk](docs/BaseConnectionInfoSplunk.md) + - [BaseConnectionInfoSyslog](docs/BaseConnectionInfoSyslog.md) + - [BaseConnectionInfoWebhook](docs/BaseConnectionInfoWebhook.md) + - [BaseContent](docs/BaseContent.md) + - [BaseImage](docs/BaseImage.md) + - [BaseIntegrationPayload](docs/BaseIntegrationPayload.md) + - [BaseMonitorEvent](docs/BaseMonitorEvent.md) + - [BaseRiskAcceptedPayload](docs/BaseRiskAcceptedPayload.md) + - [BaseRiskAcceptedResponsePayload](docs/BaseRiskAcceptedResponsePayload.md) + - [BucketConfigurationV1](docs/BucketConfigurationV1.md) + - [Bundle](docs/Bundle.md) + - [BundleRef](docs/BundleRef.md) + - [BundleRule](docs/BundleRule.md) + - [BundleRulePredicatesInner](docs/BundleRulePredicatesInner.md) + - [CaptureAction](docs/CaptureAction.md) + - [CaptureStorageConfigurationResponseV1](docs/CaptureStorageConfigurationResponseV1.md) + - [Category](docs/Category.md) + - [Certificate](docs/Certificate.md) + - [CertificateValidity](docs/CertificateValidity.md) + - [CertificatesResponse](docs/CertificatesResponse.md) + - [CheckboxFieldValueV1](docs/CheckboxFieldValueV1.md) + - [ChronicleCreateConnectionInfo](docs/ChronicleCreateConnectionInfo.md) + - [ChronicleUpdateConnectionInfo](docs/ChronicleUpdateConnectionInfo.md) + - [CisaKevAvailableSince](docs/CisaKevAvailableSince.md) + - [CisaKevKnownRansomwareCampaignUse](docs/CisaKevKnownRansomwareCampaignUse.md) + - [CisaKevPublishDate](docs/CisaKevPublishDate.md) + - [CisaKevPublishDateExtra](docs/CisaKevPublishDateExtra.md) + - [Command](docs/Command.md) + - [CompositionsInner](docs/CompositionsInner.md) + - [Connection](docs/Connection.md) + - [ContainerInfo](docs/ContainerInfo.md) + - [ContainerKilledAction](docs/ContainerKilledAction.md) + - [ContainerPausedAction](docs/ContainerPausedAction.md) + - [ContainerStoppedAction](docs/ContainerStoppedAction.md) + - [Context](docs/Context.md) + - [CreateAccessKeyRequestV1](docs/CreateAccessKeyRequestV1.md) + - [CreateAmazonSqsIntegrationRequest](docs/CreateAmazonSqsIntegrationRequest.md) + - [CreateBundleRequest](docs/CreateBundleRequest.md) + - [CreateChronicleIntegrationConnInfo](docs/CreateChronicleIntegrationConnInfo.md) + - [CreateChronicleIntegrationConnInfoV2](docs/CreateChronicleIntegrationConnInfoV2.md) + - [CreateChronicleIntegrationRequest](docs/CreateChronicleIntegrationRequest.md) + - [CreateCustomWebhookNotificationChannelRequestV1](docs/CreateCustomWebhookNotificationChannelRequestV1.md) + - [CreateElasticsearchIntegrationRequest](docs/CreateElasticsearchIntegrationRequest.md) + - [CreateElasticsearchIntegrationRequestAllOfConnectionInfo](docs/CreateElasticsearchIntegrationRequestAllOfConnectionInfo.md) + - [CreateEmailNotificationChannelRequestV1](docs/CreateEmailNotificationChannelRequestV1.md) + - [CreateGchatNotificationChannelRequestV1](docs/CreateGchatNotificationChannelRequestV1.md) + - [CreateGlobalServiceAccountRequestV1](docs/CreateGlobalServiceAccountRequestV1.md) + - [CreateGooglePubSubIntegrationRequest](docs/CreateGooglePubSubIntegrationRequest.md) + - [CreateGoogleSccIntegrationRequest](docs/CreateGoogleSccIntegrationRequest.md) + - [CreateGroupMappingRequestV1](docs/CreateGroupMappingRequestV1.md) + - [CreateIbmEventNotificationsNotificationChannelRequestV1](docs/CreateIbmEventNotificationsNotificationChannelRequestV1.md) + - [CreateInhibitionRuleRequestV1](docs/CreateInhibitionRuleRequestV1.md) + - [CreateIntegrationRequest](docs/CreateIntegrationRequest.md) + - [CreateIntegrationRequestV1](docs/CreateIntegrationRequestV1.md) + - [CreateIpFilterV1](docs/CreateIpFilterV1.md) + - [CreateIssueTypeRequestV1](docs/CreateIssueTypeRequestV1.md) + - [CreateKafkaIntegrationRequest](docs/CreateKafkaIntegrationRequest.md) + - [CreateKafkaIntegrationRequestAllOfConnectionInfo](docs/CreateKafkaIntegrationRequestAllOfConnectionInfo.md) + - [CreateMcmIntegrationRequest](docs/CreateMcmIntegrationRequest.md) + - [CreateMicrosoftSentinelIntegrationRequest](docs/CreateMicrosoftSentinelIntegrationRequest.md) + - [CreateMsTeamsNotificationChannelRequestV1](docs/CreateMsTeamsNotificationChannelRequestV1.md) + - [CreateNotificationChannelRequestV1](docs/CreateNotificationChannelRequestV1.md) + - [CreateOpsgenieNotificationChannelRequestV1](docs/CreateOpsgenieNotificationChannelRequestV1.md) + - [CreatePagerDutyNotificationChannelRequestV1](docs/CreatePagerDutyNotificationChannelRequestV1.md) + - [CreatePolicyRequest](docs/CreatePolicyRequest.md) + - [CreatePricingRequestV1](docs/CreatePricingRequestV1.md) + - [CreatePrometheusAlertManagerNotificationChannelRequestV1](docs/CreatePrometheusAlertManagerNotificationChannelRequestV1.md) + - [CreateQradarIntegrationRequest](docs/CreateQradarIntegrationRequest.md) + - [CreateRiskAcceptedRequest](docs/CreateRiskAcceptedRequest.md) + - [CreateRiskAcceptedRequestAllOfContext](docs/CreateRiskAcceptedRequestAllOfContext.md) + - [CreateServiceAccountRequestV1](docs/CreateServiceAccountRequestV1.md) + - [CreateServiceAccountsNotificationSettingsRequestV1](docs/CreateServiceAccountsNotificationSettingsRequestV1.md) + - [CreateSlackNotificationChannelRequestV1](docs/CreateSlackNotificationChannelRequestV1.md) + - [CreateSnsNotificationChannelRequestV1](docs/CreateSnsNotificationChannelRequestV1.md) + - [CreateSplunkIntegrationRequest](docs/CreateSplunkIntegrationRequest.md) + - [CreateSsoSettingsRequestV1](docs/CreateSsoSettingsRequestV1.md) + - [CreateSyslogIntegrationRequest](docs/CreateSyslogIntegrationRequest.md) + - [CreateTeamEmailNotificationChannelRequestV1](docs/CreateTeamEmailNotificationChannelRequestV1.md) + - [CreateTeamRequestV1](docs/CreateTeamRequestV1.md) + - [CreateTeamServiceAccountRequestV1](docs/CreateTeamServiceAccountRequestV1.md) + - [CreateUserRequestV1](docs/CreateUserRequestV1.md) + - [CreateVictorOpsNotificationChannelRequestV1](docs/CreateVictorOpsNotificationChannelRequestV1.md) + - [CreateWebhookIntegrationRequest](docs/CreateWebhookIntegrationRequest.md) + - [CreateWebhookIntegrationRequestAllOfConnectionInfo](docs/CreateWebhookIntegrationRequestAllOfConnectionInfo.md) + - [CreateWebhookNotificationChannelRequestV1](docs/CreateWebhookNotificationChannelRequestV1.md) + - [CreateZoneRequestV1](docs/CreateZoneRequestV1.md) + - [CreateZoneScopeRequestV1](docs/CreateZoneScopeRequestV1.md) + - [CustomJobV1](docs/CustomJobV1.md) + - [CustomJobsEnablementV1](docs/CustomJobsEnablementV1.md) + - [CustomMonitorEvent](docs/CustomMonitorEvent.md) + - [CustomWebhookNotificationChannelOptionsV1](docs/CustomWebhookNotificationChannelOptionsV1.md) + - [CustomWebhookNotificationChannelResponseV1](docs/CustomWebhookNotificationChannelResponseV1.md) + - [CvssScore](docs/CvssScore.md) + - [DateRange](docs/DateRange.md) + - [DenyCve](docs/DenyCve.md) + - [DenyCveExtra](docs/DenyCveExtra.md) + - [DenyPkg](docs/DenyPkg.md) + - [DenyPkgExtra](docs/DenyPkgExtra.md) + - [DenyPkgExtraPackagesInner](docs/DenyPkgExtraPackagesInner.md) + - [Dependency](docs/Dependency.md) + - [DisableJobsAndMetricsV1](docs/DisableJobsAndMetricsV1.md) + - [DisableMetricV1](docs/DisableMetricV1.md) + - [DriftPreventedAction](docs/DriftPreventedAction.md) + - [EmailNotificationChannelOptionsV1](docs/EmailNotificationChannelOptionsV1.md) + - [EmailNotificationChannelResponseV1](docs/EmailNotificationChannelResponseV1.md) + - [EntityDefinition](docs/EntityDefinition.md) + - [EntityDefinitionDefinition](docs/EntityDefinitionDefinition.md) + - [EntriesResponse](docs/EntriesResponse.md) + - [EntriesResponseDataInner](docs/EntriesResponseDataInner.md) + - [Entry](docs/Entry.md) + - [EntryPointModuleV1](docs/EntryPointModuleV1.md) + - [EntryPointV1](docs/EntryPointV1.md) + - [EntryResponse](docs/EntryResponse.md) + - [Error](docs/Error.md) + - [Event](docs/Event.md) + - [EventContent](docs/EventContent.md) + - [EventContentType](docs/EventContentType.md) + - [EventsFeedPage](docs/EventsFeedPage.md) + - [Exploit](docs/Exploit.md) + - [Failure](docs/Failure.md) + - [Fileaccess](docs/Fileaccess.md) + - [GchatNotificationChannelOptionsV1](docs/GchatNotificationChannelOptionsV1.md) + - [GchatNotificationChannelResponseV1](docs/GchatNotificationChannelResponseV1.md) + - [GetAccessKeysPaginatedResponseV1](docs/GetAccessKeysPaginatedResponseV1.md) + - [GetAmazonSqsIntegrationResponse](docs/GetAmazonSqsIntegrationResponse.md) + - [GetBundleResponse](docs/GetBundleResponse.md) + - [GetChronicleIntegrationResponse](docs/GetChronicleIntegrationResponse.md) + - [GetChronicleIntegrationResponseAllOfConnectionInfo](docs/GetChronicleIntegrationResponseAllOfConnectionInfo.md) + - [GetCustomJobsPaginatedResponseV1](docs/GetCustomJobsPaginatedResponseV1.md) + - [GetElasticsearchIntegrationResponse](docs/GetElasticsearchIntegrationResponse.md) + - [GetGooglePubSubIntegrationResponse](docs/GetGooglePubSubIntegrationResponse.md) + - [GetGoogleSccIntegrationResponse](docs/GetGoogleSccIntegrationResponse.md) + - [GetInhibitionRulesPaginatedResponseV1](docs/GetInhibitionRulesPaginatedResponseV1.md) + - [GetKafkaIntegrationResponse](docs/GetKafkaIntegrationResponse.md) + - [GetKafkaIntegrationResponseAllOfConnectionInfo](docs/GetKafkaIntegrationResponseAllOfConnectionInfo.md) + - [GetMcmIntegrationResponse](docs/GetMcmIntegrationResponse.md) + - [GetMicrosoftSentinelIntegrationResponse](docs/GetMicrosoftSentinelIntegrationResponse.md) + - [GetNotificationChannelsPaginatedResponseV1](docs/GetNotificationChannelsPaginatedResponseV1.md) + - [GetPermissionsResponseV1](docs/GetPermissionsResponseV1.md) + - [GetPolicyResponse](docs/GetPolicyResponse.md) + - [GetPricingPaginatedResponseV1](docs/GetPricingPaginatedResponseV1.md) + - [GetPricingProjectedPaginatedResponseV1](docs/GetPricingProjectedPaginatedResponseV1.md) + - [GetQradarIntegrationResponse](docs/GetQradarIntegrationResponse.md) + - [GetQueryRangeV1StepParameter](docs/GetQueryRangeV1StepParameter.md) + - [GetQueryV1401Response](docs/GetQueryV1401Response.md) + - [GetRolesPaginatedResponseV1](docs/GetRolesPaginatedResponseV1.md) + - [GetServiceAccountsPaginatedResponseV1](docs/GetServiceAccountsPaginatedResponseV1.md) + - [GetSplunkIntegrationResponse](docs/GetSplunkIntegrationResponse.md) + - [GetSyslogIntegrationResponse](docs/GetSyslogIntegrationResponse.md) + - [GetTeamUsersPaginatedResponseV1](docs/GetTeamUsersPaginatedResponseV1.md) + - [GetTeamsPaginatedResponseV1](docs/GetTeamsPaginatedResponseV1.md) + - [GetUsersPaginatedResponseV1](docs/GetUsersPaginatedResponseV1.md) + - [GetWebhookIntegrationResponse](docs/GetWebhookIntegrationResponse.md) + - [GlobalSsoSettingsRequestV1](docs/GlobalSsoSettingsRequestV1.md) + - [GlobalSsoSettingsResponseV1](docs/GlobalSsoSettingsResponseV1.md) + - [GooglePubSubCreateConnectionInfo](docs/GooglePubSubCreateConnectionInfo.md) + - [GooglePubSubCreateConnectionInfo1](docs/GooglePubSubCreateConnectionInfo1.md) + - [GoogleSCCCreateConnectionInfo](docs/GoogleSCCCreateConnectionInfo.md) + - [GoogleSCCCreateConnectionInfo1](docs/GoogleSCCCreateConnectionInfo1.md) + - [GroupMappingResponseV1](docs/GroupMappingResponseV1.md) + - [GroupMappingSettingsV1](docs/GroupMappingSettingsV1.md) + - [GroupMappingsPaginatedResponseV1](docs/GroupMappingsPaginatedResponseV1.md) + - [GssapiConnectionInfoKafka](docs/GssapiConnectionInfoKafka.md) + - [HostMetadata](docs/HostMetadata.md) + - [HostName](docs/HostName.md) + - [HostNameContains](docs/HostNameContains.md) + - [IBMMulticloudCloudCreateConnectionInfo](docs/IBMMulticloudCloudCreateConnectionInfo.md) + - [IBMMulticloudCloudCreateConnectionInfo1](docs/IBMMulticloudCloudCreateConnectionInfo1.md) + - [IbmEventNotificationsNotificationChannelOptionsV1](docs/IbmEventNotificationsNotificationChannelOptionsV1.md) + - [IbmEventNotificationsNotificationChannelResponseV1](docs/IbmEventNotificationsNotificationChannelResponseV1.md) + - [Image](docs/Image.md) + - [ImageConfigCreationDateWithAge](docs/ImageConfigCreationDateWithAge.md) + - [ImageConfigCreationDateWithAgeExtra](docs/ImageConfigCreationDateWithAgeExtra.md) + - [ImageConfigDefaultUserIsNot](docs/ImageConfigDefaultUserIsNot.md) + - [ImageConfigDefaultUserIsNotExtra](docs/ImageConfigDefaultUserIsNotExtra.md) + - [ImageConfigDefaultUserIsRoot](docs/ImageConfigDefaultUserIsRoot.md) + - [ImageConfigDefaultUserList](docs/ImageConfigDefaultUserList.md) + - [ImageConfigDefaultUserListExtra](docs/ImageConfigDefaultUserListExtra.md) + - [ImageConfigEnvVariableContains](docs/ImageConfigEnvVariableContains.md) + - [ImageConfigEnvVariableContainsExtra](docs/ImageConfigEnvVariableContainsExtra.md) + - [ImageConfigEnvVariableExists](docs/ImageConfigEnvVariableExists.md) + - [ImageConfigEnvVariableExistsExtra](docs/ImageConfigEnvVariableExistsExtra.md) + - [ImageConfigEnvVariableNotExists](docs/ImageConfigEnvVariableNotExists.md) + - [ImageConfigFailure](docs/ImageConfigFailure.md) + - [ImageConfigInstructionIsPkgManager](docs/ImageConfigInstructionIsPkgManager.md) + - [ImageConfigInstructionNotRecommended](docs/ImageConfigInstructionNotRecommended.md) + - [ImageConfigLabelExists](docs/ImageConfigLabelExists.md) + - [ImageConfigLabelExistsExtra](docs/ImageConfigLabelExistsExtra.md) + - [ImageConfigLabelNotContains](docs/ImageConfigLabelNotContains.md) + - [ImageConfigLabelNotContainsExtra](docs/ImageConfigLabelNotContainsExtra.md) + - [ImageConfigLabelNotExists](docs/ImageConfigLabelNotExists.md) + - [ImageConfigLabelNotExistsExtra](docs/ImageConfigLabelNotExistsExtra.md) + - [ImageConfigSensitiveInformationAndSecrets](docs/ImageConfigSensitiveInformationAndSecrets.md) + - [ImageMetadata](docs/ImageMetadata.md) + - [ImageName](docs/ImageName.md) + - [ImageNameContains](docs/ImageNameContains.md) + - [ImagePrefix](docs/ImagePrefix.md) + - [ImageSuffix](docs/ImageSuffix.md) + - [InhibitionRuleResponseV1](docs/InhibitionRuleResponseV1.md) + - [IntegrationChannel](docs/IntegrationChannel.md) + - [IntegrationChannelsResponse](docs/IntegrationChannelsResponse.md) + - [IntegrationResponse](docs/IntegrationResponse.md) + - [IntegrationResponseV1](docs/IntegrationResponseV1.md) + - [IntegrationType](docs/IntegrationType.md) + - [IntegrationTypesResponse](docs/IntegrationTypesResponse.md) + - [InvalidCertificate](docs/InvalidCertificate.md) + - [InvalidRequest](docs/InvalidRequest.md) + - [InvalidRequest1](docs/InvalidRequest1.md) + - [InventoryPage](docs/InventoryPage.md) + - [InventoryResource](docs/InventoryResource.md) + - [InventoryResourceExtended](docs/InventoryResourceExtended.md) + - [InventoryResourceResponse](docs/InventoryResourceResponse.md) + - [InventoryZone](docs/InventoryZone.md) + - [IpFilterResponseV1](docs/IpFilterResponseV1.md) + - [IpFiltersPaginatedResponseV1](docs/IpFiltersPaginatedResponseV1.md) + - [IpFiltersSettingsV1](docs/IpFiltersSettingsV1.md) + - [IssueTypeFieldResponseV1](docs/IssueTypeFieldResponseV1.md) + - [IssueTypeFieldResponseV1AllowedValuesInner](docs/IssueTypeFieldResponseV1AllowedValuesInner.md) + - [IssueTypeResponseV1](docs/IssueTypeResponseV1.md) + - [IssueTypesResponseV1](docs/IssueTypesResponseV1.md) + - [JobResponse](docs/JobResponse.md) + - [K8sAdmissionReviewContent](docs/K8sAdmissionReviewContent.md) + - [K8sAdmissionReviewContentAllOfScanResult](docs/K8sAdmissionReviewContentAllOfScanResult.md) + - [KafkaPlaintext](docs/KafkaPlaintext.md) + - [KafkaTlsEncrypted](docs/KafkaTlsEncrypted.md) + - [KeyValueObject](docs/KeyValueObject.md) + - [Kubernetes](docs/Kubernetes.md) + - [LabelMatcherV1](docs/LabelMatcherV1.md) + - [LabelValuesResponseV1](docs/LabelValuesResponseV1.md) + - [LabelsResponseV1](docs/LabelsResponseV1.md) + - [Layer](docs/Layer.md) + - [ListAuditEventsResponse](docs/ListAuditEventsResponse.md) + - [ListBundlesResponse](docs/ListBundlesResponse.md) + - [ListEventsResponse](docs/ListEventsResponse.md) + - [ListIntegrationsResponse](docs/ListIntegrationsResponse.md) + - [ListJobAndDisabledMetricsV1](docs/ListJobAndDisabledMetricsV1.md) + - [ListJobs](docs/ListJobs.md) + - [ListMonitorEventsResponse](docs/ListMonitorEventsResponse.md) + - [ListPoliciesResponse](docs/ListPoliciesResponse.md) + - [ListRiskAcceptedResponse](docs/ListRiskAcceptedResponse.md) + - [ListRiskAcceptedResponseAllOfData](docs/ListRiskAcceptedResponseAllOfData.md) + - [ListSchedules](docs/ListSchedules.md) + - [ListZonesResponseV1](docs/ListZonesResponseV1.md) + - [ListZonesResponseV1AllOfData](docs/ListZonesResponseV1AllOfData.md) + - [MalwarePreventedAction](docs/MalwarePreventedAction.md) + - [MetadataResponseV1](docs/MetadataResponseV1.md) + - [MetadataResponseV1DataValueInner](docs/MetadataResponseV1DataValueInner.md) + - [MetricErrorV1](docs/MetricErrorV1.md) + - [MetricV1](docs/MetricV1.md) + - [MicrosoftSentinelCreateConnectionInfo](docs/MicrosoftSentinelCreateConnectionInfo.md) + - [MicrosoftSentinelUpdateConnectionInfo](docs/MicrosoftSentinelUpdateConnectionInfo.md) + - [MonitorEvent](docs/MonitorEvent.md) + - [MonitorEventsPage](docs/MonitorEventsPage.md) + - [MonitorScopeLabel](docs/MonitorScopeLabel.md) + - [MsTeamsNotificationChannelOptionsV1](docs/MsTeamsNotificationChannelOptionsV1.md) + - [MsTeamsNotificationChannelResponseV1](docs/MsTeamsNotificationChannelResponseV1.md) + - [NewRule](docs/NewRule.md) + - [NewStage](docs/NewStage.md) + - [NotificationChannel](docs/NotificationChannel.md) + - [NotificationChannelOptionsV1](docs/NotificationChannelOptionsV1.md) + - [NotificationChannelResponseV1](docs/NotificationChannelResponseV1.md) + - [NotificationChannelTypeV1](docs/NotificationChannelTypeV1.md) + - [NotificationChannelV1](docs/NotificationChannelV1.md) + - [OffsetPaginatedResponse](docs/OffsetPaginatedResponse.md) + - [OffsetPaginatedResponsePage](docs/OffsetPaginatedResponsePage.md) + - [OpenIdBaseV1](docs/OpenIdBaseV1.md) + - [OpenIdConfigResponseV1](docs/OpenIdConfigResponseV1.md) + - [OpenIdCreateRequestV1](docs/OpenIdCreateRequestV1.md) + - [OpenIdMetadataV1](docs/OpenIdMetadataV1.md) + - [OpenIdRequestBaseV1](docs/OpenIdRequestBaseV1.md) + - [OpenIdUpdateRequestV1](docs/OpenIdUpdateRequestV1.md) + - [Operand](docs/Operand.md) + - [OpsgenieNotificationChannelOptionsV1](docs/OpsgenieNotificationChannelOptionsV1.md) + - [OpsgenieNotificationChannelResponseV1](docs/OpsgenieNotificationChannelResponseV1.md) + - [Originator](docs/Originator.md) + - [Package](docs/Package.md) + - [PackageName](docs/PackageName.md) + - [PackageNameVersion](docs/PackageNameVersion.md) + - [PackagePath](docs/PackagePath.md) + - [PackagePathVersion](docs/PackagePathVersion.md) + - [PackageVersion](docs/PackageVersion.md) + - [Page](docs/Page.md) + - [PagerDutyNotificationChannelOptionsV1](docs/PagerDutyNotificationChannelOptionsV1.md) + - [PagerDutyNotificationChannelResponseV1](docs/PagerDutyNotificationChannelResponseV1.md) + - [PaginatedIntegrationsResponseV1](docs/PaginatedIntegrationsResponseV1.md) + - [PermissionV1](docs/PermissionV1.md) + - [PipelineResult](docs/PipelineResult.md) + - [PipelineResultsResponse](docs/PipelineResultsResponse.md) + - [PkgVulnFailure](docs/PkgVulnFailure.md) + - [Policies](docs/Policies.md) + - [PoliciesPage](docs/PoliciesPage.md) + - [PoliciesSummaryEntry](docs/PoliciesSummaryEntry.md) + - [PolicyEvaluation](docs/PolicyEvaluation.md) + - [PolicyEvaluationResult](docs/PolicyEvaluationResult.md) + - [PolicyOrigin](docs/PolicyOrigin.md) + - [PolicySummary](docs/PolicySummary.md) + - [PosturePolicySummary](docs/PosturePolicySummary.md) + - [Predicate](docs/Predicate.md) + - [PredicatesInner](docs/PredicatesInner.md) + - [PricingProjectedResponseV1](docs/PricingProjectedResponseV1.md) + - [PricingResponseV1](docs/PricingResponseV1.md) + - [PricingType](docs/PricingType.md) + - [PrivateConnectionInfoAmazonSqs](docs/PrivateConnectionInfoAmazonSqs.md) + - [PrivateConnectionInfoChronicle](docs/PrivateConnectionInfoChronicle.md) + - [PrivateConnectionInfoChronicleV2](docs/PrivateConnectionInfoChronicleV2.md) + - [PrivateConnectionInfoElasticsearch](docs/PrivateConnectionInfoElasticsearch.md) + - [PrivateConnectionInfoGooglePubSub](docs/PrivateConnectionInfoGooglePubSub.md) + - [PrivateConnectionInfoGoogleScc](docs/PrivateConnectionInfoGoogleScc.md) + - [PrivateConnectionInfoKafka](docs/PrivateConnectionInfoKafka.md) + - [PrivateConnectionInfoMcm](docs/PrivateConnectionInfoMcm.md) + - [PrivateConnectionInfoMicrosoftSentinel](docs/PrivateConnectionInfoMicrosoftSentinel.md) + - [PrivateConnectionInfoSplunk](docs/PrivateConnectionInfoSplunk.md) + - [PrivateConnectionInfoWebhook](docs/PrivateConnectionInfoWebhook.md) + - [ProcessKilledAction](docs/ProcessKilledAction.md) + - [Producer](docs/Producer.md) + - [Product](docs/Product.md) + - [PrometheusAlertManagerNotificationChannelOptionsV1](docs/PrometheusAlertManagerNotificationChannelOptionsV1.md) + - [PrometheusAlertManagerNotificationChannelResponseV1](docs/PrometheusAlertManagerNotificationChannelResponseV1.md) + - [PrometheusError](docs/PrometheusError.md) + - [PromqlMatcher](docs/PromqlMatcher.md) + - [QueryResponse](docs/QueryResponse.md) + - [QueryResponseEntities](docs/QueryResponseEntities.md) + - [QueryResponseV1](docs/QueryResponseV1.md) + - [QueryResponseV1Data](docs/QueryResponseV1Data.md) + - [QueryResponseV1DataResult](docs/QueryResponseV1DataResult.md) + - [QueryResponseV1DataResultAnyOfInner](docs/QueryResponseV1DataResultAnyOfInner.md) + - [QueryResponseV1DataResultAnyOfInner1](docs/QueryResponseV1DataResultAnyOfInner1.md) + - [QueryResponseV1DataResultAnyOfInner2](docs/QueryResponseV1DataResultAnyOfInner2.md) + - [QuerySummary](docs/QuerySummary.md) + - [QuerySysqlPostRequest](docs/QuerySysqlPostRequest.md) + - [QueryTime](docs/QueryTime.md) + - [RegistryResult](docs/RegistryResult.md) + - [RegistryResultsResponse](docs/RegistryResultsResponse.md) + - [RequestBodyDisabledMetricsV1](docs/RequestBodyDisabledMetricsV1.md) + - [ResponderType](docs/ResponderType.md) + - [ResponseAction](docs/ResponseAction.md) + - [ResponseListDisabledMetricsAndErrorV1](docs/ResponseListDisabledMetricsAndErrorV1.md) + - [ResponseListDisabledMetricsV1](docs/ResponseListDisabledMetricsV1.md) + - [RiskAcceptanceDefinition](docs/RiskAcceptanceDefinition.md) + - [RiskAcceptedResponse](docs/RiskAcceptedResponse.md) + - [RiskAcceptedResponseAllOfContext](docs/RiskAcceptedResponseAllOfContext.md) + - [RoleRequestV1](docs/RoleRequestV1.md) + - [RoleResponseV1](docs/RoleResponseV1.md) + - [Rule](docs/Rule.md) + - [RuleFailuresInner](docs/RuleFailuresInner.md) + - [RulesResponseV1](docs/RulesResponseV1.md) + - [RulesResponseV1Data](docs/RulesResponseV1Data.md) + - [RulesResponseV1DataGroupsInner](docs/RulesResponseV1DataGroupsInner.md) + - [RulesResponseV1DataGroupsInnerRulesInner](docs/RulesResponseV1DataGroupsInnerRulesInner.md) + - [RulesResponseV1DataGroupsInnerRulesInnerAlertsInner](docs/RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.md) + - [RuntimeResult](docs/RuntimeResult.md) + - [RuntimeResultsResponse](docs/RuntimeResultsResponse.md) + - [SamlBaseV1](docs/SamlBaseV1.md) + - [SamlCreateRequestV1](docs/SamlCreateRequestV1.md) + - [SamlResponseV1](docs/SamlResponseV1.md) + - [SamlUpdateRequestV1](docs/SamlUpdateRequestV1.md) + - [SaveCaptureStorageConfigurationRequestV1](docs/SaveCaptureStorageConfigurationRequestV1.md) + - [SaveTeamUserRequestV1](docs/SaveTeamUserRequestV1.md) + - [SbomComponent](docs/SbomComponent.md) + - [SbomResultResponse](docs/SbomResultResponse.md) + - [ScanResultResponse](docs/ScanResultResponse.md) + - [ScanResultResponseMetadata](docs/ScanResultResponseMetadata.md) + - [ScheduleResponse](docs/ScheduleResponse.md) + - [ScopeTypeV1](docs/ScopeTypeV1.md) + - [ScopeV1](docs/ScopeV1.md) + - [SequenceInner](docs/SequenceInner.md) + - [SeriesResponseV1](docs/SeriesResponseV1.md) + - [ServiceAccountResponseV1](docs/ServiceAccountResponseV1.md) + - [ServiceAccountWithKeyResponseV1](docs/ServiceAccountWithKeyResponseV1.md) + - [ServiceAccountsNotificationSettingsResponseV1](docs/ServiceAccountsNotificationSettingsResponseV1.md) + - [ServiceAccountsNotificationSettinsBase](docs/ServiceAccountsNotificationSettinsBase.md) + - [Services](docs/Services.md) + - [ServicesResponse](docs/ServicesResponse.md) + - [SlackBaseNotificationChannelOptionsV1](docs/SlackBaseNotificationChannelOptionsV1.md) + - [SlackCreateNotificationChannelOptionsV1](docs/SlackCreateNotificationChannelOptionsV1.md) + - [SlackNotificationChannelResponseV1](docs/SlackNotificationChannelResponseV1.md) + - [SlackReadNotificationChannelOptionsV1](docs/SlackReadNotificationChannelOptionsV1.md) + - [SlackUpdateNotificationChannelOptionsV1](docs/SlackUpdateNotificationChannelOptionsV1.md) + - [SnsNotificationChannelOptionsV1](docs/SnsNotificationChannelOptionsV1.md) + - [SnsNotificationChannelResponseV1](docs/SnsNotificationChannelResponseV1.md) + - [Source](docs/Source.md) + - [SourceDetails](docs/SourceDetails.md) + - [SplunkCreateConnectionInfo](docs/SplunkCreateConnectionInfo.md) + - [SplunkUpdateConnectionInfo](docs/SplunkUpdateConnectionInfo.md) + - [SsoSettingsBaseSchemaV1](docs/SsoSettingsBaseSchemaV1.md) + - [SsoSettingsCreateRequestBaseV1](docs/SsoSettingsCreateRequestBaseV1.md) + - [SsoSettingsResponseBaseV1](docs/SsoSettingsResponseBaseV1.md) + - [SsoSettingsResponseV1](docs/SsoSettingsResponseV1.md) + - [SsoSettingsUpdateRequestBaseV1](docs/SsoSettingsUpdateRequestBaseV1.md) + - [SsoTypeV1](docs/SsoTypeV1.md) + - [Stage](docs/Stage.md) + - [StageConfiguration](docs/StageConfiguration.md) + - [StatefulDetectionsContent](docs/StatefulDetectionsContent.md) + - [StatefulDetectionsContentAllOfFields](docs/StatefulDetectionsContentAllOfFields.md) + - [StatsInner](docs/StatsInner.md) + - [SubmitActionExecutionRequest](docs/SubmitActionExecutionRequest.md) + - [SupportedFilter](docs/SupportedFilter.md) + - [SupportedFilterType](docs/SupportedFilterType.md) + - [SupportedFiltersResponse](docs/SupportedFiltersResponse.md) + - [TeamEmailNotificationChannelOptionsV1](docs/TeamEmailNotificationChannelOptionsV1.md) + - [TeamEmailNotificationChannelResponseV1](docs/TeamEmailNotificationChannelResponseV1.md) + - [TeamMapV1](docs/TeamMapV1.md) + - [TeamResponseV1](docs/TeamResponseV1.md) + - [TeamRoleV1](docs/TeamRoleV1.md) + - [TeamUserResponseV1](docs/TeamUserResponseV1.md) + - [TimeFrame](docs/TimeFrame.md) + - [Types](docs/Types.md) + - [UiSettingsV1](docs/UiSettingsV1.md) + - [UnitPricingV1](docs/UnitPricingV1.md) + - [UpdateAccessKeyRequestV1](docs/UpdateAccessKeyRequestV1.md) + - [UpdateAmazonSqsIntegrationRequest](docs/UpdateAmazonSqsIntegrationRequest.md) + - [UpdateChronicleIntegrationConnInfo](docs/UpdateChronicleIntegrationConnInfo.md) + - [UpdateChronicleIntegrationConnInfoV2](docs/UpdateChronicleIntegrationConnInfoV2.md) + - [UpdateChronicleIntegrationRequest](docs/UpdateChronicleIntegrationRequest.md) + - [UpdateCustomWebhookNotificationChannelRequestV1](docs/UpdateCustomWebhookNotificationChannelRequestV1.md) + - [UpdateElasticsearchIntegrationRequest](docs/UpdateElasticsearchIntegrationRequest.md) + - [UpdateElasticsearchIntegrationRequestAllOfConnectionInfo](docs/UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.md) + - [UpdateEmailNotificationChannelRequestV1](docs/UpdateEmailNotificationChannelRequestV1.md) + - [UpdateGchatNotificationChannelRequestV1](docs/UpdateGchatNotificationChannelRequestV1.md) + - [UpdateGooglePubSubIntegrationRequest](docs/UpdateGooglePubSubIntegrationRequest.md) + - [UpdateGoogleSccIntegrationRequest](docs/UpdateGoogleSccIntegrationRequest.md) + - [UpdateGroupMappingRequestV1](docs/UpdateGroupMappingRequestV1.md) + - [UpdateIbmEventNotificationsNotificationChannelRequestV1](docs/UpdateIbmEventNotificationsNotificationChannelRequestV1.md) + - [UpdateInhibitionRuleRequestV1](docs/UpdateInhibitionRuleRequestV1.md) + - [UpdateIntegrationRequest](docs/UpdateIntegrationRequest.md) + - [UpdateIntegrationRequestV1](docs/UpdateIntegrationRequestV1.md) + - [UpdateIpFilterV1](docs/UpdateIpFilterV1.md) + - [UpdateIssueTypeRequestV1](docs/UpdateIssueTypeRequestV1.md) + - [UpdateKafkaIntegrationRequest](docs/UpdateKafkaIntegrationRequest.md) + - [UpdateKafkaIntegrationRequestAllOfConnectionInfo](docs/UpdateKafkaIntegrationRequestAllOfConnectionInfo.md) + - [UpdateMcmIntegrationRequest](docs/UpdateMcmIntegrationRequest.md) + - [UpdateMicrosoftSentinelIntegrationRequest](docs/UpdateMicrosoftSentinelIntegrationRequest.md) + - [UpdateMsTeamsNotificationChannelRequestV1](docs/UpdateMsTeamsNotificationChannelRequestV1.md) + - [UpdateNotificationChannelRequestV1](docs/UpdateNotificationChannelRequestV1.md) + - [UpdateOpsgenieNotificationChannelRequestV1](docs/UpdateOpsgenieNotificationChannelRequestV1.md) + - [UpdatePagerDutyNotificationChannelRequestV1](docs/UpdatePagerDutyNotificationChannelRequestV1.md) + - [UpdatePricingRequestV1](docs/UpdatePricingRequestV1.md) + - [UpdatePrometheusAlertManagerNotificationChannelRequestV1](docs/UpdatePrometheusAlertManagerNotificationChannelRequestV1.md) + - [UpdateQradarIntegrationRequest](docs/UpdateQradarIntegrationRequest.md) + - [UpdateRiskAccepted](docs/UpdateRiskAccepted.md) + - [UpdateServiceAccountsNotificationSettingsRequestV1](docs/UpdateServiceAccountsNotificationSettingsRequestV1.md) + - [UpdateSlackNotificationChannelRequestV1](docs/UpdateSlackNotificationChannelRequestV1.md) + - [UpdateSnsNotificationChannelRequestV1](docs/UpdateSnsNotificationChannelRequestV1.md) + - [UpdateSplunkIntegrationRequest](docs/UpdateSplunkIntegrationRequest.md) + - [UpdateSsoSettingsRequestV1](docs/UpdateSsoSettingsRequestV1.md) + - [UpdateSyslogIntegrationRequest](docs/UpdateSyslogIntegrationRequest.md) + - [UpdateTeamEmailNotificationChannelRequestV1](docs/UpdateTeamEmailNotificationChannelRequestV1.md) + - [UpdateTeamRequestV1](docs/UpdateTeamRequestV1.md) + - [UpdateUserDeactivationConfigurationRequestV1](docs/UpdateUserDeactivationConfigurationRequestV1.md) + - [UpdateUserRequestV1](docs/UpdateUserRequestV1.md) + - [UpdateVictorOpsNotificationChannelRequestV1](docs/UpdateVictorOpsNotificationChannelRequestV1.md) + - [UpdateWebhookIntegrationRequest](docs/UpdateWebhookIntegrationRequest.md) + - [UpdateWebhookIntegrationRequestAllOfConnectionInfo](docs/UpdateWebhookIntegrationRequestAllOfConnectionInfo.md) + - [UpdateWebhookNotificationChannelRequestV1](docs/UpdateWebhookNotificationChannelRequestV1.md) + - [User](docs/User.md) + - [UserDeactivationConfigurationResponseV1](docs/UserDeactivationConfigurationResponseV1.md) + - [UserResponseV1](docs/UserResponseV1.md) + - [VictorOpsNotificationChannelOptionsV1](docs/VictorOpsNotificationChannelOptionsV1.md) + - [VictorOpsNotificationChannelResponseV1](docs/VictorOpsNotificationChannelResponseV1.md) + - [VulnAge](docs/VulnAge.md) + - [VulnAgeExtra](docs/VulnAgeExtra.md) + - [VulnCvss](docs/VulnCvss.md) + - [VulnCvssEquals](docs/VulnCvssEquals.md) + - [VulnCvssEqualsExtra](docs/VulnCvssEqualsExtra.md) + - [VulnCvssExtra](docs/VulnCvssExtra.md) + - [VulnDisclosureRange](docs/VulnDisclosureRange.md) + - [VulnDisclosureRangeExtra](docs/VulnDisclosureRangeExtra.md) + - [VulnEpssPercentileGte](docs/VulnEpssPercentileGte.md) + - [VulnEpssPercentileGteExtra](docs/VulnEpssPercentileGteExtra.md) + - [VulnEpssScoreGte](docs/VulnEpssScoreGte.md) + - [VulnEpssScoreGteExtra](docs/VulnEpssScoreGteExtra.md) + - [VulnExploitable](docs/VulnExploitable.md) + - [VulnExploitableNoAdmin](docs/VulnExploitableNoAdmin.md) + - [VulnExploitableNoUser](docs/VulnExploitableNoUser.md) + - [VulnExploitableViaNetwork](docs/VulnExploitableViaNetwork.md) + - [VulnExploitableWithAge](docs/VulnExploitableWithAge.md) + - [VulnExploitableWithAgeExtra](docs/VulnExploitableWithAgeExtra.md) + - [VulnIsFixable](docs/VulnIsFixable.md) + - [VulnIsFixableWithAge](docs/VulnIsFixableWithAge.md) + - [VulnIsFixableWithAgeExtra](docs/VulnIsFixableWithAgeExtra.md) + - [VulnIsInUse](docs/VulnIsInUse.md) + - [VulnPkgType](docs/VulnPkgType.md) + - [VulnPkgTypeExtra](docs/VulnPkgTypeExtra.md) + - [VulnSeverity](docs/VulnSeverity.md) + - [VulnSeverityEquals](docs/VulnSeverityEquals.md) + - [VulnSeverityExtra](docs/VulnSeverityExtra.md) + - [VulnTotalBySeverity](docs/VulnTotalBySeverity.md) + - [Vulnerability](docs/Vulnerability.md) + - [VulnerabilityManagementPage](docs/VulnerabilityManagementPage.md) + - [VulnerabilitySummary](docs/VulnerabilitySummary.md) + - [WastedWorkloadDataRequest](docs/WastedWorkloadDataRequest.md) + - [WastedWorkloadSpendDataResponse](docs/WastedWorkloadSpendDataResponse.md) + - [WastedWorkloadSpendDataResponseGroupByDataInner](docs/WastedWorkloadSpendDataResponseGroupByDataInner.md) + - [WastedWorkloadSpendDataResponseTotal](docs/WastedWorkloadSpendDataResponseTotal.md) + - [WebhookNotificationChannelOptionsV1](docs/WebhookNotificationChannelOptionsV1.md) + - [WebhookNotificationChannelResponseV1](docs/WebhookNotificationChannelResponseV1.md) + - [WorkloadCostTrendsDataRequest](docs/WorkloadCostTrendsDataRequest.md) + - [WorkloadCostTrendsDataResponse](docs/WorkloadCostTrendsDataResponse.md) + - [WorkloadCostTrendsDataResponseGroupByDataInner](docs/WorkloadCostTrendsDataResponseGroupByDataInner.md) + - [WorkloadCostTrendsDataResponseTotal](docs/WorkloadCostTrendsDataResponseTotal.md) + - [WorkloadMlRuntimeDetectionContent](docs/WorkloadMlRuntimeDetectionContent.md) + - [WorkloadRightsizingDataRequest](docs/WorkloadRightsizingDataRequest.md) + - [WorkloadRightsizingDataResponse](docs/WorkloadRightsizingDataResponse.md) + - [WorkloadRightsizingDataResponseGroupByDataInner](docs/WorkloadRightsizingDataResponseGroupByDataInner.md) + - [WorkloadRuntimeDetectionContent](docs/WorkloadRuntimeDetectionContent.md) + - [WorkloadRuntimeDetectionContentAllOfFields](docs/WorkloadRuntimeDetectionContentAllOfFields.md) + - [Zone](docs/Zone.md) + - [ZoneResponseV1](docs/ZoneResponseV1.md) + - [ZoneScope](docs/ZoneScope.md) + + + +## Documentation For Authorization + + +Authentication schemes defined for the API: + +### bearerAuth + +- **Type**: Bearer authentication + + +## Author + +info@sysdig.com + + diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index 2a7f0151..00000000 --- a/docs/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SPHINXPROJ = sysdig-sdk-python -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - diff --git a/docs/conf.py b/docs/conf.py index 93f829e9..052c7f58 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -20,7 +20,7 @@ import sys from datetime import datetime -sys.path.insert(0, os.path.abspath('..')) +sys.path.insert(0, os.path.abspath("..")) # -- General configuration ------------------------------------------------ @@ -31,35 +31,43 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.autosectionlabel', 'sphinx.ext.graphviz', - 'sphinx.ext.inheritance_diagram', 'sphinx.ext.viewcode', 'sphinx.ext.autosummary', - 'sphinx.ext.githubpages', 'sphinx.ext.napoleon', 'sphinx_rtd_theme'] +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.autosectionlabel", + "sphinx.ext.graphviz", + "sphinx.ext.inheritance_diagram", + "sphinx.ext.viewcode", + "sphinx.ext.autosummary", + "sphinx.ext.githubpages", + "sphinx.ext.napoleon", + "sphinx_rtd_theme", +] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # # source_suffix = ['.rst', '.md'] -source_suffix = '.rst' +source_suffix = ".rst" # The master toctree document. -master_doc = 'index' +master_doc = "index" # General information about the project. -project = u'Sysdig SDK for Python' -copyright = f'2016-{datetime.now().year}, Sysdig Inc.' -author = u'Sysdig Inc.' +project = "Sysdig SDK for Python" +copyright = f"2016-{datetime.now().year}, Sysdig Inc." +author = "Sysdig Inc." # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = u'' +version = "" # The full version, including alpha/beta/rc tags. -release = u'' +release = "" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -71,10 +79,10 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = "sphinx" # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False @@ -84,7 +92,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'sphinx_rtd_theme' +html_theme = "sphinx_rtd_theme" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the @@ -100,7 +108,7 @@ # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. -htmlhelp_basename = 'python-sdc-clientdoc' +htmlhelp_basename = "python-sdc-clientdoc" # -- Options for LaTeX output --------------------------------------------- @@ -108,15 +116,12 @@ # The paper size ('letterpaper' or 'a4paper'). # # 'papersize': 'letterpaper', - # The font size ('10pt', '11pt' or '12pt'). # # 'pointsize': '10pt', - # Additional stuff for the LaTeX preamble. # # 'preamble': '', - # Latex figure (float) alignment # # 'figure_align': 'htbp', @@ -126,18 +131,14 @@ # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, 'python-sdc-client.tex', u'python-sdc-client Documentation', - u'Sysdig Inc.', 'manual'), + (master_doc, "python-sdc-client.tex", "python-sdc-client Documentation", "Sysdig Inc.", "manual"), ] # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'python-sdc-client', u'python-sdc-client Documentation', - [author], 1) -] +man_pages = [(master_doc, "python-sdc-client", "python-sdc-client Documentation", [author], 1)] # -- Options for Texinfo output ------------------------------------------- @@ -145,9 +146,15 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'python-sdc-client', u'python-sdc-client Documentation', - author, 'python-sdc-client', 'One line description of project.', - 'Miscellaneous'), + ( + master_doc, + "python-sdc-client", + "python-sdc-client Documentation", + author, + "python-sdc-client", + "One line description of project.", + "Miscellaneous", + ), ] # Napoleon settings diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index b196b981..00000000 --- a/docs/index.rst +++ /dev/null @@ -1,28 +0,0 @@ -Sysdig SDK for Python -===================== - -This module is a wrapper around the Sysdig Monitor/Sysdig Secure APIs. -It exposes most of the sysdig REST API functionality as an easy to use and easy to -install Python interface. - -Having troubles? We would like to help you! - -* Looking for specific information? Try the :ref:`genindex` -* Check out the `Sysdig Documentation`_. -* Ask a question in the `Sysdig Slack`_. - -.. _Sysdig Documentation: https://docs.sysdig.com -.. _Sysdig Slack: https://sysdig.slack.com - - -.. toctree:: - :caption: Quick start - - quickstart/install - quickstart/usage - -.. toctree:: - :caption: API Core Reference - - reference/monitor - reference/secure diff --git a/docs/reference/AccessKeyResponseV1.md b/docs/reference/AccessKeyResponseV1.md new file mode 100644 index 00000000..de04db59 --- /dev/null +++ b/docs/reference/AccessKeyResponseV1.md @@ -0,0 +1,38 @@ +# AccessKeyResponseV1 + +Access key response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**is_enabled** | **bool** | Indicates if the access key is enabled | [optional] +**access_key** | **str** | Displays the access key value | [optional] +**date_created** | **datetime** | Date and time when access key was created | [optional] +**date_disabled** | **datetime** | Date and time when access key was disabled | [optional] +**agent_limit** | **int** | Maximum number of agents that can be connected with the access key | [optional] +**agent_reservation** | **int** | Number of agents that are guaranteed to be available for the access key | [optional] +**team_id** | **int** | ID of team that owns the access key | [optional] +**metadata** | **Dict[str, str]** | Access key metadata (maximum of 20 key-value pairs where key can be up to 25 characters long and value can be up to 50 characters long) | [optional] + +## Example + +```python +from sysdig_client.models.access_key_response_v1 import AccessKeyResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of AccessKeyResponseV1 from a JSON string +access_key_response_v1_instance = AccessKeyResponseV1.from_json(json) +# print the JSON string representation of the object +print(AccessKeyResponseV1.to_json()) + +# convert the object into a dict +access_key_response_v1_dict = access_key_response_v1_instance.to_dict() +# create an instance of AccessKeyResponseV1 from a dict +access_key_response_v1_from_dict = AccessKeyResponseV1.from_dict(access_key_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AccessKeysApi.md b/docs/reference/AccessKeysApi.md new file mode 100644 index 00000000..a949567a --- /dev/null +++ b/docs/reference/AccessKeysApi.md @@ -0,0 +1,458 @@ +# sysdig_client.AccessKeysApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_access_key_v1**](AccessKeysApi.md#create_access_key_v1) | **POST** /platform/v1/access-keys | Create Access Key +[**delete_access_key_by_id_v1**](AccessKeysApi.md#delete_access_key_by_id_v1) | **DELETE** /platform/v1/access-keys/{accessKeyId} | Delete Access Key +[**get_access_key_by_id_v1**](AccessKeysApi.md#get_access_key_by_id_v1) | **GET** /platform/v1/access-keys/{accessKeyId} | Get Access Key +[**get_access_keys_v1**](AccessKeysApi.md#get_access_keys_v1) | **GET** /platform/v1/access-keys | List Access Keys +[**update_access_key_by_id_v1**](AccessKeysApi.md#update_access_key_by_id_v1) | **PUT** /platform/v1/access-keys/{accessKeyId} | Update Access Key + + +# **create_access_key_v1** +> AccessKeyResponseV1 create_access_key_v1(create_access_key_request_v1=create_access_key_request_v1) + +Create Access Key + +Create a new access key.\ +\ +**Required permissions:** _customer-access-keys.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.access_key_response_v1 import AccessKeyResponseV1 +from sysdig_client.models.create_access_key_request_v1 import CreateAccessKeyRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.AccessKeysApi(api_client) + create_access_key_request_v1 = sysdig_client.CreateAccessKeyRequestV1() # CreateAccessKeyRequestV1 | (optional) + + try: + # Create Access Key + api_response = api_instance.create_access_key_v1(create_access_key_request_v1=create_access_key_request_v1) + print("The response of AccessKeysApi->create_access_key_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling AccessKeysApi->create_access_key_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_access_key_request_v1** | [**CreateAccessKeyRequestV1**](CreateAccessKeyRequestV1.md)| | [optional] + +### Return type + +[**AccessKeyResponseV1**](AccessKeyResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Access key created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_access_key_by_id_v1** +> delete_access_key_by_id_v1(access_key_id) + +Delete Access Key + +Delete an access key by id.\ +\ +**Required permissions:** customer-access-keys.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.AccessKeysApi(api_client) + access_key_id = 56 # int | The access key id. + + try: + # Delete Access Key + api_instance.delete_access_key_by_id_v1(access_key_id) + except Exception as e: + print("Exception when calling AccessKeysApi->delete_access_key_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **access_key_id** | **int**| The access key id. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Access key deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_access_key_by_id_v1** +> AccessKeyResponseV1 get_access_key_by_id_v1(access_key_id) + +Get Access Key + +Return an access key by id.\ +\ +**Required permissions:** _customer-access-keys.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.access_key_response_v1 import AccessKeyResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.AccessKeysApi(api_client) + access_key_id = 56 # int | The access key id. + + try: + # Get Access Key + api_response = api_instance.get_access_key_by_id_v1(access_key_id) + print("The response of AccessKeysApi->get_access_key_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling AccessKeysApi->get_access_key_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **access_key_id** | **int**| The access key id. | + +### Return type + +[**AccessKeyResponseV1**](AccessKeyResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Access key found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_access_keys_v1** +> GetAccessKeysPaginatedResponseV1 get_access_keys_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + +List Access Keys + +Retrieve a paginated list of access keys.\ +\ +**Required permissions:** _customer-access-keys.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_access_keys_paginated_response_v1 import GetAccessKeysPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.AccessKeysApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + orderby = '' # str | The order by field separated by a colon for the direction (optional) (default to '') + filter = [] # List[str] | Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` (optional) (default to []) + + try: + # List Access Keys + api_response = api_instance.get_access_keys_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + print("The response of AccessKeysApi->get_access_keys_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling AccessKeysApi->get_access_keys_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **orderby** | **str**| The order by field separated by a colon for the direction | [optional] [default to ''] + **filter** | [**List[str]**](str.md)| Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` | [optional] [default to []] + +### Return type + +[**GetAccessKeysPaginatedResponseV1**](GetAccessKeysPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The access keys page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_access_key_by_id_v1** +> AccessKeyResponseV1 update_access_key_by_id_v1(access_key_id, update_access_key_request_v1=update_access_key_request_v1) + +Update Access Key + +Update an access key by id.\ +\ +**Required permissions:** _customer-access-keys.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.access_key_response_v1 import AccessKeyResponseV1 +from sysdig_client.models.update_access_key_request_v1 import UpdateAccessKeyRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.AccessKeysApi(api_client) + access_key_id = 56 # int | The access key id. + update_access_key_request_v1 = sysdig_client.UpdateAccessKeyRequestV1() # UpdateAccessKeyRequestV1 | (optional) + + try: + # Update Access Key + api_response = api_instance.update_access_key_by_id_v1(access_key_id, update_access_key_request_v1=update_access_key_request_v1) + print("The response of AccessKeysApi->update_access_key_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling AccessKeysApi->update_access_key_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **access_key_id** | **int**| The access key id. | + **update_access_key_request_v1** | [**UpdateAccessKeyRequestV1**](UpdateAccessKeyRequestV1.md)| | [optional] + +### Return type + +[**AccessKeyResponseV1**](AccessKeyResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Access key updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/Action.md b/docs/reference/Action.md new file mode 100644 index 00000000..d0002d9b --- /dev/null +++ b/docs/reference/Action.md @@ -0,0 +1,35 @@ +# Action + +Action performed when the event happened. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ActionType**](ActionType.md) | | +**is_successful** | **bool** | Whether or not the action was completed successfully. | [optional] +**err_msg** | **str** | When `isSuccessful` is `false`, details on why the action failed. | [optional] +**token** | **str** | Token to retrieve the related capture. | [optional] +**after_event_ns** | **int** | Amount of nanoseconds after the event the Capture spans. | [optional] +**before_event_ns** | **int** | Amount of nanoseconds before the event the Capture spans. | [optional] + +## Example + +```python +from sysdig_client.models.action import Action + +# TODO update the JSON string below +json = "{}" +# create an instance of Action from a JSON string +action_instance = Action.from_json(json) +# print the JSON string representation of the object +print(Action.to_json()) + +# convert the object into a dict +action_dict = action_instance.to_dict() +# create an instance of Action from a dict +action_from_dict = Action.from_dict(action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ActionExecution.md b/docs/reference/ActionExecution.md new file mode 100644 index 00000000..24953282 --- /dev/null +++ b/docs/reference/ActionExecution.md @@ -0,0 +1,42 @@ +# ActionExecution + +The submitted Response Action. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The ID of the Response Action. | +**caller_id** | **str** | The ID of the user that executed the Response action. | [optional] +**action_type** | **str** | The name of the Response Action to execute. It may be one of the following: - KILL_PROCESS - KILL_CONTAINER - STOP_CONTAINER - PAUSE_CONTAINER - FILE_QUARANTINE - FILE_ACQUIRE - UNPAUSE_CONTAINER - FILE_UNQUARANTINE - START_CONTAINER - DELETE_POD - ROLLOUT_RESTART - KUBERNETES_VOLUME_SNAPSHOT - KUBERNETES_DELETE_VOLUME_SNAPSHOT - GET_LOGS - ISOLATE_NETWORK - DELETE_NETWORK_POLICY The following actions serve as the undo for previous actions: - START_CONTAINER: undo for STOP_CONTAINER\\ - UNPAUSE_CONTAINER: undo for PAUSE_CONTAINER\\ - FILE_UNQUARANTINE: undo for FILE_QUARANTINE\\ - KUBERNETES_DELETE_VOLUME_SNAPSHOT: undo for KUBERNETES_VOLUME_SNAPSHOT\\ - DELETE_NETWORK_POLICY: undo for ISOLATE_NETWORK\\ Do not use undo actions in [submitActionExecutionv1](#tag/Response-actions/operation/submitActionExecutionv1). You can execute an undo actions using the service [undoActionExecutionV1](#tag/Response-actions/operation/undoActionExecutionV1). | +**responder_type** | [**ResponderType**](ResponderType.md) | | +**execution_context** | **Dict[str, str]** | The context in which the Response Action is executed.\\ It may contain additional information on the Response Action being executed, such as the host name or the MAC address.\\ For example:\\ ```json { \"host.hostName\": \"my-host\", \"host.mac\": \"00:00:00:00:00:00\", \"host.id\": \"abc123\" } ``` | +**parameters** | [**Dict[str, ActionExecutionParameterValue]**](ActionExecutionParameterValue.md) | The parameters used to request the Response Action execution. | +**outputs** | [**Dict[str, ActionExecutionParameterValue]**](ActionExecutionParameterValue.md) | The parameters used to request the Response Action execution. | [optional] +**failure** | [**Failure**](Failure.md) | | [optional] +**status** | [**ActionExecutionStatus**](ActionExecutionStatus.md) | | +**user_id** | **int** | The ID of the user that submitted the Response Action. | [optional] +**created_at** | **datetime** | The date and time the Response Action was submitted. | +**updated_at** | **datetime** | The date and time the Response Action was last updated. | [optional] +**action_execution_id_being_undone** | **str** | The ID of the Response Action being undone. | [optional] + +## Example + +```python +from sysdig_client.models.action_execution import ActionExecution + +# TODO update the JSON string below +json = "{}" +# create an instance of ActionExecution from a JSON string +action_execution_instance = ActionExecution.from_json(json) +# print the JSON string representation of the object +print(ActionExecution.to_json()) + +# convert the object into a dict +action_execution_dict = action_execution_instance.to_dict() +# create an instance of ActionExecution from a dict +action_execution_from_dict = ActionExecution.from_dict(action_execution_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ActionExecutionParameterValue.md b/docs/reference/ActionExecutionParameterValue.md new file mode 100644 index 00000000..9079b5f1 --- /dev/null +++ b/docs/reference/ActionExecutionParameterValue.md @@ -0,0 +1,29 @@ +# ActionExecutionParameterValue + +The value of a parameter. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.action_execution_parameter_value import ActionExecutionParameterValue + +# TODO update the JSON string below +json = "{}" +# create an instance of ActionExecutionParameterValue from a JSON string +action_execution_parameter_value_instance = ActionExecutionParameterValue.from_json(json) +# print the JSON string representation of the object +print(ActionExecutionParameterValue.to_json()) + +# convert the object into a dict +action_execution_parameter_value_dict = action_execution_parameter_value_instance.to_dict() +# create an instance of ActionExecutionParameterValue from a dict +action_execution_parameter_value_from_dict = ActionExecutionParameterValue.from_dict(action_execution_parameter_value_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ActionExecutionStatus.md b/docs/reference/ActionExecutionStatus.md new file mode 100644 index 00000000..307c1d3b --- /dev/null +++ b/docs/reference/ActionExecutionStatus.md @@ -0,0 +1,17 @@ +# ActionExecutionStatus + +The status of the action execution. + +## Enum + +* `ENQUEUED` (value: `'ENQUEUED'`) + +* `IN_PROGRESS` (value: `'IN_PROGRESS'`) + +* `COMPLETED` (value: `'COMPLETED'`) + +* `FAILED` (value: `'FAILED'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ActionExecutions.md b/docs/reference/ActionExecutions.md new file mode 100644 index 00000000..0890a04d --- /dev/null +++ b/docs/reference/ActionExecutions.md @@ -0,0 +1,30 @@ +# ActionExecutions + +A list of Response Action executions. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[ActionExecution]**](ActionExecution.md) | The list of Response Actions. | + +## Example + +```python +from sysdig_client.models.action_executions import ActionExecutions + +# TODO update the JSON string below +json = "{}" +# create an instance of ActionExecutions from a JSON string +action_executions_instance = ActionExecutions.from_json(json) +# print the JSON string representation of the object +print(ActionExecutions.to_json()) + +# convert the object into a dict +action_executions_dict = action_executions_instance.to_dict() +# create an instance of ActionExecutions from a dict +action_executions_from_dict = ActionExecutions.from_dict(action_executions_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ActionOutputsMetadata.md b/docs/reference/ActionOutputsMetadata.md new file mode 100644 index 00000000..998adcb2 --- /dev/null +++ b/docs/reference/ActionOutputsMetadata.md @@ -0,0 +1,33 @@ +# ActionOutputsMetadata + +Metadata that describes a parameter returned by a Response Action execution. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | The name of the output parameter. | +**description** | **str** | The description of the output parameter. | +**type** | **str** | The type of an Response Action parameter.\\ It may assume the following values:\\ * string\\ * integer\\ * boolean\\ This list of possible values may grow in the future. | +**required** | **bool** | If `true`, the parameter is mandatory. | + +## Example + +```python +from sysdig_client.models.action_outputs_metadata import ActionOutputsMetadata + +# TODO update the JSON string below +json = "{}" +# create an instance of ActionOutputsMetadata from a JSON string +action_outputs_metadata_instance = ActionOutputsMetadata.from_json(json) +# print the JSON string representation of the object +print(ActionOutputsMetadata.to_json()) + +# convert the object into a dict +action_outputs_metadata_dict = action_outputs_metadata_instance.to_dict() +# create an instance of ActionOutputsMetadata from a dict +action_outputs_metadata_from_dict = ActionOutputsMetadata.from_dict(action_outputs_metadata_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ActionParameterMetadata.md b/docs/reference/ActionParameterMetadata.md new file mode 100644 index 00000000..9fa3c96b --- /dev/null +++ b/docs/reference/ActionParameterMetadata.md @@ -0,0 +1,33 @@ +# ActionParameterMetadata + +Metadata that describes a parameter to be submitted for a Response Action execution. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | The name of the parameter. | +**description** | **str** | The description of the parameter. | +**type** | **str** | The type of an Response Action parameter.\\ It may assume the following values:\\ * string\\ * integer\\ * boolean\\ This list of possible values may grow in the future. | +**required** | **bool** | If `true`, the parameter is mandatory. | + +## Example + +```python +from sysdig_client.models.action_parameter_metadata import ActionParameterMetadata + +# TODO update the JSON string below +json = "{}" +# create an instance of ActionParameterMetadata from a JSON string +action_parameter_metadata_instance = ActionParameterMetadata.from_json(json) +# print the JSON string representation of the object +print(ActionParameterMetadata.to_json()) + +# convert the object into a dict +action_parameter_metadata_dict = action_parameter_metadata_instance.to_dict() +# create an instance of ActionParameterMetadata from a dict +action_parameter_metadata_from_dict = ActionParameterMetadata.from_dict(action_parameter_metadata_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ActionType.md b/docs/reference/ActionType.md new file mode 100644 index 00000000..4f21e4fc --- /dev/null +++ b/docs/reference/ActionType.md @@ -0,0 +1,23 @@ +# ActionType + +Action type. + +## Enum + +* `CAPTURE` (value: `'capture'`) + +* `CONTAINER_KILLED` (value: `'container_killed'`) + +* `CONTAINER_PAUSED` (value: `'container_paused'`) + +* `CONTAINER_STOPPED` (value: `'container_stopped'`) + +* `DRIFT_PREVENTED` (value: `'drift_prevented'`) + +* `MALWARE_PREVENTED` (value: `'malware_prevented'`) + +* `PROCESS_KILLED` (value: `'process_killed'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Actions.md b/docs/reference/Actions.md new file mode 100644 index 00000000..c1b3845f --- /dev/null +++ b/docs/reference/Actions.md @@ -0,0 +1,30 @@ +# Actions + +A list of Response Actions + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[ResponseAction]**](ResponseAction.md) | The list of Response Actions. | + +## Example + +```python +from sysdig_client.models.actions import Actions + +# TODO update the JSON string below +json = "{}" +# create an instance of Actions from a JSON string +actions_instance = Actions.from_json(json) +# print the JSON string representation of the object +print(Actions.to_json()) + +# convert the object into a dict +actions_dict = actions_instance.to_dict() +# create an instance of Actions from a dict +actions_from_dict = Actions.from_dict(actions_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ActivityAuditApi.md b/docs/reference/ActivityAuditApi.md new file mode 100644 index 00000000..7e277614 --- /dev/null +++ b/docs/reference/ActivityAuditApi.md @@ -0,0 +1,283 @@ +# sysdig_client.ActivityAuditApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_activity_audit_entries_supported_filters_v1**](ActivityAuditApi.md#get_activity_audit_entries_supported_filters_v1) | **GET** /secure/activity-audit/v1/supported-filters | Get available filters +[**get_activity_audit_entries_v1**](ActivityAuditApi.md#get_activity_audit_entries_v1) | **GET** /secure/activity-audit/v1/entries | List entries +[**get_activity_audit_entry_v1**](ActivityAuditApi.md#get_activity_audit_entry_v1) | **GET** /secure/activity-audit/v1/entries/{entryId} | Get entry + + +# **get_activity_audit_entries_supported_filters_v1** +> AuditSupportedFiltersResponse get_activity_audit_entries_supported_filters_v1() + +Get available filters + +Activity Audit entries can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.audit_supported_filters_response import AuditSupportedFiltersResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ActivityAuditApi(api_client) + + try: + # Get available filters + api_response = api_instance.get_activity_audit_entries_supported_filters_v1() + print("The response of ActivityAuditApi->get_activity_audit_entries_supported_filters_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ActivityAuditApi->get_activity_audit_entries_supported_filters_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**AuditSupportedFiltersResponse**](AuditSupportedFiltersResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of supported attributes for filtering Activity Audit entries. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Bad request | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_activity_audit_entries_v1** +> EntriesResponse get_activity_audit_entries_v1(var_from=var_from, to=to, cursor=cursor, zones=zones, filter=filter, limit=limit, types=types) + +List entries + +Retrieves the list of entries matching the expressed search criteria. +The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. +The time criteria is required and can be specified in two different ways: +- Using `from` and `to`, the list of entries within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. +- Using a `cursor` the entries returned will be in the before, after or around the entry, depending on the entry the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. +The entry content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels. + +**Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.entries_response import EntriesResponse +from sysdig_client.models.types import Types +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ActivityAuditApi(api_client) + var_from = 56 # int | (optional) + to = 56 # int | (optional) + cursor = 'cursor_example' # str | (optional) + zones = [56] # List[int] | (optional) + filter = 'filter_example' # str | (optional) + limit = 25 # int | The number of items to return (optional) (default to 25) + types = sysdig_client.Types() # Types | (optional) + + try: + # List entries + api_response = api_instance.get_activity_audit_entries_v1(var_from=var_from, to=to, cursor=cursor, zones=zones, filter=filter, limit=limit, types=types) + print("The response of ActivityAuditApi->get_activity_audit_entries_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ActivityAuditApi->get_activity_audit_entries_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **var_from** | **int**| | [optional] + **to** | **int**| | [optional] + **cursor** | **str**| | [optional] + **zones** | [**List[int]**](int.md)| | [optional] + **filter** | **str**| | [optional] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **types** | [**Types**](.md)| | [optional] + +### Return type + +[**EntriesResponse**](EntriesResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of entries. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Bad Request | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_activity_audit_entry_v1** +> EntryResponse get_activity_audit_entry_v1(entry_id) + +Get entry + +Retrieves an Actvity Audit entry given its id. +**Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.entry_response import EntryResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ActivityAuditApi(api_client) + entry_id = 'entry_id_example' # str | + + try: + # Get entry + api_response = api_instance.get_activity_audit_entry_v1(entry_id) + print("The response of ActivityAuditApi->get_activity_audit_entry_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ActivityAuditApi->get_activity_audit_entry_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **entry_id** | **str**| | + +### Return type + +[**EntryResponse**](EntryResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The Activity Audit entry. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Bad Request | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/AdditionalTeamPermissionsV1.md b/docs/reference/AdditionalTeamPermissionsV1.md new file mode 100644 index 00000000..90790ca2 --- /dev/null +++ b/docs/reference/AdditionalTeamPermissionsV1.md @@ -0,0 +1,35 @@ +# AdditionalTeamPermissionsV1 + +Additional permissions available to the users of the team. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_sysdig_captures** | **bool** | Enable the Sysdig captures feature for this team. | [optional] [default to False] +**has_infrastructure_events** | **bool** | | [optional] [default to False] +**has_aws_data** | **bool** | | [optional] [default to False] +**has_rapid_response** | **bool** | | [optional] [default to False] +**has_agent_cli** | **bool** | | [optional] [default to False] +**has_beacon_metrics** | **bool** | | [optional] [default to False] + +## Example + +```python +from sysdig_client.models.additional_team_permissions_v1 import AdditionalTeamPermissionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of AdditionalTeamPermissionsV1 from a JSON string +additional_team_permissions_v1_instance = AdditionalTeamPermissionsV1.from_json(json) +# print the JSON string representation of the object +print(AdditionalTeamPermissionsV1.to_json()) + +# convert the object into a dict +additional_team_permissions_v1_dict = additional_team_permissions_v1_instance.to_dict() +# create an instance of AdditionalTeamPermissionsV1 from a dict +additional_team_permissions_v1_from_dict = AdditionalTeamPermissionsV1.from_dict(additional_team_permissions_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AgentlessMlRuntimeDetectionContent.md b/docs/reference/AgentlessMlRuntimeDetectionContent.md new file mode 100644 index 00000000..4b232f5e --- /dev/null +++ b/docs/reference/AgentlessMlRuntimeDetectionContent.md @@ -0,0 +1,36 @@ +# AgentlessMlRuntimeDetectionContent + +Agentless ML event content + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**EventContentType**](EventContentType.md) | | +**policy_id** | **int** | ID of the policy that generated the event | [optional] +**policy_origin** | [**PolicyOrigin**](PolicyOrigin.md) | | +**policy_notification_channel_ids** | **List[int]** | The list of notification channels where an alert is sent after event is generated. Doesn't account for aggregations and eventual thresholds. | [optional] +**rule_name** | **str** | Name of the rule the event is generated after | +**rule_type** | **int** | Rule type: - 1 - List matching - process - 2 - List matching - container - 3 - List matching - file - 4 - List matching - network - 5 - List matching - syscall - 6 - Falco - 7 - Drift detection - 8 - Malware detection - 11 - ML - Cryptominer detection - 13 - ML - AWS anomalous login - 14 - ML - Okta anomalous login | +**fields** | [**AgentlessMlRuntimeDetectionContentAllOfFields**](AgentlessMlRuntimeDetectionContentAllOfFields.md) | | + +## Example + +```python +from sysdig_client.models.agentless_ml_runtime_detection_content import AgentlessMlRuntimeDetectionContent + +# TODO update the JSON string below +json = "{}" +# create an instance of AgentlessMlRuntimeDetectionContent from a JSON string +agentless_ml_runtime_detection_content_instance = AgentlessMlRuntimeDetectionContent.from_json(json) +# print the JSON string representation of the object +print(AgentlessMlRuntimeDetectionContent.to_json()) + +# convert the object into a dict +agentless_ml_runtime_detection_content_dict = agentless_ml_runtime_detection_content_instance.to_dict() +# create an instance of AgentlessMlRuntimeDetectionContent from a dict +agentless_ml_runtime_detection_content_from_dict = AgentlessMlRuntimeDetectionContent.from_dict(agentless_ml_runtime_detection_content_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AgentlessMlRuntimeDetectionContentAllOfFields.md b/docs/reference/AgentlessMlRuntimeDetectionContentAllOfFields.md new file mode 100644 index 00000000..46e57288 --- /dev/null +++ b/docs/reference/AgentlessMlRuntimeDetectionContentAllOfFields.md @@ -0,0 +1,28 @@ +# AgentlessMlRuntimeDetectionContentAllOfFields + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.agentless_ml_runtime_detection_content_all_of_fields import AgentlessMlRuntimeDetectionContentAllOfFields + +# TODO update the JSON string below +json = "{}" +# create an instance of AgentlessMlRuntimeDetectionContentAllOfFields from a JSON string +agentless_ml_runtime_detection_content_all_of_fields_instance = AgentlessMlRuntimeDetectionContentAllOfFields.from_json(json) +# print the JSON string representation of the object +print(AgentlessMlRuntimeDetectionContentAllOfFields.to_json()) + +# convert the object into a dict +agentless_ml_runtime_detection_content_all_of_fields_dict = agentless_ml_runtime_detection_content_all_of_fields_instance.to_dict() +# create an instance of AgentlessMlRuntimeDetectionContentAllOfFields from a dict +agentless_ml_runtime_detection_content_all_of_fields_from_dict = AgentlessMlRuntimeDetectionContentAllOfFields.from_dict(agentless_ml_runtime_detection_content_all_of_fields_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AgentlessRuntimeDetectionContent.md b/docs/reference/AgentlessRuntimeDetectionContent.md new file mode 100644 index 00000000..6355b6b0 --- /dev/null +++ b/docs/reference/AgentlessRuntimeDetectionContent.md @@ -0,0 +1,41 @@ +# AgentlessRuntimeDetectionContent + +Agentless CDR event content + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**EventContentType**](EventContentType.md) | | +**integration_id** | **str** | The unique identifier of the integration that generated the event. | +**integration_type** | **str** | The type of integration that generated the event. | +**rule_name** | **str** | Name of the rule the event is generated after | +**rule_type** | **int** | Rule type: - 1 - List matching - process - 2 - List matching - container - 3 - List matching - file - 4 - List matching - network - 5 - List matching - syscall - 6 - Falco - 7 - Drift detection - 8 - Malware detection - 11 - ML - Cryptominer detection - 13 - ML - AWS anomalous login - 14 - ML - Okta anomalous login | +**rule_tags** | **List[str]** | The tags attached to the rule | [optional] +**policy_id** | **int** | ID of the policy that generated the event | +**policy_origin** | [**PolicyOrigin**](PolicyOrigin.md) | | +**policy_notification_channel_ids** | **List[int]** | The list of notification channels where an alert is sent after event is generated. Doesn't account for aggregations and eventual thresholds. | [optional] +**priority** | **str** | Rule priority | [optional] +**output** | **str** | Event output, generated after the configured rule | [optional] +**fields** | [**AgentlessRuntimeDetectionContentAllOfFields**](AgentlessRuntimeDetectionContentAllOfFields.md) | | [optional] + +## Example + +```python +from sysdig_client.models.agentless_runtime_detection_content import AgentlessRuntimeDetectionContent + +# TODO update the JSON string below +json = "{}" +# create an instance of AgentlessRuntimeDetectionContent from a JSON string +agentless_runtime_detection_content_instance = AgentlessRuntimeDetectionContent.from_json(json) +# print the JSON string representation of the object +print(AgentlessRuntimeDetectionContent.to_json()) + +# convert the object into a dict +agentless_runtime_detection_content_dict = agentless_runtime_detection_content_instance.to_dict() +# create an instance of AgentlessRuntimeDetectionContent from a dict +agentless_runtime_detection_content_from_dict = AgentlessRuntimeDetectionContent.from_dict(agentless_runtime_detection_content_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AgentlessRuntimeDetectionContentAllOfFields.md b/docs/reference/AgentlessRuntimeDetectionContentAllOfFields.md new file mode 100644 index 00000000..27e33580 --- /dev/null +++ b/docs/reference/AgentlessRuntimeDetectionContentAllOfFields.md @@ -0,0 +1,28 @@ +# AgentlessRuntimeDetectionContentAllOfFields + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.agentless_runtime_detection_content_all_of_fields import AgentlessRuntimeDetectionContentAllOfFields + +# TODO update the JSON string below +json = "{}" +# create an instance of AgentlessRuntimeDetectionContentAllOfFields from a JSON string +agentless_runtime_detection_content_all_of_fields_instance = AgentlessRuntimeDetectionContentAllOfFields.from_json(json) +# print the JSON string representation of the object +print(AgentlessRuntimeDetectionContentAllOfFields.to_json()) + +# convert the object into a dict +agentless_runtime_detection_content_all_of_fields_dict = agentless_runtime_detection_content_all_of_fields_instance.to_dict() +# create an instance of AgentlessRuntimeDetectionContentAllOfFields from a dict +agentless_runtime_detection_content_all_of_fields_from_dict = AgentlessRuntimeDetectionContentAllOfFields.from_dict(agentless_runtime_detection_content_all_of_fields_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AlertMonitorEvent.md b/docs/reference/AlertMonitorEvent.md new file mode 100644 index 00000000..1af7b808 --- /dev/null +++ b/docs/reference/AlertMonitorEvent.md @@ -0,0 +1,43 @@ +# AlertMonitorEvent + +Monitor Alert Event + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The event id. | +**created_on** | **datetime** | Timestamp when the event was created in the system | +**occurred_at** | **datetime** | Event logical timestamp (when the event occurred). For alert events, this is the time when the alert was triggered. | +**name** | **str** | The event name | +**description** | **str** | Description of the event. | [optional] +**severity** | **int** | The event severity. A lower value means more severe, with 0 being the highest severity and 7 being the lowest. | +**scope_labels** | [**List[MonitorScopeLabel]**](MonitorScopeLabel.md) | List of scope labels, including those from initial scope and those coming from the enrichment process. | [optional] +**scope** | **str** | Initial event scope | [optional] +**alert_id** | **int** | ID of the alert that generated the event | [optional] +**ended_at** | **datetime** | Timestamp when the alert resolved | [optional] +**alert_state** | **str** | The alert state. Current supported values are TRIGGERED, RESOLVED. | [optional] +**acknowledged** | **bool** | Whether the alert has been acknowledged. | [optional] +**manually_resolved** | **bool** | Whether the alert has been manually resolved. | [optional] +**silenced** | **bool** | Whether the alert has been silenced. | [optional] + +## Example + +```python +from sysdig_client.models.alert_monitor_event import AlertMonitorEvent + +# TODO update the JSON string below +json = "{}" +# create an instance of AlertMonitorEvent from a JSON string +alert_monitor_event_instance = AlertMonitorEvent.from_json(json) +# print the JSON string representation of the object +print(AlertMonitorEvent.to_json()) + +# convert the object into a dict +alert_monitor_event_dict = alert_monitor_event_instance.to_dict() +# create an instance of AlertMonitorEvent from a dict +alert_monitor_event_from_dict = AlertMonitorEvent.from_dict(alert_monitor_event_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AlertsResponseV1.md b/docs/reference/AlertsResponseV1.md new file mode 100644 index 00000000..4757dfc6 --- /dev/null +++ b/docs/reference/AlertsResponseV1.md @@ -0,0 +1,32 @@ +# AlertsResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | Request status. | [optional] +**data** | [**AlertsResponseV1Data**](AlertsResponseV1Data.md) | | [optional] +**warnings** | **List[str]** | A set of warning messages attached to the response. | [optional] +**infos** | **List[str]** | A set of information messages attached to the response. | [optional] + +## Example + +```python +from sysdig_client.models.alerts_response_v1 import AlertsResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of AlertsResponseV1 from a JSON string +alerts_response_v1_instance = AlertsResponseV1.from_json(json) +# print the JSON string representation of the object +print(AlertsResponseV1.to_json()) + +# convert the object into a dict +alerts_response_v1_dict = alerts_response_v1_instance.to_dict() +# create an instance of AlertsResponseV1 from a dict +alerts_response_v1_from_dict = AlertsResponseV1.from_dict(alerts_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AlertsResponseV1Data.md b/docs/reference/AlertsResponseV1Data.md new file mode 100644 index 00000000..217e97b5 --- /dev/null +++ b/docs/reference/AlertsResponseV1Data.md @@ -0,0 +1,30 @@ +# AlertsResponseV1Data + +Response payload containing active alerts. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**alerts** | [**List[AlertsResponseV1DataAlertsInner]**](AlertsResponseV1DataAlertsInner.md) | List of currently active alerts. | [optional] + +## Example + +```python +from sysdig_client.models.alerts_response_v1_data import AlertsResponseV1Data + +# TODO update the JSON string below +json = "{}" +# create an instance of AlertsResponseV1Data from a JSON string +alerts_response_v1_data_instance = AlertsResponseV1Data.from_json(json) +# print the JSON string representation of the object +print(AlertsResponseV1Data.to_json()) + +# convert the object into a dict +alerts_response_v1_data_dict = alerts_response_v1_data_instance.to_dict() +# create an instance of AlertsResponseV1Data from a dict +alerts_response_v1_data_from_dict = AlertsResponseV1Data.from_dict(alerts_response_v1_data_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AlertsResponseV1DataAlertsInner.md b/docs/reference/AlertsResponseV1DataAlertsInner.md new file mode 100644 index 00000000..dc82de7d --- /dev/null +++ b/docs/reference/AlertsResponseV1DataAlertsInner.md @@ -0,0 +1,33 @@ +# AlertsResponseV1DataAlertsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**active_at** | **datetime** | Timestamp when the alert became active. | +**annotations** | **Dict[str, str]** | Additional metadata about the alert. | +**labels** | **Dict[str, str]** | Key-value pairs identifying the alert. | +**state** | **str** | Current state of the alert. | +**value** | **str** | The numerical value that triggered the alert. | + +## Example + +```python +from sysdig_client.models.alerts_response_v1_data_alerts_inner import AlertsResponseV1DataAlertsInner + +# TODO update the JSON string below +json = "{}" +# create an instance of AlertsResponseV1DataAlertsInner from a JSON string +alerts_response_v1_data_alerts_inner_instance = AlertsResponseV1DataAlertsInner.from_json(json) +# print the JSON string representation of the object +print(AlertsResponseV1DataAlertsInner.to_json()) + +# convert the object into a dict +alerts_response_v1_data_alerts_inner_dict = alerts_response_v1_data_alerts_inner_instance.to_dict() +# create an instance of AlertsResponseV1DataAlertsInner from a dict +alerts_response_v1_data_alerts_inner_from_dict = AlertsResponseV1DataAlertsInner.from_dict(alerts_response_v1_data_alerts_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AllSsoSettingsResponseV1.md b/docs/reference/AllSsoSettingsResponseV1.md new file mode 100644 index 00000000..a9e67bb8 --- /dev/null +++ b/docs/reference/AllSsoSettingsResponseV1.md @@ -0,0 +1,29 @@ +# AllSsoSettingsResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[SsoSettingsResponseV1]**](SsoSettingsResponseV1.md) | The list of SSO settings. | [optional] + +## Example + +```python +from sysdig_client.models.all_sso_settings_response_v1 import AllSsoSettingsResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of AllSsoSettingsResponseV1 from a JSON string +all_sso_settings_response_v1_instance = AllSsoSettingsResponseV1.from_json(json) +# print the JSON string representation of the object +print(AllSsoSettingsResponseV1.to_json()) + +# convert the object into a dict +all_sso_settings_response_v1_dict = all_sso_settings_response_v1_instance.to_dict() +# create an instance of AllSsoSettingsResponseV1 from a dict +all_sso_settings_response_v1_from_dict = AllSsoSettingsResponseV1.from_dict(all_sso_settings_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AmazonSQSCreateConnectionInfo.md b/docs/reference/AmazonSQSCreateConnectionInfo.md new file mode 100644 index 00000000..2bf0143b --- /dev/null +++ b/docs/reference/AmazonSQSCreateConnectionInfo.md @@ -0,0 +1,35 @@ +# AmazonSQSCreateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**owner_account** | **str** | The AWS account ID of the account that created the queue | [optional] +**region** | **str** | Region in which the SQS queue is hosted | +**queue** | **str** | Queue name | +**delay** | **int** | Delay, in seconds, applied to the data | [optional] +**headers** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the payload. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value | [optional] +**access_key** | **str** | Access Key for authenticating on AWS to send data on the queue | +**access_secret** | **str** | Access Secret for authenticating on AWS to send data on the queue | + +## Example + +```python +from sysdig_client.models.amazon_sqs_create_connection_info import AmazonSQSCreateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of AmazonSQSCreateConnectionInfo from a JSON string +amazon_sqs_create_connection_info_instance = AmazonSQSCreateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(AmazonSQSCreateConnectionInfo.to_json()) + +# convert the object into a dict +amazon_sqs_create_connection_info_dict = amazon_sqs_create_connection_info_instance.to_dict() +# create an instance of AmazonSQSCreateConnectionInfo from a dict +amazon_sqs_create_connection_info_from_dict = AmazonSQSCreateConnectionInfo.from_dict(amazon_sqs_create_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AmazonSQSUpdateConnectionInfo.md b/docs/reference/AmazonSQSUpdateConnectionInfo.md new file mode 100644 index 00000000..618a49f4 --- /dev/null +++ b/docs/reference/AmazonSQSUpdateConnectionInfo.md @@ -0,0 +1,35 @@ +# AmazonSQSUpdateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**owner_account** | **str** | The AWS account ID of the account that created the queue | [optional] +**region** | **str** | Region in which the SQS queue is hosted | +**queue** | **str** | Queue name | +**delay** | **int** | Delay, in seconds, applied to the data | [optional] +**headers** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the payload. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value | [optional] +**access_key** | **str** | Access Key for authenticating on AWS to send data on the queue | [optional] +**access_secret** | **str** | Access Secret for authenticating on AWS to send data on the queue | [optional] + +## Example + +```python +from sysdig_client.models.amazon_sqs_update_connection_info import AmazonSQSUpdateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of AmazonSQSUpdateConnectionInfo from a JSON string +amazon_sqs_update_connection_info_instance = AmazonSQSUpdateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(AmazonSQSUpdateConnectionInfo.to_json()) + +# convert the object into a dict +amazon_sqs_update_connection_info_dict = amazon_sqs_update_connection_info_instance.to_dict() +# create an instance of AmazonSQSUpdateConnectionInfo from a dict +amazon_sqs_update_connection_info_from_dict = AmazonSQSUpdateConnectionInfo.from_dict(amazon_sqs_update_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AuditEvent.md b/docs/reference/AuditEvent.md new file mode 100644 index 00000000..a3fa9679 --- /dev/null +++ b/docs/reference/AuditEvent.md @@ -0,0 +1,34 @@ +# AuditEvent + +Platform Audit Event + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The event id. | [optional] +**cursor** | **str** | The cursor that can be used to fetch a set of events surrounding this same event. By providing this value as `cursor` in a GET request, you will get the set of events surrounding this current event. | [optional] +**timestamp** | **int** | The event timestamp in nanoseconds. | [optional] +**content** | [**AuditTrailContent**](AuditTrailContent.md) | | [optional] +**labels** | **Dict[str, str]** | Key value pairs of values, represents entityType where the Audit Event was generated. | [optional] + +## Example + +```python +from sysdig_client.models.audit_event import AuditEvent + +# TODO update the JSON string below +json = "{}" +# create an instance of AuditEvent from a JSON string +audit_event_instance = AuditEvent.from_json(json) +# print the JSON string representation of the object +print(AuditEvent.to_json()) + +# convert the object into a dict +audit_event_dict = audit_event_instance.to_dict() +# create an instance of AuditEvent from a dict +audit_event_from_dict = AuditEvent.from_dict(audit_event_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AuditPage.md b/docs/reference/AuditPage.md new file mode 100644 index 00000000..561d1f40 --- /dev/null +++ b/docs/reference/AuditPage.md @@ -0,0 +1,32 @@ +# AuditPage + +Pagination information. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**total** | **int** | The number of events matching the search criteria. This number is always major or equal to the number of events returned. | +**prev** | **str** | `prev` is a string pointing to the previous page of data. Use this as the `cursor` to get the previous page of data. | [optional] +**next** | **str** | `next` is a string pointing to the next page of data. Use this as the `cursor` to scroll paginated results and get the next page of data. If not included, the current response is the last page. | [optional] + +## Example + +```python +from sysdig_client.models.audit_page import AuditPage + +# TODO update the JSON string below +json = "{}" +# create an instance of AuditPage from a JSON string +audit_page_instance = AuditPage.from_json(json) +# print the JSON string representation of the object +print(AuditPage.to_json()) + +# convert the object into a dict +audit_page_dict = audit_page_instance.to_dict() +# create an instance of AuditPage from a dict +audit_page_from_dict = AuditPage.from_dict(audit_page_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AuditSupportedFilter.md b/docs/reference/AuditSupportedFilter.md new file mode 100644 index 00000000..edfa19c8 --- /dev/null +++ b/docs/reference/AuditSupportedFilter.md @@ -0,0 +1,32 @@ +# AuditSupportedFilter + +A supported field for filtering Activity Audit events. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Attribute onto which filtering is supported. | +**type** | [**SupportedFilterType**](SupportedFilterType.md) | | +**operands** | [**List[Operand]**](Operand.md) | The list of supported operands for filtering events. | [optional] + +## Example + +```python +from sysdig_client.models.audit_supported_filter import AuditSupportedFilter + +# TODO update the JSON string below +json = "{}" +# create an instance of AuditSupportedFilter from a JSON string +audit_supported_filter_instance = AuditSupportedFilter.from_json(json) +# print the JSON string representation of the object +print(AuditSupportedFilter.to_json()) + +# convert the object into a dict +audit_supported_filter_dict = audit_supported_filter_instance.to_dict() +# create an instance of AuditSupportedFilter from a dict +audit_supported_filter_from_dict = AuditSupportedFilter.from_dict(audit_supported_filter_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AuditSupportedFiltersResponse.md b/docs/reference/AuditSupportedFiltersResponse.md new file mode 100644 index 00000000..3160db70 --- /dev/null +++ b/docs/reference/AuditSupportedFiltersResponse.md @@ -0,0 +1,30 @@ +# AuditSupportedFiltersResponse + +The list of supported attributes for filtering Activity Audit entries. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[AuditSupportedFilter]**](AuditSupportedFilter.md) | The list of supported attributes for filtering Activity Audit entries. | + +## Example + +```python +from sysdig_client.models.audit_supported_filters_response import AuditSupportedFiltersResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of AuditSupportedFiltersResponse from a JSON string +audit_supported_filters_response_instance = AuditSupportedFiltersResponse.from_json(json) +# print the JSON string representation of the object +print(AuditSupportedFiltersResponse.to_json()) + +# convert the object into a dict +audit_supported_filters_response_dict = audit_supported_filters_response_instance.to_dict() +# create an instance of AuditSupportedFiltersResponse from a dict +audit_supported_filters_response_from_dict = AuditSupportedFiltersResponse.from_dict(audit_supported_filters_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AuditTrailContent.md b/docs/reference/AuditTrailContent.md new file mode 100644 index 00000000..87da8b20 --- /dev/null +++ b/docs/reference/AuditTrailContent.md @@ -0,0 +1,44 @@ +# AuditTrailContent + +Content object for Platform Audit Event. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**timestamp_ns** | **int** | The event timestamp in nanoseconds. | [optional] +**user_id** | **int** | ID of user that was preforming some action. | [optional] +**username** | **str** | Username of the user that was preforming some action. | [optional] +**team_id** | **int** | Team ID, that user who preformed some action was logged in. | [optional] +**team_name** | **str** | Name of the team, that user who preformed action was logged in. | [optional] +**request_method** | **str** | HTTP request method that was used to preform action. | [optional] +**request_uri** | **str** | URI of the request that was used to preform action. | [optional] +**user_origin_ip** | **str** | IP address of the user that was preforming action. | [optional] +**query_string** | **str** | Query string of the request that was used to preform action. | [optional] +**response_status_code** | **int** | HTTP response status code of the request that was used to preform action. | [optional] +**entity_type** | **str** | Type of entity that was affected by the action. Full list of possible values can be found in the our documentation https://docs.sysdig.com/en/docs/administration/administration-settings/app-status-and-audit/sysdig-platform-audit/#sysdig-monitor-and-sysdig-platform. | [optional] +**entity_id** | **str** | ID of the entity that was affected by the action. | [optional] +**entity_payload** | **str** | Payload of the entity that was affected by the action. | [optional] +**service_account_id** | **int** | ID of the service account that was used to preform action. | [optional] +**service_account_name** | **str** | Name of the service account that was used to preform action. | [optional] + +## Example + +```python +from sysdig_client.models.audit_trail_content import AuditTrailContent + +# TODO update the JSON string below +json = "{}" +# create an instance of AuditTrailContent from a JSON string +audit_trail_content_instance = AuditTrailContent.from_json(json) +# print the JSON string representation of the object +print(AuditTrailContent.to_json()) + +# convert the object into a dict +audit_trail_content_dict = audit_trail_content_instance.to_dict() +# create an instance of AuditTrailContent from a dict +audit_trail_content_from_dict = AuditTrailContent.from_dict(audit_trail_content_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AuthenticatedConnectionInfoElasticsearch.md b/docs/reference/AuthenticatedConnectionInfoElasticsearch.md new file mode 100644 index 00000000..df4c6156 --- /dev/null +++ b/docs/reference/AuthenticatedConnectionInfoElasticsearch.md @@ -0,0 +1,34 @@ +# AuthenticatedConnectionInfoElasticsearch + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | Elasticsearch instance endpoint URL | +**index** | **str** | Name of the index to store the data in | +**is_insecure** | **bool** | Don't verify TLS certificate | [optional] [default to False] +**auth** | **str** | Authentication method | +**format** | **str** | If specified, transforms `content.fields` and `labels` * `KV_PAIRS` - from objects (i.e. `{\"foo\": \"bar\", ...}`) to arrays of objects with \"key\" and \"value\" properties {i.e. `[{\"key\" : \"foo\", \"value\": \"bar\"}, ...]`) | [optional] +**secret** | **str** | Authentication secret. To be set if auth is specified | + +## Example + +```python +from sysdig_client.models.authenticated_connection_info_elasticsearch import AuthenticatedConnectionInfoElasticsearch + +# TODO update the JSON string below +json = "{}" +# create an instance of AuthenticatedConnectionInfoElasticsearch from a JSON string +authenticated_connection_info_elasticsearch_instance = AuthenticatedConnectionInfoElasticsearch.from_json(json) +# print the JSON string representation of the object +print(AuthenticatedConnectionInfoElasticsearch.to_json()) + +# convert the object into a dict +authenticated_connection_info_elasticsearch_dict = authenticated_connection_info_elasticsearch_instance.to_dict() +# create an instance of AuthenticatedConnectionInfoElasticsearch from a dict +authenticated_connection_info_elasticsearch_from_dict = AuthenticatedConnectionInfoElasticsearch.from_dict(authenticated_connection_info_elasticsearch_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AuthenticatedConnectionInfoKafka.md b/docs/reference/AuthenticatedConnectionInfoKafka.md new file mode 100644 index 00000000..e232e53c --- /dev/null +++ b/docs/reference/AuthenticatedConnectionInfoKafka.md @@ -0,0 +1,40 @@ +# AuthenticatedConnectionInfoKafka + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**brokers** | **List[str]** | Kafka server endpoint. A Kafka cluster may provide several brokers; it follows the 'hostname: port' (without protocol scheme). | +**topic** | **str** | Kafka topic where you want to store the forwarded data | +**balancer** | **str** | Algorithm that the client uses to multiplex data between the multiple Brokers. For compatibility with the Java client, Murmur2 is used as the default partitioner | [optional] [default to 'murmur2'] +**compression** | **str** | Compression standard used for the data | [optional] +**is_tls_enabled** | **bool** | | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**auth** | **str** | The authentication method to optionally use. Currently supporting only GSSAPI | +**principal** | **str** | GSSAPI principal | +**realm** | **str** | GSSAPI realm | +**service** | **str** | GSSAPI Service name | +**krb5** | **str** | Kerberos krb5.conf file content for GSSAPI | +**keytab** | **str** | base64 encoded Kerberos keytab | + +## Example + +```python +from sysdig_client.models.authenticated_connection_info_kafka import AuthenticatedConnectionInfoKafka + +# TODO update the JSON string below +json = "{}" +# create an instance of AuthenticatedConnectionInfoKafka from a JSON string +authenticated_connection_info_kafka_instance = AuthenticatedConnectionInfoKafka.from_json(json) +# print the JSON string representation of the object +print(AuthenticatedConnectionInfoKafka.to_json()) + +# convert the object into a dict +authenticated_connection_info_kafka_dict = authenticated_connection_info_kafka_instance.to_dict() +# create an instance of AuthenticatedConnectionInfoKafka from a dict +authenticated_connection_info_kafka_from_dict = AuthenticatedConnectionInfoKafka.from_dict(authenticated_connection_info_kafka_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/AuthenticatedConnectionInfoWebhook.md b/docs/reference/AuthenticatedConnectionInfoWebhook.md new file mode 100644 index 00000000..2679b6fb --- /dev/null +++ b/docs/reference/AuthenticatedConnectionInfoWebhook.md @@ -0,0 +1,36 @@ +# AuthenticatedConnectionInfoWebhook + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | Webhook endpoint following the schema protocol | +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**headers** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the request. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value | [optional] +**output** | **str** | Payload format | [optional] [default to 'json'] +**timestamp_format** | **str** | The resolution of the \"timestamp\" field in the payload | [optional] [default to 'nanoseconds'] +**auth** | **str** | Authentication method | +**certificate_id** | **int** | ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field | [optional] +**secret** | **str** | Secret to use, according to the \"auth\" value. | + +## Example + +```python +from sysdig_client.models.authenticated_connection_info_webhook import AuthenticatedConnectionInfoWebhook + +# TODO update the JSON string below +json = "{}" +# create an instance of AuthenticatedConnectionInfoWebhook from a JSON string +authenticated_connection_info_webhook_instance = AuthenticatedConnectionInfoWebhook.from_json(json) +# print the JSON string representation of the object +print(AuthenticatedConnectionInfoWebhook.to_json()) + +# convert the object into a dict +authenticated_connection_info_webhook_dict = authenticated_connection_info_webhook_instance.to_dict() +# create an instance of AuthenticatedConnectionInfoWebhook from a dict +authenticated_connection_info_webhook_from_dict = AuthenticatedConnectionInfoWebhook.from_dict(authenticated_connection_info_webhook_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BOMMetadata.md b/docs/reference/BOMMetadata.md new file mode 100644 index 00000000..09d0effe --- /dev/null +++ b/docs/reference/BOMMetadata.md @@ -0,0 +1,33 @@ +# BOMMetadata + +Provides additional information about a BOM. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**timestamp** | **datetime** | The date and time (timestamp) when the BOM was created. | [optional] +**lifecycle** | **str** | The product lifecycle(s) that this BOM represents. | [optional] +**tools** | **object** | The tool(s) used in the creation of the BOM. | [optional] +**component** | [**SbomComponent**](SbomComponent.md) | | [optional] + +## Example + +```python +from sysdig_client.models.bom_metadata import BOMMetadata + +# TODO update the JSON string below +json = "{}" +# create an instance of BOMMetadata from a JSON string +bom_metadata_instance = BOMMetadata.from_json(json) +# print the JSON string representation of the object +print(BOMMetadata.to_json()) + +# convert the object into a dict +bom_metadata_dict = bom_metadata_instance.to_dict() +# create an instance of BOMMetadata from a dict +bom_metadata_from_dict = BOMMetadata.from_dict(bom_metadata_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseAction.md b/docs/reference/BaseAction.md new file mode 100644 index 00000000..2c264bfa --- /dev/null +++ b/docs/reference/BaseAction.md @@ -0,0 +1,29 @@ +# BaseAction + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ActionType**](ActionType.md) | | + +## Example + +```python +from sysdig_client.models.base_action import BaseAction + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseAction from a JSON string +base_action_instance = BaseAction.from_json(json) +# print the JSON string representation of the object +print(BaseAction.to_json()) + +# convert the object into a dict +base_action_dict = base_action_instance.to_dict() +# create an instance of BaseAction from a dict +base_action_from_dict = BaseAction.from_dict(base_action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoAmazonSqs.md b/docs/reference/BaseConnectionInfoAmazonSqs.md new file mode 100644 index 00000000..8811690c --- /dev/null +++ b/docs/reference/BaseConnectionInfoAmazonSqs.md @@ -0,0 +1,33 @@ +# BaseConnectionInfoAmazonSqs + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**owner_account** | **str** | The AWS account ID of the account that created the queue | [optional] +**region** | **str** | Region in which the SQS queue is hosted | +**queue** | **str** | Queue name | +**delay** | **int** | Delay, in seconds, applied to the data | [optional] +**headers** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the payload. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value | [optional] + +## Example + +```python +from sysdig_client.models.base_connection_info_amazon_sqs import BaseConnectionInfoAmazonSqs + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoAmazonSqs from a JSON string +base_connection_info_amazon_sqs_instance = BaseConnectionInfoAmazonSqs.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoAmazonSqs.to_json()) + +# convert the object into a dict +base_connection_info_amazon_sqs_dict = base_connection_info_amazon_sqs_instance.to_dict() +# create an instance of BaseConnectionInfoAmazonSqs from a dict +base_connection_info_amazon_sqs_from_dict = BaseConnectionInfoAmazonSqs.from_dict(base_connection_info_amazon_sqs_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoChronicle.md b/docs/reference/BaseConnectionInfoChronicle.md new file mode 100644 index 00000000..6476fce9 --- /dev/null +++ b/docs/reference/BaseConnectionInfoChronicle.md @@ -0,0 +1,29 @@ +# BaseConnectionInfoChronicle + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**region** | **str** | The target region | [optional] [default to 'us'] + +## Example + +```python +from sysdig_client.models.base_connection_info_chronicle import BaseConnectionInfoChronicle + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoChronicle from a JSON string +base_connection_info_chronicle_instance = BaseConnectionInfoChronicle.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoChronicle.to_json()) + +# convert the object into a dict +base_connection_info_chronicle_dict = base_connection_info_chronicle_instance.to_dict() +# create an instance of BaseConnectionInfoChronicle from a dict +base_connection_info_chronicle_from_dict = BaseConnectionInfoChronicle.from_dict(base_connection_info_chronicle_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoChronicleV2.md b/docs/reference/BaseConnectionInfoChronicleV2.md new file mode 100644 index 00000000..eb994df5 --- /dev/null +++ b/docs/reference/BaseConnectionInfoChronicleV2.md @@ -0,0 +1,31 @@ +# BaseConnectionInfoChronicleV2 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**region** | **str** | The target region | [optional] [default to 'us'] +**chronicle_customer_id** | **str** | Unique identifier (UUID) corresponding to a particular Chronicle instance | +**namespace** | **str** | User-configured environment namespace to identify the data domain the logs originated from | + +## Example + +```python +from sysdig_client.models.base_connection_info_chronicle_v2 import BaseConnectionInfoChronicleV2 + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoChronicleV2 from a JSON string +base_connection_info_chronicle_v2_instance = BaseConnectionInfoChronicleV2.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoChronicleV2.to_json()) + +# convert the object into a dict +base_connection_info_chronicle_v2_dict = base_connection_info_chronicle_v2_instance.to_dict() +# create an instance of BaseConnectionInfoChronicleV2 from a dict +base_connection_info_chronicle_v2_from_dict = BaseConnectionInfoChronicleV2.from_dict(base_connection_info_chronicle_v2_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoElasticsearch.md b/docs/reference/BaseConnectionInfoElasticsearch.md new file mode 100644 index 00000000..c0277412 --- /dev/null +++ b/docs/reference/BaseConnectionInfoElasticsearch.md @@ -0,0 +1,33 @@ +# BaseConnectionInfoElasticsearch + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | Elasticsearch instance endpoint URL | +**index** | **str** | Name of the index to store the data in | +**is_insecure** | **bool** | Don't verify TLS certificate | [optional] [default to False] +**auth** | **str** | Authentication method | [optional] +**format** | **str** | If specified, transforms `content.fields` and `labels` * `KV_PAIRS` - from objects (i.e. `{\"foo\": \"bar\", ...}`) to arrays of objects with \"key\" and \"value\" properties {i.e. `[{\"key\" : \"foo\", \"value\": \"bar\"}, ...]`) | [optional] + +## Example + +```python +from sysdig_client.models.base_connection_info_elasticsearch import BaseConnectionInfoElasticsearch + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoElasticsearch from a JSON string +base_connection_info_elasticsearch_instance = BaseConnectionInfoElasticsearch.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoElasticsearch.to_json()) + +# convert the object into a dict +base_connection_info_elasticsearch_dict = base_connection_info_elasticsearch_instance.to_dict() +# create an instance of BaseConnectionInfoElasticsearch from a dict +base_connection_info_elasticsearch_from_dict = BaseConnectionInfoElasticsearch.from_dict(base_connection_info_elasticsearch_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoGooglePubSub.md b/docs/reference/BaseConnectionInfoGooglePubSub.md new file mode 100644 index 00000000..15db864c --- /dev/null +++ b/docs/reference/BaseConnectionInfoGooglePubSub.md @@ -0,0 +1,32 @@ +# BaseConnectionInfoGooglePubSub + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**project** | **str** | GCP project ID hosting the target pub/sub | +**topic** | **str** | pub/sub topic onto which publish the data | +**ordering_key** | **str** | The key to use to order the messages. Required to enable ordered delivery | [optional] +**attributes** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the request. Each header mapping requires 2 keys: \"key\" for the header key and \"value\" for its value | [optional] + +## Example + +```python +from sysdig_client.models.base_connection_info_google_pub_sub import BaseConnectionInfoGooglePubSub + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoGooglePubSub from a JSON string +base_connection_info_google_pub_sub_instance = BaseConnectionInfoGooglePubSub.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoGooglePubSub.to_json()) + +# convert the object into a dict +base_connection_info_google_pub_sub_dict = base_connection_info_google_pub_sub_instance.to_dict() +# create an instance of BaseConnectionInfoGooglePubSub from a dict +base_connection_info_google_pub_sub_from_dict = BaseConnectionInfoGooglePubSub.from_dict(base_connection_info_google_pub_sub_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoGoogleScc.md b/docs/reference/BaseConnectionInfoGoogleScc.md new file mode 100644 index 00000000..e196d650 --- /dev/null +++ b/docs/reference/BaseConnectionInfoGoogleScc.md @@ -0,0 +1,30 @@ +# BaseConnectionInfoGoogleScc + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**organization** | **str** | ID of your GCP organization | +**security_marks** | [**List[KeyValueObject]**](KeyValueObject.md) | additional annotations to add to assets or findings as they get forwarded to Security Command Center | [optional] + +## Example + +```python +from sysdig_client.models.base_connection_info_google_scc import BaseConnectionInfoGoogleScc + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoGoogleScc from a JSON string +base_connection_info_google_scc_instance = BaseConnectionInfoGoogleScc.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoGoogleScc.to_json()) + +# convert the object into a dict +base_connection_info_google_scc_dict = base_connection_info_google_scc_instance.to_dict() +# create an instance of BaseConnectionInfoGoogleScc from a dict +base_connection_info_google_scc_from_dict = BaseConnectionInfoGoogleScc.from_dict(base_connection_info_google_scc_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoKafka.md b/docs/reference/BaseConnectionInfoKafka.md new file mode 100644 index 00000000..cb2341af --- /dev/null +++ b/docs/reference/BaseConnectionInfoKafka.md @@ -0,0 +1,34 @@ +# BaseConnectionInfoKafka + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**brokers** | **List[str]** | Kafka server endpoint. A Kafka cluster may provide several brokers; it follows the 'hostname: port' (without protocol scheme). | +**topic** | **str** | Kafka topic where you want to store the forwarded data | +**balancer** | **str** | Algorithm that the client uses to multiplex data between the multiple Brokers. For compatibility with the Java client, Murmur2 is used as the default partitioner | [optional] [default to 'murmur2'] +**compression** | **str** | Compression standard used for the data | [optional] +**is_tls_enabled** | **bool** | | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] + +## Example + +```python +from sysdig_client.models.base_connection_info_kafka import BaseConnectionInfoKafka + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoKafka from a JSON string +base_connection_info_kafka_instance = BaseConnectionInfoKafka.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoKafka.to_json()) + +# convert the object into a dict +base_connection_info_kafka_dict = base_connection_info_kafka_instance.to_dict() +# create an instance of BaseConnectionInfoKafka from a dict +base_connection_info_kafka_from_dict = BaseConnectionInfoKafka.from_dict(base_connection_info_kafka_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoMcm.md b/docs/reference/BaseConnectionInfoMcm.md new file mode 100644 index 00000000..ada59ff9 --- /dev/null +++ b/docs/reference/BaseConnectionInfoMcm.md @@ -0,0 +1,33 @@ +# BaseConnectionInfoMcm + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | The URL, including protocol and port (if non standard), to your IBM Cloud Pak for Multicloud Management API endpoint | +**account_id** | **str** | IBM Account ID | [optional] [default to 'id-mycluster-account'] +**provider_id** | **str** | The provider the findings will be associated to | [optional] [default to 'sysdig-secure'] +**note_name** | **str** | The note to use. If unspecified, a note with `policy-event` ID will be created and used | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] + +## Example + +```python +from sysdig_client.models.base_connection_info_mcm import BaseConnectionInfoMcm + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoMcm from a JSON string +base_connection_info_mcm_instance = BaseConnectionInfoMcm.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoMcm.to_json()) + +# convert the object into a dict +base_connection_info_mcm_dict = base_connection_info_mcm_instance.to_dict() +# create an instance of BaseConnectionInfoMcm from a dict +base_connection_info_mcm_from_dict = BaseConnectionInfoMcm.from_dict(base_connection_info_mcm_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoMicrosoftSentinel.md b/docs/reference/BaseConnectionInfoMicrosoftSentinel.md new file mode 100644 index 00000000..b5ea7ed3 --- /dev/null +++ b/docs/reference/BaseConnectionInfoMicrosoftSentinel.md @@ -0,0 +1,29 @@ +# BaseConnectionInfoMicrosoftSentinel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**workspace_id** | **str** | Log Analytics workspace ID | + +## Example + +```python +from sysdig_client.models.base_connection_info_microsoft_sentinel import BaseConnectionInfoMicrosoftSentinel + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoMicrosoftSentinel from a JSON string +base_connection_info_microsoft_sentinel_instance = BaseConnectionInfoMicrosoftSentinel.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoMicrosoftSentinel.to_json()) + +# convert the object into a dict +base_connection_info_microsoft_sentinel_dict = base_connection_info_microsoft_sentinel_instance.to_dict() +# create an instance of BaseConnectionInfoMicrosoftSentinel from a dict +base_connection_info_microsoft_sentinel_from_dict = BaseConnectionInfoMicrosoftSentinel.from_dict(base_connection_info_microsoft_sentinel_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoQradar.md b/docs/reference/BaseConnectionInfoQradar.md new file mode 100644 index 00000000..67155fbd --- /dev/null +++ b/docs/reference/BaseConnectionInfoQradar.md @@ -0,0 +1,32 @@ +# BaseConnectionInfoQradar + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**address** | **str** | DNS name or IP of the QRadar instance | +**port** | **int** | QRadar Management Port | +**is_insecure** | **bool** | Don't verify TLS certificate | [optional] +**is_tls** | **bool** | Use TLS encryption | [optional] [default to False] + +## Example + +```python +from sysdig_client.models.base_connection_info_qradar import BaseConnectionInfoQradar + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoQradar from a JSON string +base_connection_info_qradar_instance = BaseConnectionInfoQradar.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoQradar.to_json()) + +# convert the object into a dict +base_connection_info_qradar_dict = base_connection_info_qradar_instance.to_dict() +# create an instance of BaseConnectionInfoQradar from a dict +base_connection_info_qradar_from_dict = BaseConnectionInfoQradar.from_dict(base_connection_info_qradar_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoSplunk.md b/docs/reference/BaseConnectionInfoSplunk.md new file mode 100644 index 00000000..8bd0cc8f --- /dev/null +++ b/docs/reference/BaseConnectionInfoSplunk.md @@ -0,0 +1,33 @@ +# BaseConnectionInfoSplunk + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | URL of the Splunk instance | +**source_type** | **str** | Source type to override [Sysdig standard data type to source type mapping](https://docs.sysdig.com/en/forward-splunk#reference-data-categories-mapped-to-source-types) | [optional] +**index** | **str** | index to send data to. If unspecified, it will be used the index specified on the HTTP Event Collector configuration on Splunk | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] +**certificate_id** | **int** | ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field | [optional] + +## Example + +```python +from sysdig_client.models.base_connection_info_splunk import BaseConnectionInfoSplunk + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoSplunk from a JSON string +base_connection_info_splunk_instance = BaseConnectionInfoSplunk.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoSplunk.to_json()) + +# convert the object into a dict +base_connection_info_splunk_dict = base_connection_info_splunk_instance.to_dict() +# create an instance of BaseConnectionInfoSplunk from a dict +base_connection_info_splunk_from_dict = BaseConnectionInfoSplunk.from_dict(base_connection_info_splunk_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoSyslog.md b/docs/reference/BaseConnectionInfoSyslog.md new file mode 100644 index 00000000..8866c1a4 --- /dev/null +++ b/docs/reference/BaseConnectionInfoSyslog.md @@ -0,0 +1,35 @@ +# BaseConnectionInfoSyslog + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**address** | **str** | Address of the Syslog server | +**port** | **int** | port of the syslog server | +**message_format** | **str** | The syslog message format. RFC_5425 is TLS only | +**type** | **str** | protocol, tcp or udp (case insensitive) | [optional] [default to 'tcp'] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**formatter** | **str** | The message content format | [optional] [default to 'JSON'] +**certificate_id** | **int** | ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field | [optional] + +## Example + +```python +from sysdig_client.models.base_connection_info_syslog import BaseConnectionInfoSyslog + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoSyslog from a JSON string +base_connection_info_syslog_instance = BaseConnectionInfoSyslog.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoSyslog.to_json()) + +# convert the object into a dict +base_connection_info_syslog_dict = base_connection_info_syslog_instance.to_dict() +# create an instance of BaseConnectionInfoSyslog from a dict +base_connection_info_syslog_from_dict = BaseConnectionInfoSyslog.from_dict(base_connection_info_syslog_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseConnectionInfoWebhook.md b/docs/reference/BaseConnectionInfoWebhook.md new file mode 100644 index 00000000..21d11095 --- /dev/null +++ b/docs/reference/BaseConnectionInfoWebhook.md @@ -0,0 +1,35 @@ +# BaseConnectionInfoWebhook + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | Webhook endpoint following the schema protocol | +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**headers** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the request. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value | [optional] +**output** | **str** | Payload format | [optional] [default to 'json'] +**timestamp_format** | **str** | The resolution of the \"timestamp\" field in the payload | [optional] [default to 'nanoseconds'] +**auth** | **str** | Authentication method | [optional] +**certificate_id** | **int** | ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field | [optional] + +## Example + +```python +from sysdig_client.models.base_connection_info_webhook import BaseConnectionInfoWebhook + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseConnectionInfoWebhook from a JSON string +base_connection_info_webhook_instance = BaseConnectionInfoWebhook.from_json(json) +# print the JSON string representation of the object +print(BaseConnectionInfoWebhook.to_json()) + +# convert the object into a dict +base_connection_info_webhook_dict = base_connection_info_webhook_instance.to_dict() +# create an instance of BaseConnectionInfoWebhook from a dict +base_connection_info_webhook_from_dict = BaseConnectionInfoWebhook.from_dict(base_connection_info_webhook_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseContent.md b/docs/reference/BaseContent.md new file mode 100644 index 00000000..85108fa5 --- /dev/null +++ b/docs/reference/BaseContent.md @@ -0,0 +1,30 @@ +# BaseContent + +Base content for all events + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**EventContentType**](EventContentType.md) | | + +## Example + +```python +from sysdig_client.models.base_content import BaseContent + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseContent from a JSON string +base_content_instance = BaseContent.from_json(json) +# print the JSON string representation of the object +print(BaseContent.to_json()) + +# convert the object into a dict +base_content_dict = base_content_instance.to_dict() +# create an instance of BaseContent from a dict +base_content_from_dict = BaseContent.from_dict(base_content_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseImage.md b/docs/reference/BaseImage.md new file mode 100644 index 00000000..a2dd0732 --- /dev/null +++ b/docs/reference/BaseImage.md @@ -0,0 +1,29 @@ +# BaseImage + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**pull_strings** | **List[str]** | | [optional] + +## Example + +```python +from sysdig_client.models.base_image import BaseImage + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseImage from a JSON string +base_image_instance = BaseImage.from_json(json) +# print the JSON string representation of the object +print(BaseImage.to_json()) + +# convert the object into a dict +base_image_dict = base_image_instance.to_dict() +# create an instance of BaseImage from a dict +base_image_from_dict = BaseImage.from_dict(base_image_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseIntegrationPayload.md b/docs/reference/BaseIntegrationPayload.md new file mode 100644 index 00000000..a0ba15de --- /dev/null +++ b/docs/reference/BaseIntegrationPayload.md @@ -0,0 +1,32 @@ +# BaseIntegrationPayload + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] + +## Example + +```python +from sysdig_client.models.base_integration_payload import BaseIntegrationPayload + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseIntegrationPayload from a JSON string +base_integration_payload_instance = BaseIntegrationPayload.from_json(json) +# print the JSON string representation of the object +print(BaseIntegrationPayload.to_json()) + +# convert the object into a dict +base_integration_payload_dict = base_integration_payload_instance.to_dict() +# create an instance of BaseIntegrationPayload from a dict +base_integration_payload_from_dict = BaseIntegrationPayload.from_dict(base_integration_payload_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseMonitorEvent.md b/docs/reference/BaseMonitorEvent.md new file mode 100644 index 00000000..1489e40d --- /dev/null +++ b/docs/reference/BaseMonitorEvent.md @@ -0,0 +1,37 @@ +# BaseMonitorEvent + +Base Monitor Event + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The event id. | +**created_on** | **datetime** | Timestamp when the event was created in the system | +**occurred_at** | **datetime** | Event logical timestamp (when the event occurred). For alert events, this is the time when the alert was triggered. | +**name** | **str** | The event name | +**description** | **str** | Description of the event. | [optional] +**severity** | **int** | The event severity. A lower value means more severe, with 0 being the highest severity and 7 being the lowest. | +**scope_labels** | [**List[MonitorScopeLabel]**](MonitorScopeLabel.md) | List of scope labels, including those from initial scope and those coming from the enrichment process. | [optional] +**scope** | **str** | Initial event scope | [optional] + +## Example + +```python +from sysdig_client.models.base_monitor_event import BaseMonitorEvent + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseMonitorEvent from a JSON string +base_monitor_event_instance = BaseMonitorEvent.from_json(json) +# print the JSON string representation of the object +print(BaseMonitorEvent.to_json()) + +# convert the object into a dict +base_monitor_event_dict = base_monitor_event_instance.to_dict() +# create an instance of BaseMonitorEvent from a dict +base_monitor_event_from_dict = BaseMonitorEvent.from_dict(base_monitor_event_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseRiskAcceptedPayload.md b/docs/reference/BaseRiskAcceptedPayload.md new file mode 100644 index 00000000..c9c1bb30 --- /dev/null +++ b/docs/reference/BaseRiskAcceptedPayload.md @@ -0,0 +1,33 @@ +# BaseRiskAcceptedPayload + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**entity_value** | **str** | A value to match with the entityType | [optional] +**expiration_date** | **date** | Date when the accepted risk will expire (in YYYY-MM-DD format) | [optional] +**reason** | **str** | Reason for acceptance | [optional] +**description** | **str** | Description of why the accepted risk was created | [optional] +**stages** | **List[str]** | List of stages where the risk acceptance is applied, empty list enables risk acceptance for all the stages | [optional] + +## Example + +```python +from sysdig_client.models.base_risk_accepted_payload import BaseRiskAcceptedPayload + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseRiskAcceptedPayload from a JSON string +base_risk_accepted_payload_instance = BaseRiskAcceptedPayload.from_json(json) +# print the JSON string representation of the object +print(BaseRiskAcceptedPayload.to_json()) + +# convert the object into a dict +base_risk_accepted_payload_dict = base_risk_accepted_payload_instance.to_dict() +# create an instance of BaseRiskAcceptedPayload from a dict +base_risk_accepted_payload_from_dict = BaseRiskAcceptedPayload.from_dict(base_risk_accepted_payload_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BaseRiskAcceptedResponsePayload.md b/docs/reference/BaseRiskAcceptedResponsePayload.md new file mode 100644 index 00000000..6748beab --- /dev/null +++ b/docs/reference/BaseRiskAcceptedResponsePayload.md @@ -0,0 +1,35 @@ +# BaseRiskAcceptedResponsePayload + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The Accepted Risk ID | [optional] +**expiration_date** | **date** | Date when the accepted risk will expire (in YYYY-MM-DD format) | [optional] +**created_at** | **datetime** | Date when the Accepted Risk was created | [optional] +**updated_at** | **datetime** | Date when the Accepted Risk was updated | [optional] +**status** | **str** | Specifies whether the Accepted Risk is enabled or expired | [optional] +**created_by** | **str** | User who created the risk acceptance | [optional] +**updated_by** | **str** | User who last updated the risk acceptance | [optional] + +## Example + +```python +from sysdig_client.models.base_risk_accepted_response_payload import BaseRiskAcceptedResponsePayload + +# TODO update the JSON string below +json = "{}" +# create an instance of BaseRiskAcceptedResponsePayload from a JSON string +base_risk_accepted_response_payload_instance = BaseRiskAcceptedResponsePayload.from_json(json) +# print the JSON string representation of the object +print(BaseRiskAcceptedResponsePayload.to_json()) + +# convert the object into a dict +base_risk_accepted_response_payload_dict = base_risk_accepted_response_payload_instance.to_dict() +# create an instance of BaseRiskAcceptedResponsePayload from a dict +base_risk_accepted_response_payload_from_dict = BaseRiskAcceptedResponsePayload.from_dict(base_risk_accepted_response_payload_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BucketConfigurationV1.md b/docs/reference/BucketConfigurationV1.md new file mode 100644 index 00000000..8fa3cc6f --- /dev/null +++ b/docs/reference/BucketConfigurationV1.md @@ -0,0 +1,35 @@ +# BucketConfigurationV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | The name of the bucket. | +**folder** | **str** | The folder in the bucket where the captures are stored. Name of the folder without any prefix slashes (\"test-folder\" and not \"/test-folder\"). | [optional] +**description** | **str** | The description of the bucket. | [optional] +**provider_key_id** | **str** | Id of the configured cloud provider account. Could be fetched with /api/providers endpoint. | [optional] +**endpoint** | **str** | The endpoint of the bucket. ***Required for S3 compatible storage.*** | [optional] +**region** | **str** | The region of the bucket. | [optional] +**path_style_access** | **bool** | Specifies if the bucket uses path-style access. | [optional] [default to False] + +## Example + +```python +from sysdig_client.models.bucket_configuration_v1 import BucketConfigurationV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of BucketConfigurationV1 from a JSON string +bucket_configuration_v1_instance = BucketConfigurationV1.from_json(json) +# print the JSON string representation of the object +print(BucketConfigurationV1.to_json()) + +# convert the object into a dict +bucket_configuration_v1_dict = bucket_configuration_v1_instance.to_dict() +# create an instance of BucketConfigurationV1 from a dict +bucket_configuration_v1_from_dict = BucketConfigurationV1.from_dict(bucket_configuration_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Bundle.md b/docs/reference/Bundle.md new file mode 100644 index 00000000..290e7f9e --- /dev/null +++ b/docs/reference/Bundle.md @@ -0,0 +1,32 @@ +# Bundle + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | Name of the bundle | [optional] +**identifier** | **str** | Identifier of the bundle | [optional] +**type** | **str** | | [optional] +**rules** | [**List[Rule]**](Rule.md) | | [optional] + +## Example + +```python +from sysdig_client.models.bundle import Bundle + +# TODO update the JSON string below +json = "{}" +# create an instance of Bundle from a JSON string +bundle_instance = Bundle.from_json(json) +# print the JSON string representation of the object +print(Bundle.to_json()) + +# convert the object into a dict +bundle_dict = bundle_instance.to_dict() +# create an instance of Bundle from a dict +bundle_from_dict = Bundle.from_dict(bundle_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BundleRef.md b/docs/reference/BundleRef.md new file mode 100644 index 00000000..1b38b659 --- /dev/null +++ b/docs/reference/BundleRef.md @@ -0,0 +1,30 @@ +# BundleRef + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | The Bundle ID. | +**name** | **str** | The human readable Bundle name. | [optional] + +## Example + +```python +from sysdig_client.models.bundle_ref import BundleRef + +# TODO update the JSON string below +json = "{}" +# create an instance of BundleRef from a JSON string +bundle_ref_instance = BundleRef.from_json(json) +# print the JSON string representation of the object +print(BundleRef.to_json()) + +# convert the object into a dict +bundle_ref_dict = bundle_ref_instance.to_dict() +# create an instance of BundleRef from a dict +bundle_ref_from_dict = BundleRef.from_dict(bundle_ref_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BundleRule.md b/docs/reference/BundleRule.md new file mode 100644 index 00000000..fe69a245 --- /dev/null +++ b/docs/reference/BundleRule.md @@ -0,0 +1,32 @@ +# BundleRule + +A Rule definition + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**rule_type** | **str** | The type of the rule. It may be one of the following: - vulnSeverityAndThreats - vulnDenyList - imageConfigDefaultUser - imageConfigLabel - imageConfigEnvVariable - imageConfigInstructionNotRecommended - imageConfigInstructionIsPkgManager - imageConfigCreationDate - imageConfigSensitiveInformationAndSecrets - pkgDenyList | +**predicates** | [**List[BundleRulePredicatesInner]**](BundleRulePredicatesInner.md) | The Predicates defining this Rule | +**rule_id** | **str** | | + +## Example + +```python +from sysdig_client.models.bundle_rule import BundleRule + +# TODO update the JSON string below +json = "{}" +# create an instance of BundleRule from a JSON string +bundle_rule_instance = BundleRule.from_json(json) +# print the JSON string representation of the object +print(BundleRule.to_json()) + +# convert the object into a dict +bundle_rule_dict = bundle_rule_instance.to_dict() +# create an instance of BundleRule from a dict +bundle_rule_from_dict = BundleRule.from_dict(bundle_rule_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/BundleRulePredicatesInner.md b/docs/reference/BundleRulePredicatesInner.md new file mode 100644 index 00000000..a8e6be34 --- /dev/null +++ b/docs/reference/BundleRulePredicatesInner.md @@ -0,0 +1,30 @@ +# BundleRulePredicatesInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | **object** | | [optional] + +## Example + +```python +from sysdig_client.models.bundle_rule_predicates_inner import BundleRulePredicatesInner + +# TODO update the JSON string below +json = "{}" +# create an instance of BundleRulePredicatesInner from a JSON string +bundle_rule_predicates_inner_instance = BundleRulePredicatesInner.from_json(json) +# print the JSON string representation of the object +print(BundleRulePredicatesInner.to_json()) + +# convert the object into a dict +bundle_rule_predicates_inner_dict = bundle_rule_predicates_inner_instance.to_dict() +# create an instance of BundleRulePredicatesInner from a dict +bundle_rule_predicates_inner_from_dict = BundleRulePredicatesInner.from_dict(bundle_rule_predicates_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CaptureAction.md b/docs/reference/CaptureAction.md new file mode 100644 index 00000000..78a7afe2 --- /dev/null +++ b/docs/reference/CaptureAction.md @@ -0,0 +1,35 @@ +# CaptureAction + +Outcome of the Take Capture action configured in the policy. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ActionType**](ActionType.md) | | +**is_successful** | **bool** | Whether or not the Capture was taken successfully. | [optional] +**err_msg** | **str** | When `isSuccessful` is `false`, details on why the action failed. | [optional] +**token** | **str** | Token to retrieve the related capture. | [optional] +**after_event_ns** | **int** | Amount of nanoseconds after the event the Capture spans. | [optional] +**before_event_ns** | **int** | Amount of nanoseconds before the event the Capture spans. | [optional] + +## Example + +```python +from sysdig_client.models.capture_action import CaptureAction + +# TODO update the JSON string below +json = "{}" +# create an instance of CaptureAction from a JSON string +capture_action_instance = CaptureAction.from_json(json) +# print the JSON string representation of the object +print(CaptureAction.to_json()) + +# convert the object into a dict +capture_action_dict = capture_action_instance.to_dict() +# create an instance of CaptureAction from a dict +capture_action_from_dict = CaptureAction.from_dict(capture_action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CaptureStorageApi.md b/docs/reference/CaptureStorageApi.md new file mode 100644 index 00000000..9bc62ccf --- /dev/null +++ b/docs/reference/CaptureStorageApi.md @@ -0,0 +1,180 @@ +# sysdig_client.CaptureStorageApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_capture_storage_configuration_v1**](CaptureStorageApi.md#get_capture_storage_configuration_v1) | **GET** /platform/v1/configuration/capture-storage | Get Capture Storage Configuration +[**update_capture_storage_configuration_v1**](CaptureStorageApi.md#update_capture_storage_configuration_v1) | **PUT** /platform/v1/configuration/capture-storage | Update or Create Capture Storage Configuration + + +# **get_capture_storage_configuration_v1** +> CaptureStorageConfigurationResponseV1 get_capture_storage_configuration_v1() + +Get Capture Storage Configuration + +Retrieve the capture storage configuration.\ +\ +**Required permissions:** _sysdig-storage.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.capture_storage_configuration_response_v1 import CaptureStorageConfigurationResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CaptureStorageApi(api_client) + + try: + # Get Capture Storage Configuration + api_response = api_instance.get_capture_storage_configuration_v1() + print("The response of CaptureStorageApi->get_capture_storage_configuration_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CaptureStorageApi->get_capture_storage_configuration_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**CaptureStorageConfigurationResponseV1**](CaptureStorageConfigurationResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Display the Capture Storage Configuration. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_capture_storage_configuration_v1** +> CaptureStorageConfigurationResponseV1 update_capture_storage_configuration_v1(save_capture_storage_configuration_request_v1=save_capture_storage_configuration_request_v1) + +Update or Create Capture Storage Configuration + +Update or Create Capture Storage configuration.\ +\ +**Required permissions:** _sysdig-storage.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.capture_storage_configuration_response_v1 import CaptureStorageConfigurationResponseV1 +from sysdig_client.models.save_capture_storage_configuration_request_v1 import SaveCaptureStorageConfigurationRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CaptureStorageApi(api_client) + save_capture_storage_configuration_request_v1 = sysdig_client.SaveCaptureStorageConfigurationRequestV1() # SaveCaptureStorageConfigurationRequestV1 | (optional) + + try: + # Update or Create Capture Storage Configuration + api_response = api_instance.update_capture_storage_configuration_v1(save_capture_storage_configuration_request_v1=save_capture_storage_configuration_request_v1) + print("The response of CaptureStorageApi->update_capture_storage_configuration_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CaptureStorageApi->update_capture_storage_configuration_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **save_capture_storage_configuration_request_v1** | [**SaveCaptureStorageConfigurationRequestV1**](SaveCaptureStorageConfigurationRequestV1.md)| | [optional] + +### Return type + +[**CaptureStorageConfigurationResponseV1**](CaptureStorageConfigurationResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Capture Storage updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/CaptureStorageConfigurationResponseV1.md b/docs/reference/CaptureStorageConfigurationResponseV1.md new file mode 100644 index 00000000..a4e7a349 --- /dev/null +++ b/docs/reference/CaptureStorageConfigurationResponseV1.md @@ -0,0 +1,31 @@ +# CaptureStorageConfigurationResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_enabled** | **bool** | Specifies if capture storage is enabled. | [optional] +**is_encryption_with_provided_key_enabled** | **bool** | Specifies if server-side encryption with provided encryption key (SSE-C) is enabled. | [optional] +**buckets** | [**List[BucketConfigurationV1]**](BucketConfigurationV1.md) | The list of buckets where the captures are stored. Currently only one bucket is supported. | [optional] + +## Example + +```python +from sysdig_client.models.capture_storage_configuration_response_v1 import CaptureStorageConfigurationResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CaptureStorageConfigurationResponseV1 from a JSON string +capture_storage_configuration_response_v1_instance = CaptureStorageConfigurationResponseV1.from_json(json) +# print the JSON string representation of the object +print(CaptureStorageConfigurationResponseV1.to_json()) + +# convert the object into a dict +capture_storage_configuration_response_v1_dict = capture_storage_configuration_response_v1_instance.to_dict() +# create an instance of CaptureStorageConfigurationResponseV1 from a dict +capture_storage_configuration_response_v1_from_dict = CaptureStorageConfigurationResponseV1.from_dict(capture_storage_configuration_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Category.md b/docs/reference/Category.md new file mode 100644 index 00000000..46a5f94d --- /dev/null +++ b/docs/reference/Category.md @@ -0,0 +1,25 @@ +# Category + +The event category: - `runtime` - Agent-based threat detection events - `remote` - Kubernetes admission requests and CloudConnector events - `admissionController` - Kubernetes admission requests-posture checks - `cloudtrail` - Agentless CloudTrail CDR events - `okta` - Agentless Okta CDR events - `github` - Agentless Github CDR events - `falcocloud` - Agentless CDR events (excluded CloudTrail, Okta, Github) - `miner` - Workload ML Crypto events + +## Enum + +* `RUNTIME` (value: `'runtime'`) + +* `REMOTE` (value: `'remote'`) + +* `ADMISSIONCONTROLLER` (value: `'admissionController'`) + +* `CLOUDTRAIL` (value: `'cloudtrail'`) + +* `OKTA` (value: `'okta'`) + +* `GITHUB` (value: `'github'`) + +* `FALCOCLOUD` (value: `'falcocloud'`) + +* `MINER` (value: `'miner'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Certificate.md b/docs/reference/Certificate.md new file mode 100644 index 00000000..68a3b932 --- /dev/null +++ b/docs/reference/Certificate.md @@ -0,0 +1,36 @@ +# Certificate + +An X-509 certificate + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | The certificate ID. | +**certificate_name** | **str** | The certificate Name. | +**created** | **datetime** | The timestamp the certificate was created. | +**issuer** | **str** | The Distinguished Name of the certificate issuer. | +**validity** | [**CertificateValidity**](CertificateValidity.md) | | +**usage** | **int** | The number of services that currently use that certificate. | +**fingerprint** | **str** | The certificate fingerprint | + +## Example + +```python +from sysdig_client.models.certificate import Certificate + +# TODO update the JSON string below +json = "{}" +# create an instance of Certificate from a JSON string +certificate_instance = Certificate.from_json(json) +# print the JSON string representation of the object +print(Certificate.to_json()) + +# convert the object into a dict +certificate_dict = certificate_instance.to_dict() +# create an instance of Certificate from a dict +certificate_from_dict = Certificate.from_dict(certificate_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CertificateValidity.md b/docs/reference/CertificateValidity.md new file mode 100644 index 00000000..38634059 --- /dev/null +++ b/docs/reference/CertificateValidity.md @@ -0,0 +1,31 @@ +# CertificateValidity + +The certificate validity interval. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**after** | **datetime** | The beginning of the certificate validity period. | [optional] +**before** | **datetime** | The end of the certificate validity period. | [optional] + +## Example + +```python +from sysdig_client.models.certificate_validity import CertificateValidity + +# TODO update the JSON string below +json = "{}" +# create an instance of CertificateValidity from a JSON string +certificate_validity_instance = CertificateValidity.from_json(json) +# print the JSON string representation of the object +print(CertificateValidity.to_json()) + +# convert the object into a dict +certificate_validity_dict = certificate_validity_instance.to_dict() +# create an instance of CertificateValidity from a dict +certificate_validity_from_dict = CertificateValidity.from_dict(certificate_validity_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CertificatesApi.md b/docs/reference/CertificatesApi.md new file mode 100644 index 00000000..96c8eed3 --- /dev/null +++ b/docs/reference/CertificatesApi.md @@ -0,0 +1,528 @@ +# sysdig_client.CertificatesApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_csrv1**](CertificatesApi.md#create_csrv1) | **POST** /secure/certman/v1/csr | Create CSR +[**delete_certificate_v1**](CertificatesApi.md#delete_certificate_v1) | **DELETE** /secure/certman/v1/certificates/{certId} | Delete Certificate +[**get_certificate_registration_v1**](CertificatesApi.md#get_certificate_registration_v1) | **GET** /secure/certman/v1/certificates/{certId}/services | List Services +[**get_certificate_v1**](CertificatesApi.md#get_certificate_v1) | **GET** /secure/certman/v1/certificates/{certId} | Get Certificate +[**get_certificates_v1**](CertificatesApi.md#get_certificates_v1) | **GET** /secure/certman/v1/certificates | List Certificates +[**upload_certificate_v1**](CertificatesApi.md#upload_certificate_v1) | **POST** /secure/certman/v1/certificates | Upload Certificate + + +# **create_csrv1** +> str create_csrv1() + +Create CSR + +Creates a Certificate Signing Request generated from the customer unique +private key. The CSR is generated on the fly.\ +\ +**Required permissions:** _certman.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CertificatesApi(api_client) + + try: + # Create CSR + api_response = api_instance.create_csrv1() + print("The response of CertificatesApi->create_csrv1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CertificatesApi->create_csrv1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +**str** + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: text/plain, application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The Certificate Signing Request plaintext content | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_certificate_v1** +> delete_certificate_v1(cert_id) + +Delete Certificate + +Deletes a certificate given its id. + +A certificate cannot be deleted if +it's being used (i.e. by the events forwarder to connect to third +parties).\ +\ +**Required permissions:** _certman.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CertificatesApi(api_client) + cert_id = 'cert_id_example' # str | ID of the certificate + + try: + # Delete Certificate + api_instance.delete_certificate_v1(cert_id) + except Exception as e: + print("Exception when calling CertificatesApi->delete_certificate_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cert_id** | **str**| ID of the certificate | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | The certificate has been deleted successfully. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | The certificate cannot be deleted because it's currently being used. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_certificate_registration_v1** +> ServicesResponse get_certificate_registration_v1(cert_id) + +List Services + +Returns he list of integrations using this certificate.\ +\ +**Required permissions:** _certman.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.services_response import ServicesResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CertificatesApi(api_client) + cert_id = 'cert_id_example' # str | ID of the certificate + + try: + # List Services + api_response = api_instance.get_certificate_registration_v1(cert_id) + print("The response of CertificatesApi->get_certificate_registration_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CertificatesApi->get_certificate_registration_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cert_id** | **str**| ID of the certificate | + +### Return type + +[**ServicesResponse**](ServicesResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of certificates registrations. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Invalid certificate ID | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_certificate_v1** +> Certificate get_certificate_v1(cert_id) + +Get Certificate + +Get a single certificate.\ +\ +**Required permissions:** _certman.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.certificate import Certificate +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CertificatesApi(api_client) + cert_id = 'cert_id_example' # str | ID of the certificate + + try: + # Get Certificate + api_response = api_instance.get_certificate_v1(cert_id) + print("The response of CertificatesApi->get_certificate_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CertificatesApi->get_certificate_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cert_id** | **str**| ID of the certificate | + +### Return type + +[**Certificate**](Certificate.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The certificate. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Invalid certificate ID | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_certificates_v1** +> CertificatesResponse get_certificates_v1() + +List Certificates + +Returns the list of certificates.\ +\ +**Required permissions:** _certman.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.certificates_response import CertificatesResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CertificatesApi(api_client) + + try: + # List Certificates + api_response = api_instance.get_certificates_v1() + print("The response of CertificatesApi->get_certificates_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CertificatesApi->get_certificates_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**CertificatesResponse**](CertificatesResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of certificates. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **upload_certificate_v1** +> Certificate upload_certificate_v1(certificate_file_name, name) + +Upload Certificate + +Uploads a certificate that has been created by signing a CSR obtained +via Certificates Management.\ +\ +**Required permissions:** _certman.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.certificate import Certificate +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CertificatesApi(api_client) + certificate_file_name = None # bytearray | The certificate file to be uploaded + name = 'name_example' # str | The name of the certificate that is being uploaded + + try: + # Upload Certificate + api_response = api_instance.upload_certificate_v1(certificate_file_name, name) + print("The response of CertificatesApi->upload_certificate_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CertificatesApi->upload_certificate_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **certificate_file_name** | **bytearray**| The certificate file to be uploaded | + **name** | **str**| The name of the certificate that is being uploaded | + +### Return type + +[**Certificate**](Certificate.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | The certificate has been upload correctly. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid certificate | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/CertificatesResponse.md b/docs/reference/CertificatesResponse.md new file mode 100644 index 00000000..b9e6a46e --- /dev/null +++ b/docs/reference/CertificatesResponse.md @@ -0,0 +1,30 @@ +# CertificatesResponse + +Customer certificates + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[Certificate]**](Certificate.md) | | + +## Example + +```python +from sysdig_client.models.certificates_response import CertificatesResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of CertificatesResponse from a JSON string +certificates_response_instance = CertificatesResponse.from_json(json) +# print the JSON string representation of the object +print(CertificatesResponse.to_json()) + +# convert the object into a dict +certificates_response_dict = certificates_response_instance.to_dict() +# create an instance of CertificatesResponse from a dict +certificates_response_from_dict = CertificatesResponse.from_dict(certificates_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CheckboxFieldValueV1.md b/docs/reference/CheckboxFieldValueV1.md new file mode 100644 index 00000000..bb6c4819 --- /dev/null +++ b/docs/reference/CheckboxFieldValueV1.md @@ -0,0 +1,30 @@ +# CheckboxFieldValueV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Jira checkbox field id. | +**value** | **str** | Jira checkbox field value. | + +## Example + +```python +from sysdig_client.models.checkbox_field_value_v1 import CheckboxFieldValueV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CheckboxFieldValueV1 from a JSON string +checkbox_field_value_v1_instance = CheckboxFieldValueV1.from_json(json) +# print the JSON string representation of the object +print(CheckboxFieldValueV1.to_json()) + +# convert the object into a dict +checkbox_field_value_v1_dict = checkbox_field_value_v1_instance.to_dict() +# create an instance of CheckboxFieldValueV1 from a dict +checkbox_field_value_v1_from_dict = CheckboxFieldValueV1.from_dict(checkbox_field_value_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ChronicleCreateConnectionInfo.md b/docs/reference/ChronicleCreateConnectionInfo.md new file mode 100644 index 00000000..6c0a506d --- /dev/null +++ b/docs/reference/ChronicleCreateConnectionInfo.md @@ -0,0 +1,33 @@ +# ChronicleCreateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**region** | **str** | The target region | [optional] [default to 'us'] +**chronicle_customer_id** | **str** | Unique identifier (UUID) corresponding to a particular Chronicle instance | +**namespace** | **str** | User-configured environment namespace to identify the data domain the logs originated from | +**credentials_o_auth2** | **str** | The Chronicle v2 OAuth2 credentials | +**api_key** | **str** | The Chronicle v1 API key | + +## Example + +```python +from sysdig_client.models.chronicle_create_connection_info import ChronicleCreateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of ChronicleCreateConnectionInfo from a JSON string +chronicle_create_connection_info_instance = ChronicleCreateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(ChronicleCreateConnectionInfo.to_json()) + +# convert the object into a dict +chronicle_create_connection_info_dict = chronicle_create_connection_info_instance.to_dict() +# create an instance of ChronicleCreateConnectionInfo from a dict +chronicle_create_connection_info_from_dict = ChronicleCreateConnectionInfo.from_dict(chronicle_create_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ChronicleUpdateConnectionInfo.md b/docs/reference/ChronicleUpdateConnectionInfo.md new file mode 100644 index 00000000..8df0b2ad --- /dev/null +++ b/docs/reference/ChronicleUpdateConnectionInfo.md @@ -0,0 +1,33 @@ +# ChronicleUpdateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**region** | **str** | The target region | [optional] [default to 'us'] +**chronicle_customer_id** | **str** | Unique identifier (UUID) corresponding to a particular Chronicle instance | +**namespace** | **str** | User-configured environment namespace to identify the data domain the logs originated from | +**credentials_o_auth2** | **str** | The Chronicle v2 OAuth2 credentials | [optional] +**api_key** | **str** | The Chronicle v1 API key | [optional] + +## Example + +```python +from sysdig_client.models.chronicle_update_connection_info import ChronicleUpdateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of ChronicleUpdateConnectionInfo from a JSON string +chronicle_update_connection_info_instance = ChronicleUpdateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(ChronicleUpdateConnectionInfo.to_json()) + +# convert the object into a dict +chronicle_update_connection_info_dict = chronicle_update_connection_info_instance.to_dict() +# create an instance of ChronicleUpdateConnectionInfo from a dict +chronicle_update_connection_info_from_dict = ChronicleUpdateConnectionInfo.from_dict(chronicle_update_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CisaKevAvailableSince.md b/docs/reference/CisaKevAvailableSince.md new file mode 100644 index 00000000..c753f295 --- /dev/null +++ b/docs/reference/CisaKevAvailableSince.md @@ -0,0 +1,31 @@ +# CisaKevAvailableSince + +Number of days since the vulnerability was added to CISA's Known Exploited Vulnerabilities (KEV) catalog. Calculated from initial inclusion date to current date. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**CisaKevPublishDateExtra**](CisaKevPublishDateExtra.md) | | + +## Example + +```python +from sysdig_client.models.cisa_kev_available_since import CisaKevAvailableSince + +# TODO update the JSON string below +json = "{}" +# create an instance of CisaKevAvailableSince from a JSON string +cisa_kev_available_since_instance = CisaKevAvailableSince.from_json(json) +# print the JSON string representation of the object +print(CisaKevAvailableSince.to_json()) + +# convert the object into a dict +cisa_kev_available_since_dict = cisa_kev_available_since_instance.to_dict() +# create an instance of CisaKevAvailableSince from a dict +cisa_kev_available_since_from_dict = CisaKevAvailableSince.from_dict(cisa_kev_available_since_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CisaKevKnownRansomwareCampaignUse.md b/docs/reference/CisaKevKnownRansomwareCampaignUse.md new file mode 100644 index 00000000..a7c16568 --- /dev/null +++ b/docs/reference/CisaKevKnownRansomwareCampaignUse.md @@ -0,0 +1,30 @@ +# CisaKevKnownRansomwareCampaignUse + +The vulnerability listed in CISA's KEV catalog as actively exploited in ransomware campaigns. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.cisa_kev_known_ransomware_campaign_use import CisaKevKnownRansomwareCampaignUse + +# TODO update the JSON string below +json = "{}" +# create an instance of CisaKevKnownRansomwareCampaignUse from a JSON string +cisa_kev_known_ransomware_campaign_use_instance = CisaKevKnownRansomwareCampaignUse.from_json(json) +# print the JSON string representation of the object +print(CisaKevKnownRansomwareCampaignUse.to_json()) + +# convert the object into a dict +cisa_kev_known_ransomware_campaign_use_dict = cisa_kev_known_ransomware_campaign_use_instance.to_dict() +# create an instance of CisaKevKnownRansomwareCampaignUse from a dict +cisa_kev_known_ransomware_campaign_use_from_dict = CisaKevKnownRansomwareCampaignUse.from_dict(cisa_kev_known_ransomware_campaign_use_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CisaKevPublishDate.md b/docs/reference/CisaKevPublishDate.md new file mode 100644 index 00000000..ccd09b6c --- /dev/null +++ b/docs/reference/CisaKevPublishDate.md @@ -0,0 +1,31 @@ +# CisaKevPublishDate + +Number of days remaining until the CISA KEV-listed vulnerability is fixed. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**CisaKevPublishDateExtra**](CisaKevPublishDateExtra.md) | | + +## Example + +```python +from sysdig_client.models.cisa_kev_publish_date import CisaKevPublishDate + +# TODO update the JSON string below +json = "{}" +# create an instance of CisaKevPublishDate from a JSON string +cisa_kev_publish_date_instance = CisaKevPublishDate.from_json(json) +# print the JSON string representation of the object +print(CisaKevPublishDate.to_json()) + +# convert the object into a dict +cisa_kev_publish_date_dict = cisa_kev_publish_date_instance.to_dict() +# create an instance of CisaKevPublishDate from a dict +cisa_kev_publish_date_from_dict = CisaKevPublishDate.from_dict(cisa_kev_publish_date_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CisaKevPublishDateExtra.md b/docs/reference/CisaKevPublishDateExtra.md new file mode 100644 index 00000000..b5facd5a --- /dev/null +++ b/docs/reference/CisaKevPublishDateExtra.md @@ -0,0 +1,29 @@ +# CisaKevPublishDateExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**days** | **int** | Number of days. | [optional] + +## Example + +```python +from sysdig_client.models.cisa_kev_publish_date_extra import CisaKevPublishDateExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of CisaKevPublishDateExtra from a JSON string +cisa_kev_publish_date_extra_instance = CisaKevPublishDateExtra.from_json(json) +# print the JSON string representation of the object +print(CisaKevPublishDateExtra.to_json()) + +# convert the object into a dict +cisa_kev_publish_date_extra_dict = cisa_kev_publish_date_extra_instance.to_dict() +# create an instance of CisaKevPublishDateExtra from a dict +cisa_kev_publish_date_extra_from_dict = CisaKevPublishDateExtra.from_dict(cisa_kev_publish_date_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Command.md b/docs/reference/Command.md new file mode 100644 index 00000000..3fb3a869 --- /dev/null +++ b/docs/reference/Command.md @@ -0,0 +1,49 @@ +# Command + +Represents a command execution. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The audit event id. | +**timestamp** | **int** | Timestamp the audit event occured, expressed in nanoseconds. | +**type** | **str** | The entry type | +**container_id** | **str** | The container id. `containerId` is present only if the audit event was collected in a container context. | [optional] +**cmdline** | **str** | Full command line | +**comm** | **str** | The name of the command. | +**pcomm** | **str** | The name of the parent command. | +**pid** | **int** | Process ID. | +**ppid** | **int** | Parent process ID. | +**uid** | **int** | User ID | +**username** | **str** | Username | [optional] +**cwd** | **str** | Command working directory. | +**login_shell_id** | **int** | Process id of the shell. | +**login_shell_distance** | **int** | Level of nesting from the parent shell. | +**hostname** | **str** | The Kubernetes hostname. | +**tty** | **int** | TTY number. | +**user_login_uid** | **int** | User login UID. | +**user_login_name** | **str** | User login name. | +**proc_exepath** | **str** | Process executable path. | +**labels** | **Dict[str, str]** | Key value pairs of labels. | [optional] + +## Example + +```python +from sysdig_client.models.command import Command + +# TODO update the JSON string below +json = "{}" +# create an instance of Command from a JSON string +command_instance = Command.from_json(json) +# print the JSON string representation of the object +print(Command.to_json()) + +# convert the object into a dict +command_dict = command_instance.to_dict() +# create an instance of Command from a dict +command_from_dict = Command.from_dict(command_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CompositionsInner.md b/docs/reference/CompositionsInner.md new file mode 100644 index 00000000..a1ac0d7b --- /dev/null +++ b/docs/reference/CompositionsInner.md @@ -0,0 +1,31 @@ +# CompositionsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**aggregate** | **str** | Specifies an aggregate type that describe how complete a relationship is. * __complete__ = The relationship is complete. No further relationships including constituent components, services, or dependencies are known to exist. * __incomplete__ = The relationship is incomplete. Additional relationships exist and may include constituent components, services, or dependencies. * __incomplete_first_party_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented. * __incomplete_first_party_proprietary_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are proprietary. * __incomplete_first_party_opensource_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are opensource. * __incomplete_third_party_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented. * __incomplete_third_party_proprietary_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are proprietary. * __incomplete_third_party_opensource_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are opensource. * __unknown__ = The relationship may be complete or incomplete. This usually signifies a 'best-effort' to obtain constituent components, services, or dependencies but the completeness is inconclusive. * __not_specified__ = The relationship completeness is not specified. | +**assemblies** | **List[str]** | The bom-ref identifiers of the components or services being described. Assemblies refer to nested relationships whereby a constituent part may include other constituent parts. References do not cascade to child parts. References are explicit for the specified constituent part only. | [optional] +**dependencies** | **List[str]** | The bom-ref identifiers of the components or services being described. Assemblies refer to nested relationships whereby a constituent part may include other constituent parts. References do not cascade to child parts. References are explicit for the specified constituent part only. | [optional] + +## Example + +```python +from sysdig_client.models.compositions_inner import CompositionsInner + +# TODO update the JSON string below +json = "{}" +# create an instance of CompositionsInner from a JSON string +compositions_inner_instance = CompositionsInner.from_json(json) +# print the JSON string representation of the object +print(CompositionsInner.to_json()) + +# convert the object into a dict +compositions_inner_dict = compositions_inner_instance.to_dict() +# create an instance of CompositionsInner from a dict +compositions_inner_from_dict = CompositionsInner.from_dict(compositions_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Connection.md b/docs/reference/Connection.md new file mode 100644 index 00000000..2ee68274 --- /dev/null +++ b/docs/reference/Connection.md @@ -0,0 +1,47 @@ +# Connection + +Represents a connection. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The audit event id. | +**timestamp** | **int** | Timestamp the audit event occured, expressed in nanoseconds. | +**type** | **str** | The entry type | +**cmdline** | **str** | Full command line | +**comm** | **str** | The name of the command. | +**dns_domains** | **List[str]** | DNS information for the connection event. | [default to []] +**container_id** | **str** | The container id. `containerId` is present only if the audit event was collected in a container context. | +**pid** | **int** | Id of the process owning the connection. | +**process_name** | **str** | Name of the process owning the connection. | +**client_ipv4** | **str** | The IPv4 dotted notation of the client address. | +**client_port** | **int** | The client port. | +**server_ipv4** | **str** | The IPv4 dotted notation of the server address. | +**server_port** | **int** | The server port. | +**direction** | **str** | The direction of the connection. | +**l4protocol** | **str** | The layer 4 protocol. | +**hostname** | **str** | The Kubernetes hostname. | +**tty** | **int** | TTY number. | +**labels** | **Dict[str, str]** | Key value pairs of labels. | [optional] + +## Example + +```python +from sysdig_client.models.connection import Connection + +# TODO update the JSON string below +json = "{}" +# create an instance of Connection from a JSON string +connection_instance = Connection.from_json(json) +# print the JSON string representation of the object +print(Connection.to_json()) + +# convert the object into a dict +connection_dict = connection_instance.to_dict() +# create an instance of Connection from a dict +connection_from_dict = Connection.from_dict(connection_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ContainerInfo.md b/docs/reference/ContainerInfo.md new file mode 100644 index 00000000..31f9350e --- /dev/null +++ b/docs/reference/ContainerInfo.md @@ -0,0 +1,33 @@ +# ContainerInfo + +Kubernetes container information. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**pod_name** | **str** | Pod name | +**container_id** | **str** | Container id. | +**container_name** | **str** | Container name. | +**pull_string** | **str** | Pull string for image used for the container. | [optional] + +## Example + +```python +from sysdig_client.models.container_info import ContainerInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of ContainerInfo from a JSON string +container_info_instance = ContainerInfo.from_json(json) +# print the JSON string representation of the object +print(ContainerInfo.to_json()) + +# convert the object into a dict +container_info_dict = container_info_instance.to_dict() +# create an instance of ContainerInfo from a dict +container_info_from_dict = ContainerInfo.from_dict(container_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ContainerKilledAction.md b/docs/reference/ContainerKilledAction.md new file mode 100644 index 00000000..e45410e1 --- /dev/null +++ b/docs/reference/ContainerKilledAction.md @@ -0,0 +1,32 @@ +# ContainerKilledAction + +Container kill automatic action. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ActionType**](ActionType.md) | | +**is_successful** | **bool** | Whether or not the action was completed successfully. | [optional] +**err_msg** | **str** | When `isSuccessful` is `false`, details on why the action failed. | [optional] + +## Example + +```python +from sysdig_client.models.container_killed_action import ContainerKilledAction + +# TODO update the JSON string below +json = "{}" +# create an instance of ContainerKilledAction from a JSON string +container_killed_action_instance = ContainerKilledAction.from_json(json) +# print the JSON string representation of the object +print(ContainerKilledAction.to_json()) + +# convert the object into a dict +container_killed_action_dict = container_killed_action_instance.to_dict() +# create an instance of ContainerKilledAction from a dict +container_killed_action_from_dict = ContainerKilledAction.from_dict(container_killed_action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ContainerPausedAction.md b/docs/reference/ContainerPausedAction.md new file mode 100644 index 00000000..1668db8a --- /dev/null +++ b/docs/reference/ContainerPausedAction.md @@ -0,0 +1,32 @@ +# ContainerPausedAction + +Container paused automatic action. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ActionType**](ActionType.md) | | +**is_successful** | **bool** | Whether or not the action was completed successfully. | [optional] +**err_msg** | **str** | When `isSuccessful` is `false`, details on why the action failed. | [optional] + +## Example + +```python +from sysdig_client.models.container_paused_action import ContainerPausedAction + +# TODO update the JSON string below +json = "{}" +# create an instance of ContainerPausedAction from a JSON string +container_paused_action_instance = ContainerPausedAction.from_json(json) +# print the JSON string representation of the object +print(ContainerPausedAction.to_json()) + +# convert the object into a dict +container_paused_action_dict = container_paused_action_instance.to_dict() +# create an instance of ContainerPausedAction from a dict +container_paused_action_from_dict = ContainerPausedAction.from_dict(container_paused_action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ContainerStoppedAction.md b/docs/reference/ContainerStoppedAction.md new file mode 100644 index 00000000..c926b892 --- /dev/null +++ b/docs/reference/ContainerStoppedAction.md @@ -0,0 +1,32 @@ +# ContainerStoppedAction + +Container stop automatic action. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ActionType**](ActionType.md) | | +**is_successful** | **bool** | Whether or not the action was completed successfully. | [optional] +**err_msg** | **str** | When `isSuccessful` is `false`, details on why the action failed. | [optional] + +## Example + +```python +from sysdig_client.models.container_stopped_action import ContainerStoppedAction + +# TODO update the JSON string below +json = "{}" +# create an instance of ContainerStoppedAction from a JSON string +container_stopped_action_instance = ContainerStoppedAction.from_json(json) +# print the JSON string representation of the object +print(ContainerStoppedAction.to_json()) + +# convert the object into a dict +container_stopped_action_dict = container_stopped_action_instance.to_dict() +# create an instance of ContainerStoppedAction from a dict +container_stopped_action_from_dict = ContainerStoppedAction.from_dict(container_stopped_action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Context.md b/docs/reference/Context.md new file mode 100644 index 00000000..3cd7a588 --- /dev/null +++ b/docs/reference/Context.md @@ -0,0 +1,30 @@ +# Context + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | Type for the context entry | +**value** | **str** | Value for the context entry | + +## Example + +```python +from sysdig_client.models.context import Context + +# TODO update the JSON string below +json = "{}" +# create an instance of Context from a JSON string +context_instance = Context.from_json(json) +# print the JSON string representation of the object +print(Context.to_json()) + +# convert the object into a dict +context_dict = context_instance.to_dict() +# create an instance of Context from a dict +context_from_dict = Context.from_dict(context_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CostAdvisorCustomPricingApi.md b/docs/reference/CostAdvisorCustomPricingApi.md new file mode 100644 index 00000000..290015a4 --- /dev/null +++ b/docs/reference/CostAdvisorCustomPricingApi.md @@ -0,0 +1,558 @@ +# sysdig_client.CostAdvisorCustomPricingApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_pricing_v1**](CostAdvisorCustomPricingApi.md#create_pricing_v1) | **POST** /monitor/cost-advisor/v1/pricing | Create Pricing +[**delete_pricing_by_id_v1**](CostAdvisorCustomPricingApi.md#delete_pricing_by_id_v1) | **DELETE** /monitor/cost-advisor/v1/pricing/{pricingId} | Delete Pricing +[**get_pricing_by_id_v1**](CostAdvisorCustomPricingApi.md#get_pricing_by_id_v1) | **GET** /monitor/cost-advisor/v1/pricing/{pricingId} | Get Pricing +[**get_pricing_projected_costs_v1**](CostAdvisorCustomPricingApi.md#get_pricing_projected_costs_v1) | **GET** /monitor/cost-advisor/v1/pricing/{pricingId}/projected-costs | Get Pricing Projected Costs +[**get_pricing_v1**](CostAdvisorCustomPricingApi.md#get_pricing_v1) | **GET** /monitor/cost-advisor/v1/pricing | List Pricing +[**update_pricing_by_id_v1**](CostAdvisorCustomPricingApi.md#update_pricing_by_id_v1) | **PUT** /monitor/cost-advisor/v1/pricing/{pricingId} | Update Pricing + + +# **create_pricing_v1** +> PricingResponseV1 create_pricing_v1(create_pricing_request_v1=create_pricing_request_v1) + +Create Pricing + +Change a new pricing to use as default (for cloud providers that Cost Advisor doesn't automatically support) or for a specific Kubernetes cluster.\ +\ +You need to specify hourly costs for 1 CPU, 1GB of RAM and 1GB of storage. \ +Different CPU and RAM costs can be specified for spot instances; to enable Cost Advisor to identify the spot node, a label and spot value must also be set. \ +\ +Cluster hourly cost = sum(node hourly costs) + (total storage * storage unit cost). \ +Node hourly cost = (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) \ +\ +**Required permissions:** _cost-advisor.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_pricing_request_v1 import CreatePricingRequestV1 +from sysdig_client.models.pricing_response_v1 import PricingResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CostAdvisorCustomPricingApi(api_client) + create_pricing_request_v1 = sysdig_client.CreatePricingRequestV1() # CreatePricingRequestV1 | The payload to create pricing. Use the type field to create a default pricing or pricing for a specific Kubernetes cluster. (optional) + + try: + # Create Pricing + api_response = api_instance.create_pricing_v1(create_pricing_request_v1=create_pricing_request_v1) + print("The response of CostAdvisorCustomPricingApi->create_pricing_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CostAdvisorCustomPricingApi->create_pricing_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_pricing_request_v1** | [**CreatePricingRequestV1**](CreatePricingRequestV1.md)| The payload to create pricing. Use the type field to create a default pricing or pricing for a specific Kubernetes cluster. | [optional] + +### Return type + +[**PricingResponseV1**](PricingResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Pricing created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_pricing_by_id_v1** +> delete_pricing_by_id_v1(pricing_id) + +Delete Pricing + +Delete a pricing by its ID. If the pricing deleted is the DEFAULT one. Cost Advisor will continue to compute costs for the unsupported Kubernetes cluster using the Sysdig default pricing.\ +\ +**Required permissions:** _cost-advisor.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CostAdvisorCustomPricingApi(api_client) + pricing_id = 56 # int | The pricing ID. + + try: + # Delete Pricing + api_instance.delete_pricing_by_id_v1(pricing_id) + except Exception as e: + print("Exception when calling CostAdvisorCustomPricingApi->delete_pricing_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pricing_id** | **int**| The pricing ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Pricing deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_pricing_by_id_v1** +> PricingResponseV1 get_pricing_by_id_v1(pricing_id) + +Get Pricing + +Retrieve a pricing by ID.\ +\ +**Required permissions:** _cost-advisor.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.pricing_response_v1 import PricingResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CostAdvisorCustomPricingApi(api_client) + pricing_id = 56 # int | The pricing ID. + + try: + # Get Pricing + api_response = api_instance.get_pricing_by_id_v1(pricing_id) + print("The response of CostAdvisorCustomPricingApi->get_pricing_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CostAdvisorCustomPricingApi->get_pricing_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pricing_id** | **int**| The pricing ID. | + +### Return type + +[**PricingResponseV1**](PricingResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Pricing found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_pricing_projected_costs_v1** +> GetPricingProjectedPaginatedResponseV1 get_pricing_projected_costs_v1(pricing_id, offset=offset, limit=limit) + +Get Pricing Projected Costs + +Retrieve the monthly projected costs for the clusters using the specified pricing.\ +The computation is done using the total CPU and RAM for the current cluster's nodes and the total storage used by the cluster.\ +\ +Projected monthly cost = 730 * (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) + (total storage * storage unit cost). \ +\ +**Required permissions:** _cost-advisor.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_pricing_projected_paginated_response_v1 import GetPricingProjectedPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CostAdvisorCustomPricingApi(api_client) + pricing_id = 56 # int | The pricing ID. + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + + try: + # Get Pricing Projected Costs + api_response = api_instance.get_pricing_projected_costs_v1(pricing_id, offset=offset, limit=limit) + print("The response of CostAdvisorCustomPricingApi->get_pricing_projected_costs_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CostAdvisorCustomPricingApi->get_pricing_projected_costs_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pricing_id** | **int**| The pricing ID. | + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + +### Return type + +[**GetPricingProjectedPaginatedResponseV1**](GetPricingProjectedPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Montlhy projected costs. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_pricing_v1** +> GetPricingPaginatedResponseV1 get_pricing_v1(offset=offset, limit=limit, cluster_name=cluster_name, type=type) + +List Pricing + +Retrieve a paginated list of pricing.\ +\ +**Required permissions:** _cost-advisor.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_pricing_paginated_response_v1 import GetPricingPaginatedResponseV1 +from sysdig_client.models.pricing_type import PricingType +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CostAdvisorCustomPricingApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + cluster_name = 'prod-us-1' # str | The name of the Kubernetes cluster for which you want to retrive the pricing. (optional) + type = sysdig_client.PricingType() # PricingType | The type of pricing to find. (optional) + + try: + # List Pricing + api_response = api_instance.get_pricing_v1(offset=offset, limit=limit, cluster_name=cluster_name, type=type) + print("The response of CostAdvisorCustomPricingApi->get_pricing_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CostAdvisorCustomPricingApi->get_pricing_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **cluster_name** | **str**| The name of the Kubernetes cluster for which you want to retrive the pricing. | [optional] + **type** | [**PricingType**](.md)| The type of pricing to find. | [optional] + +### Return type + +[**GetPricingPaginatedResponseV1**](GetPricingPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The pricing page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_pricing_by_id_v1** +> PricingResponseV1 update_pricing_by_id_v1(pricing_id, update_pricing_request_v1=update_pricing_request_v1) + +Update Pricing + +The pricing payload containing the changes you want to apply to the pricing.\ +\ +**Required permissions:** _cost-advisor.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.pricing_response_v1 import PricingResponseV1 +from sysdig_client.models.update_pricing_request_v1 import UpdatePricingRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CostAdvisorCustomPricingApi(api_client) + pricing_id = 56 # int | The pricing ID. + update_pricing_request_v1 = sysdig_client.UpdatePricingRequestV1() # UpdatePricingRequestV1 | The payload required to create the pricing. (optional) + + try: + # Update Pricing + api_response = api_instance.update_pricing_by_id_v1(pricing_id, update_pricing_request_v1=update_pricing_request_v1) + print("The response of CostAdvisorCustomPricingApi->update_pricing_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CostAdvisorCustomPricingApi->update_pricing_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pricing_id** | **int**| The pricing ID. | + **update_pricing_request_v1** | [**UpdatePricingRequestV1**](UpdatePricingRequestV1.md)| The payload required to create the pricing. | [optional] + +### Return type + +[**PricingResponseV1**](PricingResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Pricing updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/CostAdvisorDataApi.md b/docs/reference/CostAdvisorDataApi.md new file mode 100644 index 00000000..b981e9eb --- /dev/null +++ b/docs/reference/CostAdvisorDataApi.md @@ -0,0 +1,271 @@ +# sysdig_client.CostAdvisorDataApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_wasted_workload_data**](CostAdvisorDataApi.md#get_wasted_workload_data) | **POST** /monitor/cost-advisor/v1alpha1/data/wasted-workload-spend | Wasted Workload Spend Data +[**get_workload_cost_data_v1**](CostAdvisorDataApi.md#get_workload_cost_data_v1) | **POST** /monitor/cost-advisor/v1alpha1/data/workload-cost-trends | Workload Cost Trends Data +[**get_workload_rightsizing_data**](CostAdvisorDataApi.md#get_workload_rightsizing_data) | **POST** /monitor/cost-advisor/v1alpha1/data/workload-rightsizing | Workload Rightsizing Data + + +# **get_wasted_workload_data** +> WastedWorkloadSpendDataResponse get_wasted_workload_data(wasted_workload_data_request) + +Wasted Workload Spend Data + +Use this API to generate a report of Wasted Workload Spend data for a specified date range, scope, +and grouping. For details, see [Wasted Workload Spend Report](https://docs.sysdig.com/en/sysdig-monitor/cost-reports/#wasted-workload-spend-report). + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.wasted_workload_data_request import WastedWorkloadDataRequest +from sysdig_client.models.wasted_workload_spend_data_response import WastedWorkloadSpendDataResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CostAdvisorDataApi(api_client) + wasted_workload_data_request = sysdig_client.WastedWorkloadDataRequest() # WastedWorkloadDataRequest | + + try: + # Wasted Workload Spend Data + api_response = api_instance.get_wasted_workload_data(wasted_workload_data_request) + print("The response of CostAdvisorDataApi->get_wasted_workload_data:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CostAdvisorDataApi->get_wasted_workload_data: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **wasted_workload_data_request** | [**WastedWorkloadDataRequest**](WastedWorkloadDataRequest.md)| | + +### Return type + +[**WastedWorkloadSpendDataResponse**](WastedWorkloadSpendDataResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Wasted Workload Spend data | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_workload_cost_data_v1** +> WorkloadCostTrendsDataResponse get_workload_cost_data_v1(workload_cost_trends_data_request) + +Workload Cost Trends Data + +Returns workload cost trends data for a specified trend range, pivot date, optional scope, +and optional grouping. The response includes cost totals for both current +and previous periods, along with the date ranges for each period. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.workload_cost_trends_data_request import WorkloadCostTrendsDataRequest +from sysdig_client.models.workload_cost_trends_data_response import WorkloadCostTrendsDataResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CostAdvisorDataApi(api_client) + workload_cost_trends_data_request = sysdig_client.WorkloadCostTrendsDataRequest() # WorkloadCostTrendsDataRequest | + + try: + # Workload Cost Trends Data + api_response = api_instance.get_workload_cost_data_v1(workload_cost_trends_data_request) + print("The response of CostAdvisorDataApi->get_workload_cost_data_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CostAdvisorDataApi->get_workload_cost_data_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **workload_cost_trends_data_request** | [**WorkloadCostTrendsDataRequest**](WorkloadCostTrendsDataRequest.md)| | + +### Return type + +[**WorkloadCostTrendsDataResponse**](WorkloadCostTrendsDataResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Workload Cost Trend data | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_workload_rightsizing_data** +> WorkloadRightsizingDataResponse get_workload_rightsizing_data(workload_rightsizing_data_request) + +Workload Rightsizing Data + +Use this API to generate a Workload Rightsizing data for a specified date range, algorithm and optional scope. +The response is automatically grouped by the following Prometheus labels: + - kube_cluster_name + - kube_namespace_name + - kube_workload_name + - container_name + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.workload_rightsizing_data_request import WorkloadRightsizingDataRequest +from sysdig_client.models.workload_rightsizing_data_response import WorkloadRightsizingDataResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.CostAdvisorDataApi(api_client) + workload_rightsizing_data_request = sysdig_client.WorkloadRightsizingDataRequest() # WorkloadRightsizingDataRequest | + + try: + # Workload Rightsizing Data + api_response = api_instance.get_workload_rightsizing_data(workload_rightsizing_data_request) + print("The response of CostAdvisorDataApi->get_workload_rightsizing_data:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling CostAdvisorDataApi->get_workload_rightsizing_data: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **workload_rightsizing_data_request** | [**WorkloadRightsizingDataRequest**](WorkloadRightsizingDataRequest.md)| | + +### Return type + +[**WorkloadRightsizingDataResponse**](WorkloadRightsizingDataResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Workload Rightsizing data | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/CreateAccessKeyRequestV1.md b/docs/reference/CreateAccessKeyRequestV1.md new file mode 100644 index 00000000..cd72c7e0 --- /dev/null +++ b/docs/reference/CreateAccessKeyRequestV1.md @@ -0,0 +1,33 @@ +# CreateAccessKeyRequestV1 + +Create access key request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**agent_limit** | **int** | Maximum number of agents that can be connected with the access key | [optional] +**agent_reservation** | **int** | Number of agents that are guaranteed to be available for the access key | [optional] +**team_id** | **int** | ID of team that owns the access key | [optional] +**metadata** | **Dict[str, str]** | Access key metadata (maximum of 20 key-value pairs where key can be up to 25 characters long and value can be up to 50 characters long) | [optional] + +## Example + +```python +from sysdig_client.models.create_access_key_request_v1 import CreateAccessKeyRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateAccessKeyRequestV1 from a JSON string +create_access_key_request_v1_instance = CreateAccessKeyRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateAccessKeyRequestV1.to_json()) + +# convert the object into a dict +create_access_key_request_v1_dict = create_access_key_request_v1_instance.to_dict() +# create an instance of CreateAccessKeyRequestV1 from a dict +create_access_key_request_v1_from_dict = CreateAccessKeyRequestV1.from_dict(create_access_key_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateAmazonSqsIntegrationRequest.md b/docs/reference/CreateAmazonSqsIntegrationRequest.md new file mode 100644 index 00000000..bed41a39 --- /dev/null +++ b/docs/reference/CreateAmazonSqsIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateAmazonSqsIntegrationRequest + +Create Amazon SQS Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**AmazonSQSCreateConnectionInfo**](AmazonSQSCreateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_amazon_sqs_integration_request import CreateAmazonSqsIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateAmazonSqsIntegrationRequest from a JSON string +create_amazon_sqs_integration_request_instance = CreateAmazonSqsIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateAmazonSqsIntegrationRequest.to_json()) + +# convert the object into a dict +create_amazon_sqs_integration_request_dict = create_amazon_sqs_integration_request_instance.to_dict() +# create an instance of CreateAmazonSqsIntegrationRequest from a dict +create_amazon_sqs_integration_request_from_dict = CreateAmazonSqsIntegrationRequest.from_dict(create_amazon_sqs_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateBundleRequest.md b/docs/reference/CreateBundleRequest.md new file mode 100644 index 00000000..a8263776 --- /dev/null +++ b/docs/reference/CreateBundleRequest.md @@ -0,0 +1,32 @@ +# CreateBundleRequest + +Bundle definition + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | The human readable Bundle name | +**description** | **str** | Human readable description of this Bundle | [optional] +**rules** | [**List[NewRule]**](NewRule.md) | The Rules defining this Bundle | + +## Example + +```python +from sysdig_client.models.create_bundle_request import CreateBundleRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateBundleRequest from a JSON string +create_bundle_request_instance = CreateBundleRequest.from_json(json) +# print the JSON string representation of the object +print(CreateBundleRequest.to_json()) + +# convert the object into a dict +create_bundle_request_dict = create_bundle_request_instance.to_dict() +# create an instance of CreateBundleRequest from a dict +create_bundle_request_from_dict = CreateBundleRequest.from_dict(create_bundle_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateChronicleIntegrationConnInfo.md b/docs/reference/CreateChronicleIntegrationConnInfo.md new file mode 100644 index 00000000..e1cc42b5 --- /dev/null +++ b/docs/reference/CreateChronicleIntegrationConnInfo.md @@ -0,0 +1,31 @@ +# CreateChronicleIntegrationConnInfo + +Create Chronicle Integration Connection Info + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**region** | **str** | The target region | [optional] [default to 'us'] +**api_key** | **str** | The Chronicle v1 API key | + +## Example + +```python +from sysdig_client.models.create_chronicle_integration_conn_info import CreateChronicleIntegrationConnInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateChronicleIntegrationConnInfo from a JSON string +create_chronicle_integration_conn_info_instance = CreateChronicleIntegrationConnInfo.from_json(json) +# print the JSON string representation of the object +print(CreateChronicleIntegrationConnInfo.to_json()) + +# convert the object into a dict +create_chronicle_integration_conn_info_dict = create_chronicle_integration_conn_info_instance.to_dict() +# create an instance of CreateChronicleIntegrationConnInfo from a dict +create_chronicle_integration_conn_info_from_dict = CreateChronicleIntegrationConnInfo.from_dict(create_chronicle_integration_conn_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateChronicleIntegrationConnInfoV2.md b/docs/reference/CreateChronicleIntegrationConnInfoV2.md new file mode 100644 index 00000000..bf794da4 --- /dev/null +++ b/docs/reference/CreateChronicleIntegrationConnInfoV2.md @@ -0,0 +1,33 @@ +# CreateChronicleIntegrationConnInfoV2 + +Create Chronicle Integration Connection V2 Info + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**region** | **str** | The target region | [optional] [default to 'us'] +**chronicle_customer_id** | **str** | Unique identifier (UUID) corresponding to a particular Chronicle instance | +**namespace** | **str** | User-configured environment namespace to identify the data domain the logs originated from | +**credentials_o_auth2** | **str** | The Chronicle v2 OAuth2 credentials | + +## Example + +```python +from sysdig_client.models.create_chronicle_integration_conn_info_v2 import CreateChronicleIntegrationConnInfoV2 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateChronicleIntegrationConnInfoV2 from a JSON string +create_chronicle_integration_conn_info_v2_instance = CreateChronicleIntegrationConnInfoV2.from_json(json) +# print the JSON string representation of the object +print(CreateChronicleIntegrationConnInfoV2.to_json()) + +# convert the object into a dict +create_chronicle_integration_conn_info_v2_dict = create_chronicle_integration_conn_info_v2_instance.to_dict() +# create an instance of CreateChronicleIntegrationConnInfoV2 from a dict +create_chronicle_integration_conn_info_v2_from_dict = CreateChronicleIntegrationConnInfoV2.from_dict(create_chronicle_integration_conn_info_v2_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateChronicleIntegrationRequest.md b/docs/reference/CreateChronicleIntegrationRequest.md new file mode 100644 index 00000000..c72833fc --- /dev/null +++ b/docs/reference/CreateChronicleIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateChronicleIntegrationRequest + +Create Chronicle Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**ChronicleCreateConnectionInfo**](ChronicleCreateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_chronicle_integration_request import CreateChronicleIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateChronicleIntegrationRequest from a JSON string +create_chronicle_integration_request_instance = CreateChronicleIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateChronicleIntegrationRequest.to_json()) + +# convert the object into a dict +create_chronicle_integration_request_dict = create_chronicle_integration_request_instance.to_dict() +# create an instance of CreateChronicleIntegrationRequest from a dict +create_chronicle_integration_request_from_dict = CreateChronicleIntegrationRequest.from_dict(create_chronicle_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateCustomWebhookNotificationChannelRequestV1.md b/docs/reference/CreateCustomWebhookNotificationChannelRequestV1.md new file mode 100644 index 00000000..45c12b4a --- /dev/null +++ b/docs/reference/CreateCustomWebhookNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateCustomWebhookNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**CustomWebhookNotificationChannelOptionsV1**](CustomWebhookNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_custom_webhook_notification_channel_request_v1 import CreateCustomWebhookNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateCustomWebhookNotificationChannelRequestV1 from a JSON string +create_custom_webhook_notification_channel_request_v1_instance = CreateCustomWebhookNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateCustomWebhookNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_custom_webhook_notification_channel_request_v1_dict = create_custom_webhook_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateCustomWebhookNotificationChannelRequestV1 from a dict +create_custom_webhook_notification_channel_request_v1_from_dict = CreateCustomWebhookNotificationChannelRequestV1.from_dict(create_custom_webhook_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateElasticsearchIntegrationRequest.md b/docs/reference/CreateElasticsearchIntegrationRequest.md new file mode 100644 index 00000000..63603fc3 --- /dev/null +++ b/docs/reference/CreateElasticsearchIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateElasticsearchIntegrationRequest + +Create Elasticsearch Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**CreateElasticsearchIntegrationRequestAllOfConnectionInfo**](CreateElasticsearchIntegrationRequestAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_elasticsearch_integration_request import CreateElasticsearchIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateElasticsearchIntegrationRequest from a JSON string +create_elasticsearch_integration_request_instance = CreateElasticsearchIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateElasticsearchIntegrationRequest.to_json()) + +# convert the object into a dict +create_elasticsearch_integration_request_dict = create_elasticsearch_integration_request_instance.to_dict() +# create an instance of CreateElasticsearchIntegrationRequest from a dict +create_elasticsearch_integration_request_from_dict = CreateElasticsearchIntegrationRequest.from_dict(create_elasticsearch_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateElasticsearchIntegrationRequestAllOfConnectionInfo.md b/docs/reference/CreateElasticsearchIntegrationRequestAllOfConnectionInfo.md new file mode 100644 index 00000000..f55a9275 --- /dev/null +++ b/docs/reference/CreateElasticsearchIntegrationRequestAllOfConnectionInfo.md @@ -0,0 +1,34 @@ +# CreateElasticsearchIntegrationRequestAllOfConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | Elasticsearch instance endpoint URL | +**index** | **str** | Name of the index to store the data in | +**is_insecure** | **bool** | Don't verify TLS certificate | [optional] [default to False] +**auth** | **str** | Authentication method | +**format** | **str** | If specified, transforms `content.fields` and `labels` * `KV_PAIRS` - from objects (i.e. `{\"foo\": \"bar\", ...}`) to arrays of objects with \"key\" and \"value\" properties {i.e. `[{\"key\" : \"foo\", \"value\": \"bar\"}, ...]`) | [optional] +**secret** | **str** | Authentication secret. To be set if auth is specified | + +## Example + +```python +from sysdig_client.models.create_elasticsearch_integration_request_all_of_connection_info import CreateElasticsearchIntegrationRequestAllOfConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateElasticsearchIntegrationRequestAllOfConnectionInfo from a JSON string +create_elasticsearch_integration_request_all_of_connection_info_instance = CreateElasticsearchIntegrationRequestAllOfConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(CreateElasticsearchIntegrationRequestAllOfConnectionInfo.to_json()) + +# convert the object into a dict +create_elasticsearch_integration_request_all_of_connection_info_dict = create_elasticsearch_integration_request_all_of_connection_info_instance.to_dict() +# create an instance of CreateElasticsearchIntegrationRequestAllOfConnectionInfo from a dict +create_elasticsearch_integration_request_all_of_connection_info_from_dict = CreateElasticsearchIntegrationRequestAllOfConnectionInfo.from_dict(create_elasticsearch_integration_request_all_of_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateEmailNotificationChannelRequestV1.md b/docs/reference/CreateEmailNotificationChannelRequestV1.md new file mode 100644 index 00000000..ad6ed14a --- /dev/null +++ b/docs/reference/CreateEmailNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateEmailNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**EmailNotificationChannelOptionsV1**](EmailNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_email_notification_channel_request_v1 import CreateEmailNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateEmailNotificationChannelRequestV1 from a JSON string +create_email_notification_channel_request_v1_instance = CreateEmailNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateEmailNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_email_notification_channel_request_v1_dict = create_email_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateEmailNotificationChannelRequestV1 from a dict +create_email_notification_channel_request_v1_from_dict = CreateEmailNotificationChannelRequestV1.from_dict(create_email_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateGchatNotificationChannelRequestV1.md b/docs/reference/CreateGchatNotificationChannelRequestV1.md new file mode 100644 index 00000000..00b163b6 --- /dev/null +++ b/docs/reference/CreateGchatNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateGchatNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**GchatNotificationChannelOptionsV1**](GchatNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_gchat_notification_channel_request_v1 import CreateGchatNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateGchatNotificationChannelRequestV1 from a JSON string +create_gchat_notification_channel_request_v1_instance = CreateGchatNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateGchatNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_gchat_notification_channel_request_v1_dict = create_gchat_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateGchatNotificationChannelRequestV1 from a dict +create_gchat_notification_channel_request_v1_from_dict = CreateGchatNotificationChannelRequestV1.from_dict(create_gchat_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateGlobalServiceAccountRequestV1.md b/docs/reference/CreateGlobalServiceAccountRequestV1.md new file mode 100644 index 00000000..92653fe9 --- /dev/null +++ b/docs/reference/CreateGlobalServiceAccountRequestV1.md @@ -0,0 +1,31 @@ +# CreateGlobalServiceAccountRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | The display name of the Service Account. | +**expiration_date** | **int** | Time when the Service Account API key expires, | in number of milliseconds since January 1, 1970, 00:00:00 GMT | [optional] +**system_roles** | **List[str]** | Array of System roles assigned to the global service account. | + +## Example + +```python +from sysdig_client.models.create_global_service_account_request_v1 import CreateGlobalServiceAccountRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateGlobalServiceAccountRequestV1 from a JSON string +create_global_service_account_request_v1_instance = CreateGlobalServiceAccountRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateGlobalServiceAccountRequestV1.to_json()) + +# convert the object into a dict +create_global_service_account_request_v1_dict = create_global_service_account_request_v1_instance.to_dict() +# create an instance of CreateGlobalServiceAccountRequestV1 from a dict +create_global_service_account_request_v1_from_dict = CreateGlobalServiceAccountRequestV1.from_dict(create_global_service_account_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateGooglePubSubIntegrationRequest.md b/docs/reference/CreateGooglePubSubIntegrationRequest.md new file mode 100644 index 00000000..31913290 --- /dev/null +++ b/docs/reference/CreateGooglePubSubIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateGooglePubSubIntegrationRequest + +Create Google Pub/Sub Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**GooglePubSubCreateConnectionInfo**](GooglePubSubCreateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_google_pub_sub_integration_request import CreateGooglePubSubIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateGooglePubSubIntegrationRequest from a JSON string +create_google_pub_sub_integration_request_instance = CreateGooglePubSubIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateGooglePubSubIntegrationRequest.to_json()) + +# convert the object into a dict +create_google_pub_sub_integration_request_dict = create_google_pub_sub_integration_request_instance.to_dict() +# create an instance of CreateGooglePubSubIntegrationRequest from a dict +create_google_pub_sub_integration_request_from_dict = CreateGooglePubSubIntegrationRequest.from_dict(create_google_pub_sub_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateGoogleSccIntegrationRequest.md b/docs/reference/CreateGoogleSccIntegrationRequest.md new file mode 100644 index 00000000..9d9170aa --- /dev/null +++ b/docs/reference/CreateGoogleSccIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateGoogleSccIntegrationRequest + +Create Google SCC Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**GoogleSCCCreateConnectionInfo**](GoogleSCCCreateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_google_scc_integration_request import CreateGoogleSccIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateGoogleSccIntegrationRequest from a JSON string +create_google_scc_integration_request_instance = CreateGoogleSccIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateGoogleSccIntegrationRequest.to_json()) + +# convert the object into a dict +create_google_scc_integration_request_dict = create_google_scc_integration_request_instance.to_dict() +# create an instance of CreateGoogleSccIntegrationRequest from a dict +create_google_scc_integration_request_from_dict = CreateGoogleSccIntegrationRequest.from_dict(create_google_scc_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateGroupMappingRequestV1.md b/docs/reference/CreateGroupMappingRequestV1.md new file mode 100644 index 00000000..457c39d3 --- /dev/null +++ b/docs/reference/CreateGroupMappingRequestV1.md @@ -0,0 +1,34 @@ +# CreateGroupMappingRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**group_name** | **str** | The group name matching the external provider name. | +**standard_team_role** | [**TeamRoleV1**](TeamRoleV1.md) | The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**. | [optional] +**custom_team_role_id** | **int** | The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. | [optional] +**is_admin** | **bool** | Flag that indicates if the group is an admin group. | [optional] +**team_map** | [**TeamMapV1**](TeamMapV1.md) | | +**weight** | **int** | The weight of the group mapping is used to determine the priority - a lower number has higher priority. | [optional] [default to 32767] + +## Example + +```python +from sysdig_client.models.create_group_mapping_request_v1 import CreateGroupMappingRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateGroupMappingRequestV1 from a JSON string +create_group_mapping_request_v1_instance = CreateGroupMappingRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateGroupMappingRequestV1.to_json()) + +# convert the object into a dict +create_group_mapping_request_v1_dict = create_group_mapping_request_v1_instance.to_dict() +# create an instance of CreateGroupMappingRequestV1 from a dict +create_group_mapping_request_v1_from_dict = CreateGroupMappingRequestV1.from_dict(create_group_mapping_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateIbmEventNotificationsNotificationChannelRequestV1.md b/docs/reference/CreateIbmEventNotificationsNotificationChannelRequestV1.md new file mode 100644 index 00000000..13f5b237 --- /dev/null +++ b/docs/reference/CreateIbmEventNotificationsNotificationChannelRequestV1.md @@ -0,0 +1,34 @@ +# CreateIbmEventNotificationsNotificationChannelRequestV1 + +This channel is only available in IBM Cloud + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**IbmEventNotificationsNotificationChannelOptionsV1**](IbmEventNotificationsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_ibm_event_notifications_notification_channel_request_v1 import CreateIbmEventNotificationsNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateIbmEventNotificationsNotificationChannelRequestV1 from a JSON string +create_ibm_event_notifications_notification_channel_request_v1_instance = CreateIbmEventNotificationsNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateIbmEventNotificationsNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_ibm_event_notifications_notification_channel_request_v1_dict = create_ibm_event_notifications_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateIbmEventNotificationsNotificationChannelRequestV1 from a dict +create_ibm_event_notifications_notification_channel_request_v1_from_dict = CreateIbmEventNotificationsNotificationChannelRequestV1.from_dict(create_ibm_event_notifications_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateInhibitionRuleRequestV1.md b/docs/reference/CreateInhibitionRuleRequestV1.md new file mode 100644 index 00000000..afa395ed --- /dev/null +++ b/docs/reference/CreateInhibitionRuleRequestV1.md @@ -0,0 +1,34 @@ +# CreateInhibitionRuleRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_enabled** | **bool** | Indicates if the inhibition rule is enabled or not. | [optional] [default to True] +**name** | **str** | Name of the inhibition rule. If provided, must be unique. | [optional] +**description** | **str** | Description of the inhibition rule. | [optional] +**source_matchers** | [**List[LabelMatcherV1]**](LabelMatcherV1.md) | List of source matchers for which one or more alerts have to exist for the inhibition to take effect. | +**target_matchers** | [**List[LabelMatcherV1]**](LabelMatcherV1.md) | List of target matchers that have to be fulfilled by the target alerts to be muted. | +**equal** | **List[str]** | List of labels that must have an equal value in the source and target alert for the inhibition to take effect. | [optional] + +## Example + +```python +from sysdig_client.models.create_inhibition_rule_request_v1 import CreateInhibitionRuleRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateInhibitionRuleRequestV1 from a JSON string +create_inhibition_rule_request_v1_instance = CreateInhibitionRuleRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateInhibitionRuleRequestV1.to_json()) + +# convert the object into a dict +create_inhibition_rule_request_v1_dict = create_inhibition_rule_request_v1_instance.to_dict() +# create an instance of CreateInhibitionRuleRequestV1 from a dict +create_inhibition_rule_request_v1_from_dict = CreateInhibitionRuleRequestV1.from_dict(create_inhibition_rule_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateIntegrationRequest.md b/docs/reference/CreateIntegrationRequest.md new file mode 100644 index 00000000..3d0506ec --- /dev/null +++ b/docs/reference/CreateIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateIntegrationRequest + +Create Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**CreateWebhookIntegrationRequestAllOfConnectionInfo**](CreateWebhookIntegrationRequestAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_integration_request import CreateIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateIntegrationRequest from a JSON string +create_integration_request_instance = CreateIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateIntegrationRequest.to_json()) + +# convert the object into a dict +create_integration_request_dict = create_integration_request_instance.to_dict() +# create an instance of CreateIntegrationRequest from a dict +create_integration_request_from_dict = CreateIntegrationRequest.from_dict(create_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateIntegrationRequestV1.md b/docs/reference/CreateIntegrationRequestV1.md new file mode 100644 index 00000000..7f104dae --- /dev/null +++ b/docs/reference/CreateIntegrationRequestV1.md @@ -0,0 +1,37 @@ +# CreateIntegrationRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | Integration name. | +**is_all_teams** | **bool** | If **true**, the integration will be enabled for all teams. If **false**, the integration will be enabled for the teams specified in the *teamIds* field. | [optional] +**team_ids** | **List[int]** | List of Sysdig's internal team ids for which the integration will be enabled. This field is required if *isAllTeams* is **false**. | [optional] +**jira_project** | **str** | Associated Jira project id. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects#api-group-projects \"Jira project documentation\") for more info. | +**jira_url** | **str** | Customer's Jira URL. | +**jira_email** | **str** | User's email associated with the Jira account. | +**jira_access_token** | **str** | Jira access token for the provided Jira account. | +**jira_assignee** | **str** | The default assignee Jira account id for this integration. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-user-search/#api-group-user-search \"Jira user documentation\") for more info. | [optional] +**jira_labels** | **List[str]** | The list of Jira labels available for this integration. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-labels/#api-group-labels \"Jira labels documentation\") for more info. | [optional] + +## Example + +```python +from sysdig_client.models.create_integration_request_v1 import CreateIntegrationRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateIntegrationRequestV1 from a JSON string +create_integration_request_v1_instance = CreateIntegrationRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateIntegrationRequestV1.to_json()) + +# convert the object into a dict +create_integration_request_v1_dict = create_integration_request_v1_instance.to_dict() +# create an instance of CreateIntegrationRequestV1 from a dict +create_integration_request_v1_from_dict = CreateIntegrationRequestV1.from_dict(create_integration_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateIpFilterV1.md b/docs/reference/CreateIpFilterV1.md new file mode 100644 index 00000000..532b1f09 --- /dev/null +++ b/docs/reference/CreateIpFilterV1.md @@ -0,0 +1,32 @@ +# CreateIpFilterV1 + +Request to create IP filter. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ip_range** | **str** | IP range in CIDR notation | +**note** | **str** | | [optional] +**is_enabled** | **bool** | | + +## Example + +```python +from sysdig_client.models.create_ip_filter_v1 import CreateIpFilterV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateIpFilterV1 from a JSON string +create_ip_filter_v1_instance = CreateIpFilterV1.from_json(json) +# print the JSON string representation of the object +print(CreateIpFilterV1.to_json()) + +# convert the object into a dict +create_ip_filter_v1_dict = create_ip_filter_v1_instance.to_dict() +# create an instance of CreateIpFilterV1 from a dict +create_ip_filter_v1_from_dict = CreateIpFilterV1.from_dict(create_ip_filter_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateIssueTypeRequestV1.md b/docs/reference/CreateIssueTypeRequestV1.md new file mode 100644 index 00000000..bb8daf8c --- /dev/null +++ b/docs/reference/CreateIssueTypeRequestV1.md @@ -0,0 +1,33 @@ +# CreateIssueTypeRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**jira_id** | **str** | Jira issue type id. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-types/#api-group-issue-types \"Jira issue types documentation\") for more info. | +**jira_open_status_id** | **str** | Jira status id mapped to open status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status \"Jira status documentation\") for more info. | +**jira_in_progress_status_id** | **str** | Jira status id mapped to in progress status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status \"Jira status documentation\") for more info. | +**jira_closed_status_id** | **str** | Jira status id mapped to closed status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status \"Jira status documentation\") for more info. | +**custom_field_ids** | **List[str]** | List of supported custom field ids for the issue type. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-createmeta-get \"Jira issue type fields documentation\") for more info. | [optional] + +## Example + +```python +from sysdig_client.models.create_issue_type_request_v1 import CreateIssueTypeRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateIssueTypeRequestV1 from a JSON string +create_issue_type_request_v1_instance = CreateIssueTypeRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateIssueTypeRequestV1.to_json()) + +# convert the object into a dict +create_issue_type_request_v1_dict = create_issue_type_request_v1_instance.to_dict() +# create an instance of CreateIssueTypeRequestV1 from a dict +create_issue_type_request_v1_from_dict = CreateIssueTypeRequestV1.from_dict(create_issue_type_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateKafkaIntegrationRequest.md b/docs/reference/CreateKafkaIntegrationRequest.md new file mode 100644 index 00000000..2108a045 --- /dev/null +++ b/docs/reference/CreateKafkaIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateKafkaIntegrationRequest + +Create Kafka Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**CreateKafkaIntegrationRequestAllOfConnectionInfo**](CreateKafkaIntegrationRequestAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_kafka_integration_request import CreateKafkaIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateKafkaIntegrationRequest from a JSON string +create_kafka_integration_request_instance = CreateKafkaIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateKafkaIntegrationRequest.to_json()) + +# convert the object into a dict +create_kafka_integration_request_dict = create_kafka_integration_request_instance.to_dict() +# create an instance of CreateKafkaIntegrationRequest from a dict +create_kafka_integration_request_from_dict = CreateKafkaIntegrationRequest.from_dict(create_kafka_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateKafkaIntegrationRequestAllOfConnectionInfo.md b/docs/reference/CreateKafkaIntegrationRequestAllOfConnectionInfo.md new file mode 100644 index 00000000..cea1dee5 --- /dev/null +++ b/docs/reference/CreateKafkaIntegrationRequestAllOfConnectionInfo.md @@ -0,0 +1,40 @@ +# CreateKafkaIntegrationRequestAllOfConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**brokers** | **List[str]** | Kafka server endpoint. A Kafka cluster may provide several brokers; it follows the 'hostname: port' (without protocol scheme). | +**topic** | **str** | Kafka topic where you want to store the forwarded data | +**balancer** | **str** | Algorithm that the client uses to multiplex data between the multiple Brokers. For compatibility with the Java client, Murmur2 is used as the default partitioner | [optional] [default to 'murmur2'] +**compression** | **str** | Compression standard used for the data | [optional] +**is_tls_enabled** | **bool** | | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**auth** | **str** | The authentication method to optionally use. Currently supporting only GSSAPI | +**principal** | **str** | GSSAPI principal | +**realm** | **str** | GSSAPI realm | +**service** | **str** | GSSAPI Service name | +**krb5** | **str** | Kerberos krb5.conf file content for GSSAPI | +**keytab** | **str** | base64 encoded Kerberos keytab | + +## Example + +```python +from sysdig_client.models.create_kafka_integration_request_all_of_connection_info import CreateKafkaIntegrationRequestAllOfConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateKafkaIntegrationRequestAllOfConnectionInfo from a JSON string +create_kafka_integration_request_all_of_connection_info_instance = CreateKafkaIntegrationRequestAllOfConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(CreateKafkaIntegrationRequestAllOfConnectionInfo.to_json()) + +# convert the object into a dict +create_kafka_integration_request_all_of_connection_info_dict = create_kafka_integration_request_all_of_connection_info_instance.to_dict() +# create an instance of CreateKafkaIntegrationRequestAllOfConnectionInfo from a dict +create_kafka_integration_request_all_of_connection_info_from_dict = CreateKafkaIntegrationRequestAllOfConnectionInfo.from_dict(create_kafka_integration_request_all_of_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateMcmIntegrationRequest.md b/docs/reference/CreateMcmIntegrationRequest.md new file mode 100644 index 00000000..88075e9d --- /dev/null +++ b/docs/reference/CreateMcmIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateMcmIntegrationRequest + +Create IBM Multicloud Manager Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**IBMMulticloudCloudCreateConnectionInfo**](IBMMulticloudCloudCreateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_mcm_integration_request import CreateMcmIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateMcmIntegrationRequest from a JSON string +create_mcm_integration_request_instance = CreateMcmIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateMcmIntegrationRequest.to_json()) + +# convert the object into a dict +create_mcm_integration_request_dict = create_mcm_integration_request_instance.to_dict() +# create an instance of CreateMcmIntegrationRequest from a dict +create_mcm_integration_request_from_dict = CreateMcmIntegrationRequest.from_dict(create_mcm_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateMicrosoftSentinelIntegrationRequest.md b/docs/reference/CreateMicrosoftSentinelIntegrationRequest.md new file mode 100644 index 00000000..f1d3c07c --- /dev/null +++ b/docs/reference/CreateMicrosoftSentinelIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateMicrosoftSentinelIntegrationRequest + +Save Microsoft Sentinel Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**MicrosoftSentinelCreateConnectionInfo**](MicrosoftSentinelCreateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_microsoft_sentinel_integration_request import CreateMicrosoftSentinelIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateMicrosoftSentinelIntegrationRequest from a JSON string +create_microsoft_sentinel_integration_request_instance = CreateMicrosoftSentinelIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateMicrosoftSentinelIntegrationRequest.to_json()) + +# convert the object into a dict +create_microsoft_sentinel_integration_request_dict = create_microsoft_sentinel_integration_request_instance.to_dict() +# create an instance of CreateMicrosoftSentinelIntegrationRequest from a dict +create_microsoft_sentinel_integration_request_from_dict = CreateMicrosoftSentinelIntegrationRequest.from_dict(create_microsoft_sentinel_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateMsTeamsNotificationChannelRequestV1.md b/docs/reference/CreateMsTeamsNotificationChannelRequestV1.md new file mode 100644 index 00000000..b62e3df5 --- /dev/null +++ b/docs/reference/CreateMsTeamsNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateMsTeamsNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**MsTeamsNotificationChannelOptionsV1**](MsTeamsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_ms_teams_notification_channel_request_v1 import CreateMsTeamsNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateMsTeamsNotificationChannelRequestV1 from a JSON string +create_ms_teams_notification_channel_request_v1_instance = CreateMsTeamsNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateMsTeamsNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_ms_teams_notification_channel_request_v1_dict = create_ms_teams_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateMsTeamsNotificationChannelRequestV1 from a dict +create_ms_teams_notification_channel_request_v1_from_dict = CreateMsTeamsNotificationChannelRequestV1.from_dict(create_ms_teams_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateNotificationChannelRequestV1.md b/docs/reference/CreateNotificationChannelRequestV1.md new file mode 100644 index 00000000..ab08d1f9 --- /dev/null +++ b/docs/reference/CreateNotificationChannelRequestV1.md @@ -0,0 +1,29 @@ +# CreateNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**NotificationChannelTypeV1**](NotificationChannelTypeV1.md) | | + +## Example + +```python +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateNotificationChannelRequestV1 from a JSON string +create_notification_channel_request_v1_instance = CreateNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_notification_channel_request_v1_dict = create_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateNotificationChannelRequestV1 from a dict +create_notification_channel_request_v1_from_dict = CreateNotificationChannelRequestV1.from_dict(create_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateOpsgenieNotificationChannelRequestV1.md b/docs/reference/CreateOpsgenieNotificationChannelRequestV1.md new file mode 100644 index 00000000..e390e44f --- /dev/null +++ b/docs/reference/CreateOpsgenieNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateOpsgenieNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**OpsgenieNotificationChannelOptionsV1**](OpsgenieNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_opsgenie_notification_channel_request_v1 import CreateOpsgenieNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateOpsgenieNotificationChannelRequestV1 from a JSON string +create_opsgenie_notification_channel_request_v1_instance = CreateOpsgenieNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateOpsgenieNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_opsgenie_notification_channel_request_v1_dict = create_opsgenie_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateOpsgenieNotificationChannelRequestV1 from a dict +create_opsgenie_notification_channel_request_v1_from_dict = CreateOpsgenieNotificationChannelRequestV1.from_dict(create_opsgenie_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreatePagerDutyNotificationChannelRequestV1.md b/docs/reference/CreatePagerDutyNotificationChannelRequestV1.md new file mode 100644 index 00000000..406fc2fe --- /dev/null +++ b/docs/reference/CreatePagerDutyNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreatePagerDutyNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**PagerDutyNotificationChannelOptionsV1**](PagerDutyNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_pager_duty_notification_channel_request_v1 import CreatePagerDutyNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreatePagerDutyNotificationChannelRequestV1 from a JSON string +create_pager_duty_notification_channel_request_v1_instance = CreatePagerDutyNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreatePagerDutyNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_pager_duty_notification_channel_request_v1_dict = create_pager_duty_notification_channel_request_v1_instance.to_dict() +# create an instance of CreatePagerDutyNotificationChannelRequestV1 from a dict +create_pager_duty_notification_channel_request_v1_from_dict = CreatePagerDutyNotificationChannelRequestV1.from_dict(create_pager_duty_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreatePolicyRequest.md b/docs/reference/CreatePolicyRequest.md new file mode 100644 index 00000000..95893364 --- /dev/null +++ b/docs/reference/CreatePolicyRequest.md @@ -0,0 +1,33 @@ +# CreatePolicyRequest + +A Policy definition + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | human readable policy name | +**description** | **str** | policy description | [optional] +**bundles** | [**List[BundleRef]**](BundleRef.md) | bundles defining this policy | +**stages** | [**List[NewStage]**](NewStage.md) | array of stages for the policy. An empty array means the policy is applied only when specifically requested by its identifier. | [optional] + +## Example + +```python +from sysdig_client.models.create_policy_request import CreatePolicyRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreatePolicyRequest from a JSON string +create_policy_request_instance = CreatePolicyRequest.from_json(json) +# print the JSON string representation of the object +print(CreatePolicyRequest.to_json()) + +# convert the object into a dict +create_policy_request_dict = create_policy_request_instance.to_dict() +# create an instance of CreatePolicyRequest from a dict +create_policy_request_from_dict = CreatePolicyRequest.from_dict(create_policy_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreatePricingRequestV1.md b/docs/reference/CreatePricingRequestV1.md new file mode 100644 index 00000000..54c9ee78 --- /dev/null +++ b/docs/reference/CreatePricingRequestV1.md @@ -0,0 +1,34 @@ +# CreatePricingRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**PricingType**](PricingType.md) | | +**cluster_name** | **str** | The name of the cluster. Required when `type` is `CLUSTER`. | [optional] +**name** | **str** | The name of the pricing configuration. | +**unit_pricing** | [**UnitPricingV1**](UnitPricingV1.md) | The unit pricing configuration used to compute costs. | +**spot_label** | **str** | The name of a node label that is used to identify the node as a spot node. | [optional] +**spot_label_value** | **str** | The value of the spot node label. | [optional] + +## Example + +```python +from sysdig_client.models.create_pricing_request_v1 import CreatePricingRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreatePricingRequestV1 from a JSON string +create_pricing_request_v1_instance = CreatePricingRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreatePricingRequestV1.to_json()) + +# convert the object into a dict +create_pricing_request_v1_dict = create_pricing_request_v1_instance.to_dict() +# create an instance of CreatePricingRequestV1 from a dict +create_pricing_request_v1_from_dict = CreatePricingRequestV1.from_dict(create_pricing_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreatePrometheusAlertManagerNotificationChannelRequestV1.md b/docs/reference/CreatePrometheusAlertManagerNotificationChannelRequestV1.md new file mode 100644 index 00000000..0fb0f53f --- /dev/null +++ b/docs/reference/CreatePrometheusAlertManagerNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreatePrometheusAlertManagerNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**PrometheusAlertManagerNotificationChannelOptionsV1**](PrometheusAlertManagerNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_prometheus_alert_manager_notification_channel_request_v1 import CreatePrometheusAlertManagerNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreatePrometheusAlertManagerNotificationChannelRequestV1 from a JSON string +create_prometheus_alert_manager_notification_channel_request_v1_instance = CreatePrometheusAlertManagerNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreatePrometheusAlertManagerNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_prometheus_alert_manager_notification_channel_request_v1_dict = create_prometheus_alert_manager_notification_channel_request_v1_instance.to_dict() +# create an instance of CreatePrometheusAlertManagerNotificationChannelRequestV1 from a dict +create_prometheus_alert_manager_notification_channel_request_v1_from_dict = CreatePrometheusAlertManagerNotificationChannelRequestV1.from_dict(create_prometheus_alert_manager_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateQradarIntegrationRequest.md b/docs/reference/CreateQradarIntegrationRequest.md new file mode 100644 index 00000000..a225ba83 --- /dev/null +++ b/docs/reference/CreateQradarIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateQradarIntegrationRequest + +Create IBM QRadar Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**BaseConnectionInfoQradar**](BaseConnectionInfoQradar.md) | | + +## Example + +```python +from sysdig_client.models.create_qradar_integration_request import CreateQradarIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateQradarIntegrationRequest from a JSON string +create_qradar_integration_request_instance = CreateQradarIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateQradarIntegrationRequest.to_json()) + +# convert the object into a dict +create_qradar_integration_request_dict = create_qradar_integration_request_instance.to_dict() +# create an instance of CreateQradarIntegrationRequest from a dict +create_qradar_integration_request_from_dict = CreateQradarIntegrationRequest.from_dict(create_qradar_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateRiskAcceptedRequest.md b/docs/reference/CreateRiskAcceptedRequest.md new file mode 100644 index 00000000..2d8c7af3 --- /dev/null +++ b/docs/reference/CreateRiskAcceptedRequest.md @@ -0,0 +1,35 @@ +# CreateRiskAcceptedRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**entity_value** | **str** | A value to match with the entityType | +**expiration_date** | **date** | Date when the accepted risk will expire (in YYYY-MM-DD format) | [optional] +**reason** | **str** | Reason for acceptance | +**description** | **str** | Description of why the accepted risk was created | +**stages** | **List[str]** | List of stages where the risk acceptance is applied, empty list enables risk acceptance for all the stages | [optional] +**entity_type** | **str** | The entity where the Accepted Risk will be applied. | +**context** | [**CreateRiskAcceptedRequestAllOfContext**](CreateRiskAcceptedRequestAllOfContext.md) | | + +## Example + +```python +from sysdig_client.models.create_risk_accepted_request import CreateRiskAcceptedRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateRiskAcceptedRequest from a JSON string +create_risk_accepted_request_instance = CreateRiskAcceptedRequest.from_json(json) +# print the JSON string representation of the object +print(CreateRiskAcceptedRequest.to_json()) + +# convert the object into a dict +create_risk_accepted_request_dict = create_risk_accepted_request_instance.to_dict() +# create an instance of CreateRiskAcceptedRequest from a dict +create_risk_accepted_request_from_dict = CreateRiskAcceptedRequest.from_dict(create_risk_accepted_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateRiskAcceptedRequestAllOfContext.md b/docs/reference/CreateRiskAcceptedRequestAllOfContext.md new file mode 100644 index 00000000..c7cc415c --- /dev/null +++ b/docs/reference/CreateRiskAcceptedRequestAllOfContext.md @@ -0,0 +1,29 @@ +# CreateRiskAcceptedRequestAllOfContext + +If entityType is not `vulnerability`, `policyRule` or `package`, you should use `Empty Matcher` in the context. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.create_risk_accepted_request_all_of_context import CreateRiskAcceptedRequestAllOfContext + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateRiskAcceptedRequestAllOfContext from a JSON string +create_risk_accepted_request_all_of_context_instance = CreateRiskAcceptedRequestAllOfContext.from_json(json) +# print the JSON string representation of the object +print(CreateRiskAcceptedRequestAllOfContext.to_json()) + +# convert the object into a dict +create_risk_accepted_request_all_of_context_dict = create_risk_accepted_request_all_of_context_instance.to_dict() +# create an instance of CreateRiskAcceptedRequestAllOfContext from a dict +create_risk_accepted_request_all_of_context_from_dict = CreateRiskAcceptedRequestAllOfContext.from_dict(create_risk_accepted_request_all_of_context_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateServiceAccountRequestV1.md b/docs/reference/CreateServiceAccountRequestV1.md new file mode 100644 index 00000000..3c42472f --- /dev/null +++ b/docs/reference/CreateServiceAccountRequestV1.md @@ -0,0 +1,30 @@ +# CreateServiceAccountRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | The display name of the Service Account. | [optional] +**expiration_date** | **int** | Time when the Service Account API key expires, | in number of milliseconds since January 1, 1970, 00:00:00 GMT | [optional] + +## Example + +```python +from sysdig_client.models.create_service_account_request_v1 import CreateServiceAccountRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateServiceAccountRequestV1 from a JSON string +create_service_account_request_v1_instance = CreateServiceAccountRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateServiceAccountRequestV1.to_json()) + +# convert the object into a dict +create_service_account_request_v1_dict = create_service_account_request_v1_instance.to_dict() +# create an instance of CreateServiceAccountRequestV1 from a dict +create_service_account_request_v1_from_dict = CreateServiceAccountRequestV1.from_dict(create_service_account_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateServiceAccountsNotificationSettingsRequestV1.md b/docs/reference/CreateServiceAccountsNotificationSettingsRequestV1.md new file mode 100644 index 00000000..5c57f446 --- /dev/null +++ b/docs/reference/CreateServiceAccountsNotificationSettingsRequestV1.md @@ -0,0 +1,31 @@ +# CreateServiceAccountsNotificationSettingsRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_enabled** | **bool** | Whether the notification settings are enabled or not. | +**notification_channel_ids** | **List[int]** | The list of notification channel IDs to which the notifications are to be sent.\\ \\ Supported types are **EMAIL** and **SLACK**. | +**days_before_expiry** | **List[int]** | The number of days before the expiry of the service account when the notifications are to be sent. | [optional] [default to [30, 7, 1]] + +## Example + +```python +from sysdig_client.models.create_service_accounts_notification_settings_request_v1 import CreateServiceAccountsNotificationSettingsRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateServiceAccountsNotificationSettingsRequestV1 from a JSON string +create_service_accounts_notification_settings_request_v1_instance = CreateServiceAccountsNotificationSettingsRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateServiceAccountsNotificationSettingsRequestV1.to_json()) + +# convert the object into a dict +create_service_accounts_notification_settings_request_v1_dict = create_service_accounts_notification_settings_request_v1_instance.to_dict() +# create an instance of CreateServiceAccountsNotificationSettingsRequestV1 from a dict +create_service_accounts_notification_settings_request_v1_from_dict = CreateServiceAccountsNotificationSettingsRequestV1.from_dict(create_service_accounts_notification_settings_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateSlackNotificationChannelRequestV1.md b/docs/reference/CreateSlackNotificationChannelRequestV1.md new file mode 100644 index 00000000..89ada2a0 --- /dev/null +++ b/docs/reference/CreateSlackNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateSlackNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**SlackCreateNotificationChannelOptionsV1**](SlackCreateNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_slack_notification_channel_request_v1 import CreateSlackNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateSlackNotificationChannelRequestV1 from a JSON string +create_slack_notification_channel_request_v1_instance = CreateSlackNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateSlackNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_slack_notification_channel_request_v1_dict = create_slack_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateSlackNotificationChannelRequestV1 from a dict +create_slack_notification_channel_request_v1_from_dict = CreateSlackNotificationChannelRequestV1.from_dict(create_slack_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateSnsNotificationChannelRequestV1.md b/docs/reference/CreateSnsNotificationChannelRequestV1.md new file mode 100644 index 00000000..5fe4f94f --- /dev/null +++ b/docs/reference/CreateSnsNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateSnsNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**SnsNotificationChannelOptionsV1**](SnsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_sns_notification_channel_request_v1 import CreateSnsNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateSnsNotificationChannelRequestV1 from a JSON string +create_sns_notification_channel_request_v1_instance = CreateSnsNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateSnsNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_sns_notification_channel_request_v1_dict = create_sns_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateSnsNotificationChannelRequestV1 from a dict +create_sns_notification_channel_request_v1_from_dict = CreateSnsNotificationChannelRequestV1.from_dict(create_sns_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateSplunkIntegrationRequest.md b/docs/reference/CreateSplunkIntegrationRequest.md new file mode 100644 index 00000000..6a65468d --- /dev/null +++ b/docs/reference/CreateSplunkIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateSplunkIntegrationRequest + +Save Splunk Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**SplunkCreateConnectionInfo**](SplunkCreateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_splunk_integration_request import CreateSplunkIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateSplunkIntegrationRequest from a JSON string +create_splunk_integration_request_instance = CreateSplunkIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateSplunkIntegrationRequest.to_json()) + +# convert the object into a dict +create_splunk_integration_request_dict = create_splunk_integration_request_instance.to_dict() +# create an instance of CreateSplunkIntegrationRequest from a dict +create_splunk_integration_request_from_dict = CreateSplunkIntegrationRequest.from_dict(create_splunk_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateSsoSettingsRequestV1.md b/docs/reference/CreateSsoSettingsRequestV1.md new file mode 100644 index 00000000..15c5ca8b --- /dev/null +++ b/docs/reference/CreateSsoSettingsRequestV1.md @@ -0,0 +1,36 @@ +# CreateSsoSettingsRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**product** | [**Product**](Product.md) | The product to which SSO settings is applied to. SSO settings are configured per specific product. | +**is_active** | **bool** | Flag to indicate if the SSO settings is active. | [optional] +**create_user_on_login** | **bool** | Flag to indicate if the user will be created automatically if not found in the system. | [optional] +**is_password_login_enabled** | **bool** | Flag to indicate if the user will be able to login with password. Deprecated: use the API endpoint `/platform/v1/global-sso-settings` for this functionality. This is now a global setting: if this flag is defined here and this SSO setting is set to be active, the setting will be applied at global level. | [optional] +**is_single_logout_enabled** | **bool** | Flag to indicate if the single logout support is enabled. | [optional] +**is_group_mapping_enabled** | **bool** | Flag to indicate if group mapping support is enabled. | [optional] +**group_mapping_attribute_name** | **str** | The group mapping attribute name. | [optional] +**config** | [**SsoSettingsCreateRequestBaseV1**](SsoSettingsCreateRequestBaseV1.md) | | + +## Example + +```python +from sysdig_client.models.create_sso_settings_request_v1 import CreateSsoSettingsRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateSsoSettingsRequestV1 from a JSON string +create_sso_settings_request_v1_instance = CreateSsoSettingsRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateSsoSettingsRequestV1.to_json()) + +# convert the object into a dict +create_sso_settings_request_v1_dict = create_sso_settings_request_v1_instance.to_dict() +# create an instance of CreateSsoSettingsRequestV1 from a dict +create_sso_settings_request_v1_from_dict = CreateSsoSettingsRequestV1.from_dict(create_sso_settings_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateSyslogIntegrationRequest.md b/docs/reference/CreateSyslogIntegrationRequest.md new file mode 100644 index 00000000..58cf90a6 --- /dev/null +++ b/docs/reference/CreateSyslogIntegrationRequest.md @@ -0,0 +1,34 @@ +# CreateSyslogIntegrationRequest + +Create Syslog Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**BaseConnectionInfoSyslog**](BaseConnectionInfoSyslog.md) | | + +## Example + +```python +from sysdig_client.models.create_syslog_integration_request import CreateSyslogIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateSyslogIntegrationRequest from a JSON string +create_syslog_integration_request_instance = CreateSyslogIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateSyslogIntegrationRequest.to_json()) + +# convert the object into a dict +create_syslog_integration_request_dict = create_syslog_integration_request_instance.to_dict() +# create an instance of CreateSyslogIntegrationRequest from a dict +create_syslog_integration_request_from_dict = CreateSyslogIntegrationRequest.from_dict(create_syslog_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateTeamEmailNotificationChannelRequestV1.md b/docs/reference/CreateTeamEmailNotificationChannelRequestV1.md new file mode 100644 index 00000000..4f9847ee --- /dev/null +++ b/docs/reference/CreateTeamEmailNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateTeamEmailNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**TeamEmailNotificationChannelOptionsV1**](TeamEmailNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_team_email_notification_channel_request_v1 import CreateTeamEmailNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateTeamEmailNotificationChannelRequestV1 from a JSON string +create_team_email_notification_channel_request_v1_instance = CreateTeamEmailNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateTeamEmailNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_team_email_notification_channel_request_v1_dict = create_team_email_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateTeamEmailNotificationChannelRequestV1 from a dict +create_team_email_notification_channel_request_v1_from_dict = CreateTeamEmailNotificationChannelRequestV1.from_dict(create_team_email_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateTeamRequestV1.md b/docs/reference/CreateTeamRequestV1.md new file mode 100644 index 00000000..7515b627 --- /dev/null +++ b/docs/reference/CreateTeamRequestV1.md @@ -0,0 +1,39 @@ +# CreateTeamRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | The name of the team. It must be unique. | +**description** | **str** | A longer description of the team explaining what is it used for. | [optional] +**is_default_team** | **bool** | Specifies if the team is the default team. The default team is used to automatically assign new users to a team. | [optional] +**standard_team_role** | [**TeamRoleV1**](TeamRoleV1.md) | The standard team role assigned by default to users added to this team. **Mutually exclusive with customTeamRoleId**.\\ \\ *ROLE_TEAM_SERVICE_MANAGER is only supported in Secure.* | [optional] +**custom_team_role_id** | **int** | The custom team role assigned by default to users added to this team. **Mutually exclusive with standardTeamRoleId**. | [optional] +**product** | [**Product**](Product.md) | The product to which the team is assigned to. Teams can only be part of a single product at a time. | +**ui_settings** | [**UiSettingsV1**](UiSettingsV1.md) | | [optional] +**is_all_zones** | **bool** | **True** if the users that are members of this team have access to all zones. **Mutually exclusive with zoneIds**.\\ \\ _Only supported in Secure features._ | [optional] +**zone_ids** | **List[int]** | The list of zones that users assigned to this team will have access to. **Mutually exclusive with allZones**.\\ \\ _Only supported in Secure features._ | [optional] +**scopes** | [**List[ScopeV1]**](ScopeV1.md) | Scopes is a list of different scope types and filter values that will be applied to resources when accessed through the team. | [optional] +**additional_team_permissions** | [**AdditionalTeamPermissionsV1**](AdditionalTeamPermissionsV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.create_team_request_v1 import CreateTeamRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateTeamRequestV1 from a JSON string +create_team_request_v1_instance = CreateTeamRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateTeamRequestV1.to_json()) + +# convert the object into a dict +create_team_request_v1_dict = create_team_request_v1_instance.to_dict() +# create an instance of CreateTeamRequestV1 from a dict +create_team_request_v1_from_dict = CreateTeamRequestV1.from_dict(create_team_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateTeamServiceAccountRequestV1.md b/docs/reference/CreateTeamServiceAccountRequestV1.md new file mode 100644 index 00000000..b5f4be36 --- /dev/null +++ b/docs/reference/CreateTeamServiceAccountRequestV1.md @@ -0,0 +1,31 @@ +# CreateTeamServiceAccountRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | The display name of the Service Account. | +**expiration_date** | **int** | Time when the Service Account API key expires, | in number of milliseconds since January 1, 1970, 00:00:00 GMT | [optional] +**team_role** | **str** | Team role to be assigned to the team service account. | It can be a string for predefined roles or an id of a custom role. | + +## Example + +```python +from sysdig_client.models.create_team_service_account_request_v1 import CreateTeamServiceAccountRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateTeamServiceAccountRequestV1 from a JSON string +create_team_service_account_request_v1_instance = CreateTeamServiceAccountRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateTeamServiceAccountRequestV1.to_json()) + +# convert the object into a dict +create_team_service_account_request_v1_dict = create_team_service_account_request_v1_instance.to_dict() +# create an instance of CreateTeamServiceAccountRequestV1 from a dict +create_team_service_account_request_v1_from_dict = CreateTeamServiceAccountRequestV1.from_dict(create_team_service_account_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateUserRequestV1.md b/docs/reference/CreateUserRequestV1.md new file mode 100644 index 00000000..81160794 --- /dev/null +++ b/docs/reference/CreateUserRequestV1.md @@ -0,0 +1,35 @@ +# CreateUserRequestV1 + +Request to create the User + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**email** | **str** | The email address of the user. If the activation flow is set, this address will be used to send the activation email. | +**first_name** | **str** | The name of the user. | [optional] +**last_name** | **str** | The surname of the user. | [optional] +**is_admin** | **bool** | **True** if the user has Administration permissions. | [optional] [default to False] +**bypass_sso_enforcement** | **bool** | When **True**, the user can bypass SSO enforcement. **Warning:** This allows the user to log in without SSO even when username and password login is disabled. | [optional] [default to False] +**products** | [**List[Product]**](Product.md) | The user will be added to the default teams specified by this field. | [optional] + +## Example + +```python +from sysdig_client.models.create_user_request_v1 import CreateUserRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateUserRequestV1 from a JSON string +create_user_request_v1_instance = CreateUserRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateUserRequestV1.to_json()) + +# convert the object into a dict +create_user_request_v1_dict = create_user_request_v1_instance.to_dict() +# create an instance of CreateUserRequestV1 from a dict +create_user_request_v1_from_dict = CreateUserRequestV1.from_dict(create_user_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateVictorOpsNotificationChannelRequestV1.md b/docs/reference/CreateVictorOpsNotificationChannelRequestV1.md new file mode 100644 index 00000000..0c7fc632 --- /dev/null +++ b/docs/reference/CreateVictorOpsNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateVictorOpsNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**VictorOpsNotificationChannelOptionsV1**](VictorOpsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_victor_ops_notification_channel_request_v1 import CreateVictorOpsNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateVictorOpsNotificationChannelRequestV1 from a JSON string +create_victor_ops_notification_channel_request_v1_instance = CreateVictorOpsNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateVictorOpsNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_victor_ops_notification_channel_request_v1_dict = create_victor_ops_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateVictorOpsNotificationChannelRequestV1 from a dict +create_victor_ops_notification_channel_request_v1_from_dict = CreateVictorOpsNotificationChannelRequestV1.from_dict(create_victor_ops_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateWebhookIntegrationRequest.md b/docs/reference/CreateWebhookIntegrationRequest.md new file mode 100644 index 00000000..7caa3488 --- /dev/null +++ b/docs/reference/CreateWebhookIntegrationRequest.md @@ -0,0 +1,33 @@ +# CreateWebhookIntegrationRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**CreateWebhookIntegrationRequestAllOfConnectionInfo**](CreateWebhookIntegrationRequestAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.create_webhook_integration_request import CreateWebhookIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateWebhookIntegrationRequest from a JSON string +create_webhook_integration_request_instance = CreateWebhookIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(CreateWebhookIntegrationRequest.to_json()) + +# convert the object into a dict +create_webhook_integration_request_dict = create_webhook_integration_request_instance.to_dict() +# create an instance of CreateWebhookIntegrationRequest from a dict +create_webhook_integration_request_from_dict = CreateWebhookIntegrationRequest.from_dict(create_webhook_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateWebhookIntegrationRequestAllOfConnectionInfo.md b/docs/reference/CreateWebhookIntegrationRequestAllOfConnectionInfo.md new file mode 100644 index 00000000..ab82c7e9 --- /dev/null +++ b/docs/reference/CreateWebhookIntegrationRequestAllOfConnectionInfo.md @@ -0,0 +1,36 @@ +# CreateWebhookIntegrationRequestAllOfConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | Webhook endpoint following the schema protocol | +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**headers** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the request. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value | [optional] +**output** | **str** | Payload format | [optional] [default to 'json'] +**timestamp_format** | **str** | The resolution of the \"timestamp\" field in the payload | [optional] [default to 'nanoseconds'] +**auth** | **str** | Authentication method | +**certificate_id** | **int** | ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field | [optional] +**secret** | **str** | Secret to use, according to the \"auth\" value. | + +## Example + +```python +from sysdig_client.models.create_webhook_integration_request_all_of_connection_info import CreateWebhookIntegrationRequestAllOfConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateWebhookIntegrationRequestAllOfConnectionInfo from a JSON string +create_webhook_integration_request_all_of_connection_info_instance = CreateWebhookIntegrationRequestAllOfConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(CreateWebhookIntegrationRequestAllOfConnectionInfo.to_json()) + +# convert the object into a dict +create_webhook_integration_request_all_of_connection_info_dict = create_webhook_integration_request_all_of_connection_info_instance.to_dict() +# create an instance of CreateWebhookIntegrationRequestAllOfConnectionInfo from a dict +create_webhook_integration_request_all_of_connection_info_from_dict = CreateWebhookIntegrationRequestAllOfConnectionInfo.from_dict(create_webhook_integration_request_all_of_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateWebhookNotificationChannelRequestV1.md b/docs/reference/CreateWebhookNotificationChannelRequestV1.md new file mode 100644 index 00000000..ad02e0b8 --- /dev/null +++ b/docs/reference/CreateWebhookNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# CreateWebhookNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**WebhookNotificationChannelOptionsV1**](WebhookNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.create_webhook_notification_channel_request_v1 import CreateWebhookNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateWebhookNotificationChannelRequestV1 from a JSON string +create_webhook_notification_channel_request_v1_instance = CreateWebhookNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateWebhookNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +create_webhook_notification_channel_request_v1_dict = create_webhook_notification_channel_request_v1_instance.to_dict() +# create an instance of CreateWebhookNotificationChannelRequestV1 from a dict +create_webhook_notification_channel_request_v1_from_dict = CreateWebhookNotificationChannelRequestV1.from_dict(create_webhook_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateZoneRequestV1.md b/docs/reference/CreateZoneRequestV1.md new file mode 100644 index 00000000..433f30f8 --- /dev/null +++ b/docs/reference/CreateZoneRequestV1.md @@ -0,0 +1,31 @@ +# CreateZoneRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | The name of the Zone. It must be unique | +**description** | **str** | The Zone description. It can be useful for adding extra information | [optional] +**scopes** | [**List[CreateZoneScopeRequestV1]**](CreateZoneScopeRequestV1.md) | Zone attached scopes | + +## Example + +```python +from sysdig_client.models.create_zone_request_v1 import CreateZoneRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateZoneRequestV1 from a JSON string +create_zone_request_v1_instance = CreateZoneRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateZoneRequestV1.to_json()) + +# convert the object into a dict +create_zone_request_v1_dict = create_zone_request_v1_instance.to_dict() +# create an instance of CreateZoneRequestV1 from a dict +create_zone_request_v1_from_dict = CreateZoneRequestV1.from_dict(create_zone_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CreateZoneScopeRequestV1.md b/docs/reference/CreateZoneScopeRequestV1.md new file mode 100644 index 00000000..78a64273 --- /dev/null +++ b/docs/reference/CreateZoneScopeRequestV1.md @@ -0,0 +1,30 @@ +# CreateZoneScopeRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**target_type** | **str** | The target type of the Scope | +**rules** | **str** | Scoping rules to be applied | [optional] + +## Example + +```python +from sysdig_client.models.create_zone_scope_request_v1 import CreateZoneScopeRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CreateZoneScopeRequestV1 from a JSON string +create_zone_scope_request_v1_instance = CreateZoneScopeRequestV1.from_json(json) +# print the JSON string representation of the object +print(CreateZoneScopeRequestV1.to_json()) + +# convert the object into a dict +create_zone_scope_request_v1_dict = create_zone_scope_request_v1_instance.to_dict() +# create an instance of CreateZoneScopeRequestV1 from a dict +create_zone_scope_request_v1_from_dict = CreateZoneScopeRequestV1.from_dict(create_zone_scope_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CustomJobV1.md b/docs/reference/CustomJobV1.md new file mode 100644 index 00000000..87735e22 --- /dev/null +++ b/docs/reference/CustomJobV1.md @@ -0,0 +1,32 @@ +# CustomJobV1 + +Custom Prometheus job name and enablement status + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | Job name | [optional] +**enabled** | **bool** | Enablement status | [optional] +**enablement_by_cluster** | **Dict[str, bool]** | Enablement overrides by cluster | [optional] + +## Example + +```python +from sysdig_client.models.custom_job_v1 import CustomJobV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CustomJobV1 from a JSON string +custom_job_v1_instance = CustomJobV1.from_json(json) +# print the JSON string representation of the object +print(CustomJobV1.to_json()) + +# convert the object into a dict +custom_job_v1_dict = custom_job_v1_instance.to_dict() +# create an instance of CustomJobV1 from a dict +custom_job_v1_from_dict = CustomJobV1.from_dict(custom_job_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CustomJobsEnablementV1.md b/docs/reference/CustomJobsEnablementV1.md new file mode 100644 index 00000000..bb11c878 --- /dev/null +++ b/docs/reference/CustomJobsEnablementV1.md @@ -0,0 +1,31 @@ +# CustomJobsEnablementV1 + +The enablement status of a custom Prometheus job + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**enabled** | **bool** | Enablement status | +**enablement_by_cluster** | **Dict[str, bool]** | Enablement overrides by cluster | [optional] + +## Example + +```python +from sysdig_client.models.custom_jobs_enablement_v1 import CustomJobsEnablementV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CustomJobsEnablementV1 from a JSON string +custom_jobs_enablement_v1_instance = CustomJobsEnablementV1.from_json(json) +# print the JSON string representation of the object +print(CustomJobsEnablementV1.to_json()) + +# convert the object into a dict +custom_jobs_enablement_v1_dict = custom_jobs_enablement_v1_instance.to_dict() +# create an instance of CustomJobsEnablementV1 from a dict +custom_jobs_enablement_v1_from_dict = CustomJobsEnablementV1.from_dict(custom_jobs_enablement_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CustomMonitorEvent.md b/docs/reference/CustomMonitorEvent.md new file mode 100644 index 00000000..406c97c1 --- /dev/null +++ b/docs/reference/CustomMonitorEvent.md @@ -0,0 +1,38 @@ +# CustomMonitorEvent + +Monitor Custom Event + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The event id. | +**created_on** | **datetime** | Timestamp when the event was created in the system | +**occurred_at** | **datetime** | Event logical timestamp (when the event occurred). For alert events, this is the time when the alert was triggered. | +**name** | **str** | The event name | +**description** | **str** | Description of the event. | [optional] +**severity** | **int** | The event severity. A lower value means more severe, with 0 being the highest severity and 7 being the lowest. | +**scope_labels** | [**List[MonitorScopeLabel]**](MonitorScopeLabel.md) | List of scope labels, including those from initial scope and those coming from the enrichment process. | [optional] +**scope** | **str** | Initial event scope | [optional] +**source** | **str** | The event source. Well known sources include kubernetes, docker, containerd. User created events have a value of api for this field, unless specifically overwritten at creation time | [optional] + +## Example + +```python +from sysdig_client.models.custom_monitor_event import CustomMonitorEvent + +# TODO update the JSON string below +json = "{}" +# create an instance of CustomMonitorEvent from a JSON string +custom_monitor_event_instance = CustomMonitorEvent.from_json(json) +# print the JSON string representation of the object +print(CustomMonitorEvent.to_json()) + +# convert the object into a dict +custom_monitor_event_dict = custom_monitor_event_instance.to_dict() +# create an instance of CustomMonitorEvent from a dict +custom_monitor_event_from_dict = CustomMonitorEvent.from_dict(custom_monitor_event_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CustomWebhookNotificationChannelOptionsV1.md b/docs/reference/CustomWebhookNotificationChannelOptionsV1.md new file mode 100644 index 00000000..f4aa6c13 --- /dev/null +++ b/docs/reference/CustomWebhookNotificationChannelOptionsV1.md @@ -0,0 +1,35 @@ +# CustomWebhookNotificationChannelOptionsV1 + +The custom webhook notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**url** | **str** | The url to which the request should be sent | +**template** | **str** | The custom template used by this webhook, currently a JSON potentially enriched by Sysdig Templating Language | +**http_method** | **str** | The HTTP method to use when doing the request to the target url | [optional] [default to 'POST'] +**is_allows_insecure_connections** | **bool** | Specifies if the channel allows insecure connections (e.g. plain http, self-signed https) | [optional] +**additional_headers** | **Dict[str, str]** | Additional headers to send as part of the request to the target url | [optional] + +## Example + +```python +from sysdig_client.models.custom_webhook_notification_channel_options_v1 import CustomWebhookNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CustomWebhookNotificationChannelOptionsV1 from a JSON string +custom_webhook_notification_channel_options_v1_instance = CustomWebhookNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(CustomWebhookNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +custom_webhook_notification_channel_options_v1_dict = custom_webhook_notification_channel_options_v1_instance.to_dict() +# create an instance of CustomWebhookNotificationChannelOptionsV1 from a dict +custom_webhook_notification_channel_options_v1_from_dict = CustomWebhookNotificationChannelOptionsV1.from_dict(custom_webhook_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CustomWebhookNotificationChannelResponseV1.md b/docs/reference/CustomWebhookNotificationChannelResponseV1.md new file mode 100644 index 00000000..0cf507c2 --- /dev/null +++ b/docs/reference/CustomWebhookNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# CustomWebhookNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**CustomWebhookNotificationChannelOptionsV1**](CustomWebhookNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.custom_webhook_notification_channel_response_v1 import CustomWebhookNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of CustomWebhookNotificationChannelResponseV1 from a JSON string +custom_webhook_notification_channel_response_v1_instance = CustomWebhookNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(CustomWebhookNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +custom_webhook_notification_channel_response_v1_dict = custom_webhook_notification_channel_response_v1_instance.to_dict() +# create an instance of CustomWebhookNotificationChannelResponseV1 from a dict +custom_webhook_notification_channel_response_v1_from_dict = CustomWebhookNotificationChannelResponseV1.from_dict(custom_webhook_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/CvssScore.md b/docs/reference/CvssScore.md new file mode 100644 index 00000000..6bf2a2a0 --- /dev/null +++ b/docs/reference/CvssScore.md @@ -0,0 +1,31 @@ +# CvssScore + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**version** | **str** | | +**score** | **float** | CVSS score | +**vector** | **str** | attack vector | [optional] + +## Example + +```python +from sysdig_client.models.cvss_score import CvssScore + +# TODO update the JSON string below +json = "{}" +# create an instance of CvssScore from a JSON string +cvss_score_instance = CvssScore.from_json(json) +# print the JSON string representation of the object +print(CvssScore.to_json()) + +# convert the object into a dict +cvss_score_dict = cvss_score_instance.to_dict() +# create an instance of CvssScore from a dict +cvss_score_from_dict = CvssScore.from_dict(cvss_score_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/DateRange.md b/docs/reference/DateRange.md new file mode 100644 index 00000000..fdcd2ce0 --- /dev/null +++ b/docs/reference/DateRange.md @@ -0,0 +1,31 @@ +# DateRange + +A date range with inclusive start and end dates. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**start_date** | **date** | The beginning of the date range. | +**end_date** | **date** | The end of the date range. | + +## Example + +```python +from sysdig_client.models.date_range import DateRange + +# TODO update the JSON string below +json = "{}" +# create an instance of DateRange from a JSON string +date_range_instance = DateRange.from_json(json) +# print the JSON string representation of the object +print(DateRange.to_json()) + +# convert the object into a dict +date_range_dict = date_range_instance.to_dict() +# create an instance of DateRange from a dict +date_range_from_dict = DateRange.from_dict(date_range_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/DenyCve.md b/docs/reference/DenyCve.md new file mode 100644 index 00000000..bed9c702 --- /dev/null +++ b/docs/reference/DenyCve.md @@ -0,0 +1,31 @@ +# DenyCve + +Predicate expressing \"any of these CVEs is present\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**DenyCveExtra**](DenyCveExtra.md) | | + +## Example + +```python +from sysdig_client.models.deny_cve import DenyCve + +# TODO update the JSON string below +json = "{}" +# create an instance of DenyCve from a JSON string +deny_cve_instance = DenyCve.from_json(json) +# print the JSON string representation of the object +print(DenyCve.to_json()) + +# convert the object into a dict +deny_cve_dict = deny_cve_instance.to_dict() +# create an instance of DenyCve from a dict +deny_cve_from_dict = DenyCve.from_dict(deny_cve_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/DenyCveExtra.md b/docs/reference/DenyCveExtra.md new file mode 100644 index 00000000..91032e61 --- /dev/null +++ b/docs/reference/DenyCveExtra.md @@ -0,0 +1,29 @@ +# DenyCveExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**vuln_ids** | **List[str]** | | [optional] + +## Example + +```python +from sysdig_client.models.deny_cve_extra import DenyCveExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of DenyCveExtra from a JSON string +deny_cve_extra_instance = DenyCveExtra.from_json(json) +# print the JSON string representation of the object +print(DenyCveExtra.to_json()) + +# convert the object into a dict +deny_cve_extra_dict = deny_cve_extra_instance.to_dict() +# create an instance of DenyCveExtra from a dict +deny_cve_extra_from_dict = DenyCveExtra.from_dict(deny_cve_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/DenyPkg.md b/docs/reference/DenyPkg.md new file mode 100644 index 00000000..6669f94b --- /dev/null +++ b/docs/reference/DenyPkg.md @@ -0,0 +1,31 @@ +# DenyPkg + +Predicate expressing \"any of these packages is present\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**DenyPkgExtra**](DenyPkgExtra.md) | | + +## Example + +```python +from sysdig_client.models.deny_pkg import DenyPkg + +# TODO update the JSON string below +json = "{}" +# create an instance of DenyPkg from a JSON string +deny_pkg_instance = DenyPkg.from_json(json) +# print the JSON string representation of the object +print(DenyPkg.to_json()) + +# convert the object into a dict +deny_pkg_dict = deny_pkg_instance.to_dict() +# create an instance of DenyPkg from a dict +deny_pkg_from_dict = DenyPkg.from_dict(deny_pkg_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/DenyPkgExtra.md b/docs/reference/DenyPkgExtra.md new file mode 100644 index 00000000..5b75eaf1 --- /dev/null +++ b/docs/reference/DenyPkgExtra.md @@ -0,0 +1,29 @@ +# DenyPkgExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**packages** | [**List[DenyPkgExtraPackagesInner]**](DenyPkgExtraPackagesInner.md) | | + +## Example + +```python +from sysdig_client.models.deny_pkg_extra import DenyPkgExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of DenyPkgExtra from a JSON string +deny_pkg_extra_instance = DenyPkgExtra.from_json(json) +# print the JSON string representation of the object +print(DenyPkgExtra.to_json()) + +# convert the object into a dict +deny_pkg_extra_dict = deny_pkg_extra_instance.to_dict() +# create an instance of DenyPkgExtra from a dict +deny_pkg_extra_from_dict = DenyPkgExtra.from_dict(deny_pkg_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/DenyPkgExtraPackagesInner.md b/docs/reference/DenyPkgExtraPackagesInner.md new file mode 100644 index 00000000..e85ce0e0 --- /dev/null +++ b/docs/reference/DenyPkgExtraPackagesInner.md @@ -0,0 +1,30 @@ +# DenyPkgExtraPackagesInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | Package name | +**version** | **str** | Package version | [optional] + +## Example + +```python +from sysdig_client.models.deny_pkg_extra_packages_inner import DenyPkgExtraPackagesInner + +# TODO update the JSON string below +json = "{}" +# create an instance of DenyPkgExtraPackagesInner from a JSON string +deny_pkg_extra_packages_inner_instance = DenyPkgExtraPackagesInner.from_json(json) +# print the JSON string representation of the object +print(DenyPkgExtraPackagesInner.to_json()) + +# convert the object into a dict +deny_pkg_extra_packages_inner_dict = deny_pkg_extra_packages_inner_instance.to_dict() +# create an instance of DenyPkgExtraPackagesInner from a dict +deny_pkg_extra_packages_inner_from_dict = DenyPkgExtraPackagesInner.from_dict(deny_pkg_extra_packages_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Dependency.md b/docs/reference/Dependency.md new file mode 100644 index 00000000..551dbaf5 --- /dev/null +++ b/docs/reference/Dependency.md @@ -0,0 +1,31 @@ +# Dependency + +Defines the direct dependencies of a component or service. Components or services that do not have their own dependencies MUST be declared as empty elements within the graph. Components or services that are not represented in the dependency graph MAY have unknown dependencies. It is RECOMMENDED that implementations assume this to be opaque and not an indicator of a object being dependency-free. It is RECOMMENDED to leverage compositions to indicate unknown dependency graphs. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ref** | **str** | References a component or service by its bom-ref attribute | +**depends_on** | **List[str]** | The bom-ref identifiers of the components or services that are dependencies of this dependency object. | [optional] + +## Example + +```python +from sysdig_client.models.dependency import Dependency + +# TODO update the JSON string below +json = "{}" +# create an instance of Dependency from a JSON string +dependency_instance = Dependency.from_json(json) +# print the JSON string representation of the object +print(Dependency.to_json()) + +# convert the object into a dict +dependency_dict = dependency_instance.to_dict() +# create an instance of Dependency from a dict +dependency_from_dict = Dependency.from_dict(dependency_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/DisableJobsAndMetricsV1.md b/docs/reference/DisableJobsAndMetricsV1.md new file mode 100644 index 00000000..8ed70d1c --- /dev/null +++ b/docs/reference/DisableJobsAndMetricsV1.md @@ -0,0 +1,31 @@ +# DisableJobsAndMetricsV1 + +Get Disabled Metrics by Job name Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**job_name** | **str** | The Prometheus Job for which the collection of one or more metrics is disabled. | [optional] +**metrics** | [**List[DisableMetricV1]**](DisableMetricV1.md) | List of metrics to be disabled. | [optional] + +## Example + +```python +from sysdig_client.models.disable_jobs_and_metrics_v1 import DisableJobsAndMetricsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of DisableJobsAndMetricsV1 from a JSON string +disable_jobs_and_metrics_v1_instance = DisableJobsAndMetricsV1.from_json(json) +# print the JSON string representation of the object +print(DisableJobsAndMetricsV1.to_json()) + +# convert the object into a dict +disable_jobs_and_metrics_v1_dict = disable_jobs_and_metrics_v1_instance.to_dict() +# create an instance of DisableJobsAndMetricsV1 from a dict +disable_jobs_and_metrics_v1_from_dict = DisableJobsAndMetricsV1.from_dict(disable_jobs_and_metrics_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/DisableMetricV1.md b/docs/reference/DisableMetricV1.md new file mode 100644 index 00000000..b8e97647 --- /dev/null +++ b/docs/reference/DisableMetricV1.md @@ -0,0 +1,31 @@ +# DisableMetricV1 + +Get Disabled Metrics by Job name Response. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metric_name** | **str** | The name of the metric to be disabled or re-enabled. | [optional] +**is_disabled** | **bool** | Set as `true` to disable a metric. \\ Set as `false` to re-enable a metric. | [optional] + +## Example + +```python +from sysdig_client.models.disable_metric_v1 import DisableMetricV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of DisableMetricV1 from a JSON string +disable_metric_v1_instance = DisableMetricV1.from_json(json) +# print the JSON string representation of the object +print(DisableMetricV1.to_json()) + +# convert the object into a dict +disable_metric_v1_dict = disable_metric_v1_instance.to_dict() +# create an instance of DisableMetricV1 from a dict +disable_metric_v1_from_dict = DisableMetricV1.from_dict(disable_metric_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/DriftPreventedAction.md b/docs/reference/DriftPreventedAction.md new file mode 100644 index 00000000..424dfffd --- /dev/null +++ b/docs/reference/DriftPreventedAction.md @@ -0,0 +1,32 @@ +# DriftPreventedAction + +Automatic action preventing the execution of a file not present in the original container image. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ActionType**](ActionType.md) | | +**is_successful** | **bool** | Whether or not the action was completed successfully. | [optional] +**err_msg** | **str** | When `isSuccessful` is `false`, details on why the action failed. | [optional] + +## Example + +```python +from sysdig_client.models.drift_prevented_action import DriftPreventedAction + +# TODO update the JSON string below +json = "{}" +# create an instance of DriftPreventedAction from a JSON string +drift_prevented_action_instance = DriftPreventedAction.from_json(json) +# print the JSON string representation of the object +print(DriftPreventedAction.to_json()) + +# convert the object into a dict +drift_prevented_action_dict = drift_prevented_action_instance.to_dict() +# create an instance of DriftPreventedAction from a dict +drift_prevented_action_from_dict = DriftPreventedAction.from_dict(drift_prevented_action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EmailNotificationChannelOptionsV1.md b/docs/reference/EmailNotificationChannelOptionsV1.md new file mode 100644 index 00000000..bcdf75c7 --- /dev/null +++ b/docs/reference/EmailNotificationChannelOptionsV1.md @@ -0,0 +1,31 @@ +# EmailNotificationChannelOptionsV1 + +The email notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**email_recipients** | **List[str]** | List of email recipients to which notifications should be sent | + +## Example + +```python +from sysdig_client.models.email_notification_channel_options_v1 import EmailNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of EmailNotificationChannelOptionsV1 from a JSON string +email_notification_channel_options_v1_instance = EmailNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(EmailNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +email_notification_channel_options_v1_dict = email_notification_channel_options_v1_instance.to_dict() +# create an instance of EmailNotificationChannelOptionsV1 from a dict +email_notification_channel_options_v1_from_dict = EmailNotificationChannelOptionsV1.from_dict(email_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EmailNotificationChannelResponseV1.md b/docs/reference/EmailNotificationChannelResponseV1.md new file mode 100644 index 00000000..6778be8f --- /dev/null +++ b/docs/reference/EmailNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# EmailNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**EmailNotificationChannelOptionsV1**](EmailNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.email_notification_channel_response_v1 import EmailNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of EmailNotificationChannelResponseV1 from a JSON string +email_notification_channel_response_v1_instance = EmailNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(EmailNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +email_notification_channel_response_v1_dict = email_notification_channel_response_v1_instance.to_dict() +# create an instance of EmailNotificationChannelResponseV1 from a dict +email_notification_channel_response_v1_from_dict = EmailNotificationChannelResponseV1.from_dict(email_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EntityDefinition.md b/docs/reference/EntityDefinition.md new file mode 100644 index 00000000..9dcba3f0 --- /dev/null +++ b/docs/reference/EntityDefinition.md @@ -0,0 +1,32 @@ +# EntityDefinition + +Defines the structure and metadata of a field in the query result. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | Type of the entity. | +**alias** | **str** | The alias used in the query. | [optional] +**definition** | [**EntityDefinitionDefinition**](EntityDefinitionDefinition.md) | | + +## Example + +```python +from sysdig_client.models.entity_definition import EntityDefinition + +# TODO update the JSON string below +json = "{}" +# create an instance of EntityDefinition from a JSON string +entity_definition_instance = EntityDefinition.from_json(json) +# print the JSON string representation of the object +print(EntityDefinition.to_json()) + +# convert the object into a dict +entity_definition_dict = entity_definition_instance.to_dict() +# create an instance of EntityDefinition from a dict +entity_definition_from_dict = EntityDefinition.from_dict(entity_definition_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EntityDefinitionDefinition.md b/docs/reference/EntityDefinitionDefinition.md new file mode 100644 index 00000000..912e4e63 --- /dev/null +++ b/docs/reference/EntityDefinitionDefinition.md @@ -0,0 +1,33 @@ +# EntityDefinitionDefinition + +Detailed definition of the field. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**def_type** | **str** | Type of the definition. | +**name** | **str** | Name of the field. | +**type** | **str** | Data type of the field. | +**hidden** | **bool** | Indicates if the field is hidden from view. | [optional] + +## Example + +```python +from sysdig_client.models.entity_definition_definition import EntityDefinitionDefinition + +# TODO update the JSON string below +json = "{}" +# create an instance of EntityDefinitionDefinition from a JSON string +entity_definition_definition_instance = EntityDefinitionDefinition.from_json(json) +# print the JSON string representation of the object +print(EntityDefinitionDefinition.to_json()) + +# convert the object into a dict +entity_definition_definition_dict = entity_definition_definition_instance.to_dict() +# create an instance of EntityDefinitionDefinition from a dict +entity_definition_definition_from_dict = EntityDefinitionDefinition.from_dict(entity_definition_definition_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EntriesResponse.md b/docs/reference/EntriesResponse.md new file mode 100644 index 00000000..dcfbe362 --- /dev/null +++ b/docs/reference/EntriesResponse.md @@ -0,0 +1,31 @@ +# EntriesResponse + +The response to a GET entries call + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**Page**](Page.md) | | [optional] +**data** | [**List[EntriesResponseDataInner]**](EntriesResponseDataInner.md) | The actual data contained in one of the supported types of entry | [optional] + +## Example + +```python +from sysdig_client.models.entries_response import EntriesResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of EntriesResponse from a JSON string +entries_response_instance = EntriesResponse.from_json(json) +# print the JSON string representation of the object +print(EntriesResponse.to_json()) + +# convert the object into a dict +entries_response_dict = entries_response_instance.to_dict() +# create an instance of EntriesResponse from a dict +entries_response_from_dict = EntriesResponse.from_dict(entries_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EntriesResponseDataInner.md b/docs/reference/EntriesResponseDataInner.md new file mode 100644 index 00000000..dfee4ece --- /dev/null +++ b/docs/reference/EntriesResponseDataInner.md @@ -0,0 +1,67 @@ +# EntriesResponseDataInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The audit event id. | +**timestamp** | **int** | Timestamp the audit event occured, expressed in nanoseconds. | +**type** | **str** | The entry type | +**container_id** | **str** | The container id. `containerId` is present only if the audit event was collected in a container context. | +**cmdline** | **str** | Full command line | +**comm** | **str** | The name of the command. | +**pcomm** | **str** | The name of the parent command. | +**pid** | **int** | Id of the process owning the connection. | +**ppid** | **int** | Parent process ID. | +**uid** | **int** | User ID | +**username** | **str** | Username | [optional] +**cwd** | **str** | Command working directory. | +**login_shell_id** | **int** | Process id of the shell. | +**login_shell_distance** | **int** | Level of nesting from the parent shell. | +**hostname** | **str** | The Kubernetes hostname. | +**tty** | **int** | TTY number. | +**user_login_uid** | **int** | User login UID. | +**user_login_name** | **str** | User login name. | +**proc_exepath** | **str** | Process executable path. | +**labels** | **Dict[str, str]** | Key value pairs of labels. | [optional] +**dns_domains** | **List[str]** | DNS information for the connection event. | [default to []] +**process_name** | **str** | Name of the process owning the connection. | +**client_ipv4** | **str** | The IPv4 dotted notation of the client address. | +**client_port** | **int** | The client port. | +**server_ipv4** | **str** | The IPv4 dotted notation of the server address. | +**server_port** | **int** | The server port. | +**direction** | **str** | The direction of the connection. | +**l4protocol** | **str** | The layer 4 protocol. | +**directory** | **str** | The Directory for the file access. | +**filename** | **str** | The Filename involved in file access. | +**permissions** | **str** | The Permissions of the file access. | +**resource** | **str** | The Kubernetes resource. | +**sub_resource** | **str** | The Kubernetes subresource. | +**namespace** | **str** | The Kubernetes namespace. | +**name** | **str** | The name of the resource. | +**source_addresses** | **List[str]** | | +**user** | [**User**](User.md) | | +**user_agent** | **str** | The user agent of the client | +**args** | **object** | Arguments specific for the different types of Kubernetes audit entries. In case of `pods:exec`, `args` will contain the fields `command` and `container` representing the command called and the name of the container in the pod where the command was executed respectively. | + +## Example + +```python +from sysdig_client.models.entries_response_data_inner import EntriesResponseDataInner + +# TODO update the JSON string below +json = "{}" +# create an instance of EntriesResponseDataInner from a JSON string +entries_response_data_inner_instance = EntriesResponseDataInner.from_json(json) +# print the JSON string representation of the object +print(EntriesResponseDataInner.to_json()) + +# convert the object into a dict +entries_response_data_inner_dict = entries_response_data_inner_instance.to_dict() +# create an instance of EntriesResponseDataInner from a dict +entries_response_data_inner_from_dict = EntriesResponseDataInner.from_dict(entries_response_data_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Entry.md b/docs/reference/Entry.md new file mode 100644 index 00000000..9468fa40 --- /dev/null +++ b/docs/reference/Entry.md @@ -0,0 +1,31 @@ +# Entry + +The base structure of an Activity Audit entry + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The audit event id. | +**timestamp** | **int** | Timestamp the audit event occured, expressed in nanoseconds. | + +## Example + +```python +from sysdig_client.models.entry import Entry + +# TODO update the JSON string below +json = "{}" +# create an instance of Entry from a JSON string +entry_instance = Entry.from_json(json) +# print the JSON string representation of the object +print(Entry.to_json()) + +# convert the object into a dict +entry_dict = entry_instance.to_dict() +# create an instance of Entry from a dict +entry_from_dict = Entry.from_dict(entry_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EntryPointModuleV1.md b/docs/reference/EntryPointModuleV1.md new file mode 100644 index 00000000..537debff --- /dev/null +++ b/docs/reference/EntryPointModuleV1.md @@ -0,0 +1,23 @@ +# EntryPointModuleV1 + +The Module is the area in Sysdig Monitor. + +## Enum + +* `ALERTS` (value: `'Alerts'`) + +* `DASHBOARDS` (value: `'Dashboards'`) + +* `EVENTS` (value: `'Events'`) + +* `EXPLORE` (value: `'Explore'`) + +* `OVERVIEW` (value: `'Overview'`) + +* `SETTINGS` (value: `'Settings'`) + +* `DASHBOARDTEMPLATES` (value: `'DashboardTemplates'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EntryPointV1.md b/docs/reference/EntryPointV1.md new file mode 100644 index 00000000..f9ff8885 --- /dev/null +++ b/docs/reference/EntryPointV1.md @@ -0,0 +1,31 @@ +# EntryPointV1 + +The page you see after logging into Sysdig UI. It is defined by a Module and a Selection. **The Entry Point is not supported in Sysdig Secure.** + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**module** | [**EntryPointModuleV1**](EntryPointModuleV1.md) | | [optional] +**selection** | **str** | The selection is the specific page within the Module, usually defined by the resource ID. It is supported only supported by **Dashboards** and **DashboardTemplates** Modules. | [optional] + +## Example + +```python +from sysdig_client.models.entry_point_v1 import EntryPointV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of EntryPointV1 from a JSON string +entry_point_v1_instance = EntryPointV1.from_json(json) +# print the JSON string representation of the object +print(EntryPointV1.to_json()) + +# convert the object into a dict +entry_point_v1_dict = entry_point_v1_instance.to_dict() +# create an instance of EntryPointV1 from a dict +entry_point_v1_from_dict = EntryPointV1.from_dict(entry_point_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EntryResponse.md b/docs/reference/EntryResponse.md new file mode 100644 index 00000000..688a5331 --- /dev/null +++ b/docs/reference/EntryResponse.md @@ -0,0 +1,68 @@ +# EntryResponse + +The response to a GET entry call + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The audit event id. | +**timestamp** | **int** | Timestamp the audit event occured, expressed in nanoseconds. | +**type** | **str** | The entry type | +**container_id** | **str** | The container id. `containerId` is present only if the audit event was collected in a container context. | +**cmdline** | **str** | Full command line | +**comm** | **str** | The name of the command. | +**pcomm** | **str** | The name of the parent command. | +**pid** | **int** | Id of the process owning the connection. | +**ppid** | **int** | Parent process ID. | +**uid** | **int** | User ID | +**username** | **str** | Username | [optional] +**cwd** | **str** | Command working directory. | +**login_shell_id** | **int** | Process id of the shell. | +**login_shell_distance** | **int** | Level of nesting from the parent shell. | +**hostname** | **str** | The Kubernetes hostname. | +**tty** | **int** | TTY number. | +**user_login_uid** | **int** | User login UID. | +**user_login_name** | **str** | User login name. | +**proc_exepath** | **str** | Process executable path. | +**labels** | **Dict[str, str]** | Key value pairs of labels. | [optional] +**dns_domains** | **List[str]** | DNS information for the connection event. | [default to []] +**process_name** | **str** | Name of the process owning the connection. | +**client_ipv4** | **str** | The IPv4 dotted notation of the client address. | +**client_port** | **int** | The client port. | +**server_ipv4** | **str** | The IPv4 dotted notation of the server address. | +**server_port** | **int** | The server port. | +**direction** | **str** | The direction of the connection. | +**l4protocol** | **str** | The layer 4 protocol. | +**directory** | **str** | The Directory for the file access. | +**filename** | **str** | The Filename involved in file access. | +**permissions** | **str** | The Permissions of the file access. | +**resource** | **str** | The Kubernetes resource. | +**sub_resource** | **str** | The Kubernetes subresource. | +**namespace** | **str** | The Kubernetes namespace. | +**name** | **str** | The name of the resource. | +**source_addresses** | **List[str]** | | +**user** | [**User**](User.md) | | +**user_agent** | **str** | The user agent of the client | +**args** | **object** | Arguments specific for the different types of Kubernetes audit entries. In case of `pods:exec`, `args` will contain the fields `command` and `container` representing the command called and the name of the container in the pod where the command was executed respectively. | + +## Example + +```python +from sysdig_client.models.entry_response import EntryResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of EntryResponse from a JSON string +entry_response_instance = EntryResponse.from_json(json) +# print the JSON string representation of the object +print(EntryResponse.to_json()) + +# convert the object into a dict +entry_response_dict = entry_response_instance.to_dict() +# create an instance of EntryResponse from a dict +entry_response_from_dict = EntryResponse.from_dict(entry_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Error.md b/docs/reference/Error.md new file mode 100644 index 00000000..3f5a2b26 --- /dev/null +++ b/docs/reference/Error.md @@ -0,0 +1,31 @@ +# Error + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | The error code. | [optional] +**message** | **str** | A human readable error message. | [optional] +**details** | **List[object]** | A list of details related to the error. | [optional] + +## Example + +```python +from sysdig_client.models.error import Error + +# TODO update the JSON string below +json = "{}" +# create an instance of Error from a JSON string +error_instance = Error.from_json(json) +# print the JSON string representation of the object +print(Error.to_json()) + +# convert the object into a dict +error_dict = error_instance.to_dict() +# create an instance of Error from a dict +error_from_dict = Error.from_dict(error_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Event.md b/docs/reference/Event.md new file mode 100644 index 00000000..c2d1271c --- /dev/null +++ b/docs/reference/Event.md @@ -0,0 +1,45 @@ +# Event + +Event feed + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The event id. | +**cursor** | **str** | The cursor that can be used to fetch a set of events surrounding this same event. By providing this value as `cursor` in a GET `secureEvents` request, you will get the set of events surrounding this current event. | [optional] +**timestamp** | **int** | The event timestamp in nanoseconds. | +**originator** | [**Originator**](Originator.md) | | +**category** | [**Category**](Category.md) | | +**source** | [**Source**](Source.md) | | +**source_details** | [**SourceDetails**](SourceDetails.md) | | [optional] +**raw_event_originator** | **str** | The agent type, hosting the `engine`, that generated the event after the raw event - `admissionController` - Admission Controller, part of the Cluster Shield - `agentless` - Agentless - `cloudConnector` - Cloud Connector - `linuxAgent` - Linux Host Agent - `serverlessAgent` - Serverless workloads Agent (CaaS) generated events - `windowsAgent` - Windows Host Agent | [optional] +**raw_event_category** | **str** | The semantic category (area) of the event in the Sysdig product: - `kspm` - Kubernetes Security Posture Management events - `runtime` - Threat detection events | [optional] +**engine** | **str** | The engine used to generate the event out of the raw signal: - `drift` - engine to detect container drifts - `falco` - Falco open source engine - `list` - list matching engine for list matching rules - `machineLearning` - ML engine - `malware` - malware detection engine | [optional] +**name** | **str** | Name of the policy the event is generated after. | +**description** | **str** | Description of the policy the event is generated after. | +**severity** | **int** | The policy severity: - `0-3` - High - `4-5` - Medium - `6` - Low - `7` - Info | +**actions** | [**List[Action]**](Action.md) | actions that have been triggered by the event | [optional] +**content** | [**EventContent**](EventContent.md) | | [optional] +**labels** | **Dict[str, str]** | Key value pairs of values. | [optional] + +## Example + +```python +from sysdig_client.models.event import Event + +# TODO update the JSON string below +json = "{}" +# create an instance of Event from a JSON string +event_instance = Event.from_json(json) +# print the JSON string representation of the object +print(Event.to_json()) + +# convert the object into a dict +event_dict = event_instance.to_dict() +# create an instance of Event from a dict +event_from_dict = Event.from_dict(event_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EventContent.md b/docs/reference/EventContent.md new file mode 100644 index 00000000..eead120b --- /dev/null +++ b/docs/reference/EventContent.md @@ -0,0 +1,55 @@ +# EventContent + +Event data. It contains fields from the original event and attributes generated at the engine level. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**EventContentType**](EventContentType.md) | | +**namespace** | **str** | Kubernetes namespace | [optional] +**cluster_name** | **str** | Kubernetes cluster name | [optional] +**resource_name** | **str** | Kubernetes resource name | [optional] +**resource_kind** | **str** | Kubernetes resource kind | [optional] +**zones** | [**List[Zone]**](Zone.md) | List of zones that match the scope of the resource. | [optional] +**scan_result** | [**K8sAdmissionReviewContentAllOfScanResult**](K8sAdmissionReviewContentAllOfScanResult.md) | | +**integration_id** | **str** | The unique identifier of the integration that generated the event. | +**integration_type** | **str** | The type of integration that generated the event. | +**rule_name** | **str** | Name of the rule the event is generated after | +**rule_type** | **int** | Rule type: - 1 - List matching - process - 2 - List matching - container - 3 - List matching - file - 4 - List matching - network - 5 - List matching - syscall - 6 - Falco - 7 - Drift detection - 8 - Malware detection - 11 - ML - Cryptominer detection - 13 - ML - AWS anomalous login - 14 - ML - Okta anomalous login | +**rule_tags** | **List[str]** | The tags attached to the rule | +**policy_id** | **int** | ID of the policy that generated the event | +**policy_origin** | [**PolicyOrigin**](PolicyOrigin.md) | | +**policy_notification_channel_ids** | **List[int]** | The list of notification channels where an alert is sent after event is generated. Doesn't account for aggregations and eventual thresholds. | +**priority** | **str** | Rule priority | [optional] +**output** | **str** | Event output, generated after the configured rule | +**fields** | [**StatefulDetectionsContentAllOfFields**](StatefulDetectionsContentAllOfFields.md) | | +**rule_sub_type** | **int** | Rule subtype: - 1 - List matching - network - inbound - 2 - List matching - network - outbound - 3 - List matching - network - listening - 4 - List matching - file - readwrite - 5 - List matching - file - read only | +**run_book** | **str** | The runbook URL as configured in the policy. | [optional] +**origin** | [**PolicyOrigin**](PolicyOrigin.md) | | [optional] +**command** | **str** | The command name | +**exe** | **str** | The command path | +**detected_class_probability** | **float** | The detected class probability (confidence score) | +**stats** | [**List[StatsInner]**](StatsInner.md) | An array representing the relevant APIs and how often they were called in the time window. | [optional] +**sequence** | [**List[SequenceInner]**](SequenceInner.md) | The sequence of events that occurred to trigger the event. The sequence is represented as a list of events, where each event is a map of key-value pairs. | [optional] + +## Example + +```python +from sysdig_client.models.event_content import EventContent + +# TODO update the JSON string below +json = "{}" +# create an instance of EventContent from a JSON string +event_content_instance = EventContent.from_json(json) +# print the JSON string representation of the object +print(EventContent.to_json()) + +# convert the object into a dict +event_content_dict = event_content_instance.to_dict() +# create an instance of EventContent from a dict +event_content_from_dict = EventContent.from_dict(event_content_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EventContentType.md b/docs/reference/EventContentType.md new file mode 100644 index 00000000..ee6bd590 --- /dev/null +++ b/docs/reference/EventContentType.md @@ -0,0 +1,21 @@ +# EventContentType + +The type of the event content. + +## Enum + +* `WORKLOADRUNTIMEDETECTION` (value: `'workloadRuntimeDetection'`) + +* `WORKLOADMLRUNTIMEDETECTION` (value: `'workloadMLRuntimeDetection'`) + +* `AGENTLESSMLRUNTIMEDETECTION` (value: `'agentlessMLRuntimeDetection'`) + +* `K8SADMISSIONREVIEW` (value: `'k8sAdmissionReview'`) + +* `AGENTLESSRUNTIMEDETECTION` (value: `'agentlessRuntimeDetection'`) + +* `STATEFULDETECTIONS` (value: `'statefulDetections'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EventsFeedPage.md b/docs/reference/EventsFeedPage.md new file mode 100644 index 00000000..6e28f729 --- /dev/null +++ b/docs/reference/EventsFeedPage.md @@ -0,0 +1,32 @@ +# EventsFeedPage + +Pagination information. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**total** | **int** | The number of events matching the search criteria. This number is always major or equal to the number of events returned. | +**prev** | **str** | `prev` is a string pointing to the previous page of data. Use this as the `cursor` to get the previous page of data. | [optional] +**next** | **str** | `next` is a string pointing to the next page of data. Use this as the `cursor` to scroll paginated results and get the next page of data. If not included, the current response is the last page. | [optional] + +## Example + +```python +from sysdig_client.models.events_feed_page import EventsFeedPage + +# TODO update the JSON string below +json = "{}" +# create an instance of EventsFeedPage from a JSON string +events_feed_page_instance = EventsFeedPage.from_json(json) +# print the JSON string representation of the object +print(EventsFeedPage.to_json()) + +# convert the object into a dict +events_feed_page_dict = events_feed_page_instance.to_dict() +# create an instance of EventsFeedPage from a dict +events_feed_page_from_dict = EventsFeedPage.from_dict(events_feed_page_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/EventsForwarderApi.md b/docs/reference/EventsForwarderApi.md new file mode 100644 index 00000000..b2cf7bd9 --- /dev/null +++ b/docs/reference/EventsForwarderApi.md @@ -0,0 +1,587 @@ +# sysdig_client.EventsForwarderApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_efo_inegration_v1**](EventsForwarderApi.md#create_efo_inegration_v1) | **POST** /secure/events-forwarder/v1/integrations | Create Integration +[**delete_efo_integration_by_idv1**](EventsForwarderApi.md#delete_efo_integration_by_idv1) | **DELETE** /secure/events-forwarder/v1/integrations/{integrationId} | Delete Integration +[**get_efo_integration_by_id_v1**](EventsForwarderApi.md#get_efo_integration_by_id_v1) | **GET** /secure/events-forwarder/v1/integrations/{integrationId} | Get Integration +[**list_efo_channels_by_integration_v1**](EventsForwarderApi.md#list_efo_channels_by_integration_v1) | **GET** /secure/events-forwarder/v1/channels | List Channels +[**list_efo_integrations_types_v1**](EventsForwarderApi.md#list_efo_integrations_types_v1) | **GET** /secure/events-forwarder/v1/types | List Integrations types +[**list_efo_integrations_v1**](EventsForwarderApi.md#list_efo_integrations_v1) | **GET** /secure/events-forwarder/v1/integrations | List Integrations +[**update_efo_integration_by_id_v1**](EventsForwarderApi.md#update_efo_integration_by_id_v1) | **PUT** /secure/events-forwarder/v1/integrations/{integrationId} | Update Integration + + +# **create_efo_inegration_v1** +> IntegrationResponse create_efo_inegration_v1(create_integration_request) + +Create Integration + +Configures a new integration to forward a data type to a destination, given the specified connection parameters + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_integration_request import CreateIntegrationRequest +from sysdig_client.models.integration_response import IntegrationResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.EventsForwarderApi(api_client) + create_integration_request = sysdig_client.CreateIntegrationRequest() # CreateIntegrationRequest | Configuration for the new integration + + try: + # Create Integration + api_response = api_instance.create_efo_inegration_v1(create_integration_request) + print("The response of EventsForwarderApi->create_efo_inegration_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling EventsForwarderApi->create_efo_inegration_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_integration_request** | [**CreateIntegrationRequest**](CreateIntegrationRequest.md)| Configuration for the new integration | + +### Return type + +[**IntegrationResponse**](IntegrationResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Integration created successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_efo_integration_by_idv1** +> delete_efo_integration_by_idv1(integration_id) + +Delete Integration + +Delete an integration + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.EventsForwarderApi(api_client) + integration_id = 56 # int | ID of the integration to return + + try: + # Delete Integration + api_instance.delete_efo_integration_by_idv1(integration_id) + except Exception as e: + print("Exception when calling EventsForwarderApi->delete_efo_integration_by_idv1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| ID of the integration to return | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Integration deleted successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Integration not found | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_efo_integration_by_id_v1** +> IntegrationResponse get_efo_integration_by_id_v1(integration_id) + +Get Integration + +Returns the configuration for an integration + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.integration_response import IntegrationResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.EventsForwarderApi(api_client) + integration_id = 56 # int | ID of the integration to return + + try: + # Get Integration + api_response = api_instance.get_efo_integration_by_id_v1(integration_id) + print("The response of EventsForwarderApi->get_efo_integration_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling EventsForwarderApi->get_efo_integration_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| ID of the integration to return | + +### Return type + +[**IntegrationResponse**](IntegrationResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | An integration is returned | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Integration not found with the specified ID | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **list_efo_channels_by_integration_v1** +> IntegrationChannelsResponse list_efo_channels_by_integration_v1(type) + +List Channels + +Returns the list of supported Channels (Data types) for a given integration type + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.integration_channels_response import IntegrationChannelsResponse +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.EventsForwarderApi(api_client) + type = sysdig_client.IntegrationType() # IntegrationType | the Events Forwarder Integration Type + + try: + # List Channels + api_response = api_instance.list_efo_channels_by_integration_v1(type) + print("The response of EventsForwarderApi->list_efo_channels_by_integration_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling EventsForwarderApi->list_efo_channels_by_integration_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **type** | [**IntegrationType**](.md)| the Events Forwarder Integration Type | + +### Return type + +[**IntegrationChannelsResponse**](IntegrationChannelsResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A list of supported Events Forwarder integrations channels in Sysdig Secure | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **list_efo_integrations_types_v1** +> IntegrationTypesResponse list_efo_integrations_types_v1() + +List Integrations types + +Returns the list of supported integrations, to which Events Forwarder can send data + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.integration_types_response import IntegrationTypesResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.EventsForwarderApi(api_client) + + try: + # List Integrations types + api_response = api_instance.list_efo_integrations_types_v1() + print("The response of EventsForwarderApi->list_efo_integrations_types_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling EventsForwarderApi->list_efo_integrations_types_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**IntegrationTypesResponse**](IntegrationTypesResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of supported Events Forwarder integrations in Sysdig Secure | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **list_efo_integrations_v1** +> ListIntegrationsResponse list_efo_integrations_v1() + +List Integrations + +Returns the Events Forwarder integrations set up + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_integrations_response import ListIntegrationsResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.EventsForwarderApi(api_client) + + try: + # List Integrations + api_response = api_instance.list_efo_integrations_v1() + print("The response of EventsForwarderApi->list_efo_integrations_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling EventsForwarderApi->list_efo_integrations_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**ListIntegrationsResponse**](ListIntegrationsResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of Events Forwarder Integrations | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_efo_integration_by_id_v1** +> IntegrationResponse update_efo_integration_by_id_v1(integration_id, update_integration_request) + +Update Integration + +Updates an integration, replacing its configuration + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.integration_response import IntegrationResponse +from sysdig_client.models.update_integration_request import UpdateIntegrationRequest +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.EventsForwarderApi(api_client) + integration_id = 56 # int | ID of the integration to return + update_integration_request = sysdig_client.UpdateIntegrationRequest() # UpdateIntegrationRequest | Update an events forwarder integration in Sysdig Secure + + try: + # Update Integration + api_response = api_instance.update_efo_integration_by_id_v1(integration_id, update_integration_request) + print("The response of EventsForwarderApi->update_efo_integration_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling EventsForwarderApi->update_efo_integration_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| ID of the integration to return | + **update_integration_request** | [**UpdateIntegrationRequest**](UpdateIntegrationRequest.md)| Update an events forwarder integration in Sysdig Secure | + +### Return type + +[**IntegrationResponse**](IntegrationResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Integration updated successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Integration not found | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/Exploit.md b/docs/reference/Exploit.md new file mode 100644 index 00000000..a3307c45 --- /dev/null +++ b/docs/reference/Exploit.md @@ -0,0 +1,30 @@ +# Exploit + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**publication_date** | **datetime** | exploit publication date | [optional] +**links** | **List[str]** | | + +## Example + +```python +from sysdig_client.models.exploit import Exploit + +# TODO update the JSON string below +json = "{}" +# create an instance of Exploit from a JSON string +exploit_instance = Exploit.from_json(json) +# print the JSON string representation of the object +print(Exploit.to_json()) + +# convert the object into a dict +exploit_dict = exploit_instance.to_dict() +# create an instance of Exploit from a dict +exploit_from_dict = Exploit.from_dict(exploit_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Failure.md b/docs/reference/Failure.md new file mode 100644 index 00000000..bacab4cd --- /dev/null +++ b/docs/reference/Failure.md @@ -0,0 +1,31 @@ +# Failure + +The reason a Response Action failed to execute. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**failure_reason** | **str** | The reason for the failure. | +**log_message** | **str** | The log message of the action failure. | + +## Example + +```python +from sysdig_client.models.failure import Failure + +# TODO update the JSON string below +json = "{}" +# create an instance of Failure from a JSON string +failure_instance = Failure.from_json(json) +# print the JSON string representation of the object +print(Failure.to_json()) + +# convert the object into a dict +failure_dict = failure_instance.to_dict() +# create an instance of Failure from a dict +failure_from_dict = Failure.from_dict(failure_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Fileaccess.md b/docs/reference/Fileaccess.md new file mode 100644 index 00000000..5ec93392 --- /dev/null +++ b/docs/reference/Fileaccess.md @@ -0,0 +1,41 @@ +# Fileaccess + +Represents a file access operation. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The audit event id. | +**timestamp** | **int** | Timestamp the audit event occured, expressed in nanoseconds. | +**type** | **str** | The entry type | +**hostname** | **str** | The Kubernetes hostname. | +**container_id** | **str** | The container id. `containerId` is present only if the audit event was collected in a container context. | [optional] +**comm** | **str** | The name of the command. | +**pid** | **int** | Id of the process owning the connection. | +**directory** | **str** | The Directory for the file access. | +**filename** | **str** | The Filename involved in file access. | +**permissions** | **str** | The Permissions of the file access. | +**tty** | **int** | TTY number. | [optional] +**labels** | **Dict[str, str]** | Key value pairs of labels. | [optional] + +## Example + +```python +from sysdig_client.models.fileaccess import Fileaccess + +# TODO update the JSON string below +json = "{}" +# create an instance of Fileaccess from a JSON string +fileaccess_instance = Fileaccess.from_json(json) +# print the JSON string representation of the object +print(Fileaccess.to_json()) + +# convert the object into a dict +fileaccess_dict = fileaccess_instance.to_dict() +# create an instance of Fileaccess from a dict +fileaccess_from_dict = Fileaccess.from_dict(fileaccess_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GchatNotificationChannelOptionsV1.md b/docs/reference/GchatNotificationChannelOptionsV1.md new file mode 100644 index 00000000..d9c662e3 --- /dev/null +++ b/docs/reference/GchatNotificationChannelOptionsV1.md @@ -0,0 +1,31 @@ +# GchatNotificationChannelOptionsV1 + +The Google Chat notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**url** | **str** | Google Chat Webhook URL | + +## Example + +```python +from sysdig_client.models.gchat_notification_channel_options_v1 import GchatNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GchatNotificationChannelOptionsV1 from a JSON string +gchat_notification_channel_options_v1_instance = GchatNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(GchatNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +gchat_notification_channel_options_v1_dict = gchat_notification_channel_options_v1_instance.to_dict() +# create an instance of GchatNotificationChannelOptionsV1 from a dict +gchat_notification_channel_options_v1_from_dict = GchatNotificationChannelOptionsV1.from_dict(gchat_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GchatNotificationChannelResponseV1.md b/docs/reference/GchatNotificationChannelResponseV1.md new file mode 100644 index 00000000..6f11d39f --- /dev/null +++ b/docs/reference/GchatNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# GchatNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**GchatNotificationChannelOptionsV1**](GchatNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.gchat_notification_channel_response_v1 import GchatNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GchatNotificationChannelResponseV1 from a JSON string +gchat_notification_channel_response_v1_instance = GchatNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(GchatNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +gchat_notification_channel_response_v1_dict = gchat_notification_channel_response_v1_instance.to_dict() +# create an instance of GchatNotificationChannelResponseV1 from a dict +gchat_notification_channel_response_v1_from_dict = GchatNotificationChannelResponseV1.from_dict(gchat_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetAccessKeysPaginatedResponseV1.md b/docs/reference/GetAccessKeysPaginatedResponseV1.md new file mode 100644 index 00000000..0233fd82 --- /dev/null +++ b/docs/reference/GetAccessKeysPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetAccessKeysPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[AccessKeyResponseV1]**](AccessKeyResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_access_keys_paginated_response_v1 import GetAccessKeysPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetAccessKeysPaginatedResponseV1 from a JSON string +get_access_keys_paginated_response_v1_instance = GetAccessKeysPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetAccessKeysPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_access_keys_paginated_response_v1_dict = get_access_keys_paginated_response_v1_instance.to_dict() +# create an instance of GetAccessKeysPaginatedResponseV1 from a dict +get_access_keys_paginated_response_v1_from_dict = GetAccessKeysPaginatedResponseV1.from_dict(get_access_keys_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetAmazonSqsIntegrationResponse.md b/docs/reference/GetAmazonSqsIntegrationResponse.md new file mode 100644 index 00000000..6a13999e --- /dev/null +++ b/docs/reference/GetAmazonSqsIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetAmazonSqsIntegrationResponse + +Get Amazon SQS Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoAmazonSqs**](BaseConnectionInfoAmazonSqs.md) | | + +## Example + +```python +from sysdig_client.models.get_amazon_sqs_integration_response import GetAmazonSqsIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetAmazonSqsIntegrationResponse from a JSON string +get_amazon_sqs_integration_response_instance = GetAmazonSqsIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetAmazonSqsIntegrationResponse.to_json()) + +# convert the object into a dict +get_amazon_sqs_integration_response_dict = get_amazon_sqs_integration_response_instance.to_dict() +# create an instance of GetAmazonSqsIntegrationResponse from a dict +get_amazon_sqs_integration_response_from_dict = GetAmazonSqsIntegrationResponse.from_dict(get_amazon_sqs_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetBundleResponse.md b/docs/reference/GetBundleResponse.md new file mode 100644 index 00000000..a1a5405d --- /dev/null +++ b/docs/reference/GetBundleResponse.md @@ -0,0 +1,35 @@ +# GetBundleResponse + +Bundle definition + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | The Bundle ID | +**name** | **str** | The human readable Bundle name | +**identifier** | **str** | The Policy identifier generated from the name | +**description** | **str** | The Bundle description | [optional] +**bundle_type** | **str** | Specifies whether the Bundle was defined by the Customer or by Sysdig | +**rules** | [**List[BundleRule]**](BundleRule.md) | The Rules defining this Bundle | + +## Example + +```python +from sysdig_client.models.get_bundle_response import GetBundleResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetBundleResponse from a JSON string +get_bundle_response_instance = GetBundleResponse.from_json(json) +# print the JSON string representation of the object +print(GetBundleResponse.to_json()) + +# convert the object into a dict +get_bundle_response_dict = get_bundle_response_instance.to_dict() +# create an instance of GetBundleResponse from a dict +get_bundle_response_from_dict = GetBundleResponse.from_dict(get_bundle_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetChronicleIntegrationResponse.md b/docs/reference/GetChronicleIntegrationResponse.md new file mode 100644 index 00000000..8eaa3b1a --- /dev/null +++ b/docs/reference/GetChronicleIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetChronicleIntegrationResponse + +Get Google Chronicle Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**GetChronicleIntegrationResponseAllOfConnectionInfo**](GetChronicleIntegrationResponseAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.get_chronicle_integration_response import GetChronicleIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetChronicleIntegrationResponse from a JSON string +get_chronicle_integration_response_instance = GetChronicleIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetChronicleIntegrationResponse.to_json()) + +# convert the object into a dict +get_chronicle_integration_response_dict = get_chronicle_integration_response_instance.to_dict() +# create an instance of GetChronicleIntegrationResponse from a dict +get_chronicle_integration_response_from_dict = GetChronicleIntegrationResponse.from_dict(get_chronicle_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetChronicleIntegrationResponseAllOfConnectionInfo.md b/docs/reference/GetChronicleIntegrationResponseAllOfConnectionInfo.md new file mode 100644 index 00000000..f5680f6c --- /dev/null +++ b/docs/reference/GetChronicleIntegrationResponseAllOfConnectionInfo.md @@ -0,0 +1,31 @@ +# GetChronicleIntegrationResponseAllOfConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**region** | **str** | The target region | [optional] [default to 'us'] +**chronicle_customer_id** | **str** | Unique identifier (UUID) corresponding to a particular Chronicle instance | +**namespace** | **str** | User-configured environment namespace to identify the data domain the logs originated from | + +## Example + +```python +from sysdig_client.models.get_chronicle_integration_response_all_of_connection_info import GetChronicleIntegrationResponseAllOfConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of GetChronicleIntegrationResponseAllOfConnectionInfo from a JSON string +get_chronicle_integration_response_all_of_connection_info_instance = GetChronicleIntegrationResponseAllOfConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(GetChronicleIntegrationResponseAllOfConnectionInfo.to_json()) + +# convert the object into a dict +get_chronicle_integration_response_all_of_connection_info_dict = get_chronicle_integration_response_all_of_connection_info_instance.to_dict() +# create an instance of GetChronicleIntegrationResponseAllOfConnectionInfo from a dict +get_chronicle_integration_response_all_of_connection_info_from_dict = GetChronicleIntegrationResponseAllOfConnectionInfo.from_dict(get_chronicle_integration_response_all_of_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetCustomJobsPaginatedResponseV1.md b/docs/reference/GetCustomJobsPaginatedResponseV1.md new file mode 100644 index 00000000..e35a3b6f --- /dev/null +++ b/docs/reference/GetCustomJobsPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetCustomJobsPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[CustomJobV1]**](CustomJobV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_custom_jobs_paginated_response_v1 import GetCustomJobsPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetCustomJobsPaginatedResponseV1 from a JSON string +get_custom_jobs_paginated_response_v1_instance = GetCustomJobsPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetCustomJobsPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_custom_jobs_paginated_response_v1_dict = get_custom_jobs_paginated_response_v1_instance.to_dict() +# create an instance of GetCustomJobsPaginatedResponseV1 from a dict +get_custom_jobs_paginated_response_v1_from_dict = GetCustomJobsPaginatedResponseV1.from_dict(get_custom_jobs_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetElasticsearchIntegrationResponse.md b/docs/reference/GetElasticsearchIntegrationResponse.md new file mode 100644 index 00000000..489966d9 --- /dev/null +++ b/docs/reference/GetElasticsearchIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetElasticsearchIntegrationResponse + +Get Elastic Search Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoElasticsearch**](BaseConnectionInfoElasticsearch.md) | | + +## Example + +```python +from sysdig_client.models.get_elasticsearch_integration_response import GetElasticsearchIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetElasticsearchIntegrationResponse from a JSON string +get_elasticsearch_integration_response_instance = GetElasticsearchIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetElasticsearchIntegrationResponse.to_json()) + +# convert the object into a dict +get_elasticsearch_integration_response_dict = get_elasticsearch_integration_response_instance.to_dict() +# create an instance of GetElasticsearchIntegrationResponse from a dict +get_elasticsearch_integration_response_from_dict = GetElasticsearchIntegrationResponse.from_dict(get_elasticsearch_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetGooglePubSubIntegrationResponse.md b/docs/reference/GetGooglePubSubIntegrationResponse.md new file mode 100644 index 00000000..4b8d08d5 --- /dev/null +++ b/docs/reference/GetGooglePubSubIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetGooglePubSubIntegrationResponse + +Get Google Pub/Sub Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoGooglePubSub**](BaseConnectionInfoGooglePubSub.md) | | + +## Example + +```python +from sysdig_client.models.get_google_pub_sub_integration_response import GetGooglePubSubIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetGooglePubSubIntegrationResponse from a JSON string +get_google_pub_sub_integration_response_instance = GetGooglePubSubIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetGooglePubSubIntegrationResponse.to_json()) + +# convert the object into a dict +get_google_pub_sub_integration_response_dict = get_google_pub_sub_integration_response_instance.to_dict() +# create an instance of GetGooglePubSubIntegrationResponse from a dict +get_google_pub_sub_integration_response_from_dict = GetGooglePubSubIntegrationResponse.from_dict(get_google_pub_sub_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetGoogleSccIntegrationResponse.md b/docs/reference/GetGoogleSccIntegrationResponse.md new file mode 100644 index 00000000..081798e0 --- /dev/null +++ b/docs/reference/GetGoogleSccIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetGoogleSccIntegrationResponse + +Get Google SCC Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoGoogleScc**](BaseConnectionInfoGoogleScc.md) | | + +## Example + +```python +from sysdig_client.models.get_google_scc_integration_response import GetGoogleSccIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetGoogleSccIntegrationResponse from a JSON string +get_google_scc_integration_response_instance = GetGoogleSccIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetGoogleSccIntegrationResponse.to_json()) + +# convert the object into a dict +get_google_scc_integration_response_dict = get_google_scc_integration_response_instance.to_dict() +# create an instance of GetGoogleSccIntegrationResponse from a dict +get_google_scc_integration_response_from_dict = GetGoogleSccIntegrationResponse.from_dict(get_google_scc_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetInhibitionRulesPaginatedResponseV1.md b/docs/reference/GetInhibitionRulesPaginatedResponseV1.md new file mode 100644 index 00000000..e68a7016 --- /dev/null +++ b/docs/reference/GetInhibitionRulesPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetInhibitionRulesPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[InhibitionRuleResponseV1]**](InhibitionRuleResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_inhibition_rules_paginated_response_v1 import GetInhibitionRulesPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetInhibitionRulesPaginatedResponseV1 from a JSON string +get_inhibition_rules_paginated_response_v1_instance = GetInhibitionRulesPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetInhibitionRulesPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_inhibition_rules_paginated_response_v1_dict = get_inhibition_rules_paginated_response_v1_instance.to_dict() +# create an instance of GetInhibitionRulesPaginatedResponseV1 from a dict +get_inhibition_rules_paginated_response_v1_from_dict = GetInhibitionRulesPaginatedResponseV1.from_dict(get_inhibition_rules_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetKafkaIntegrationResponse.md b/docs/reference/GetKafkaIntegrationResponse.md new file mode 100644 index 00000000..481ecd86 --- /dev/null +++ b/docs/reference/GetKafkaIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetKafkaIntegrationResponse + +Get Kafka Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**GetKafkaIntegrationResponseAllOfConnectionInfo**](GetKafkaIntegrationResponseAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.get_kafka_integration_response import GetKafkaIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetKafkaIntegrationResponse from a JSON string +get_kafka_integration_response_instance = GetKafkaIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetKafkaIntegrationResponse.to_json()) + +# convert the object into a dict +get_kafka_integration_response_dict = get_kafka_integration_response_instance.to_dict() +# create an instance of GetKafkaIntegrationResponse from a dict +get_kafka_integration_response_from_dict = GetKafkaIntegrationResponse.from_dict(get_kafka_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetKafkaIntegrationResponseAllOfConnectionInfo.md b/docs/reference/GetKafkaIntegrationResponseAllOfConnectionInfo.md new file mode 100644 index 00000000..c17a24fa --- /dev/null +++ b/docs/reference/GetKafkaIntegrationResponseAllOfConnectionInfo.md @@ -0,0 +1,39 @@ +# GetKafkaIntegrationResponseAllOfConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**brokers** | **List[str]** | Kafka server endpoint. A Kafka cluster may provide several brokers; it follows the 'hostname: port' (without protocol scheme). | +**topic** | **str** | Kafka topic where you want to store the forwarded data | +**balancer** | **str** | Algorithm that the client uses to multiplex data between the multiple Brokers. For compatibility with the Java client, Murmur2 is used as the default partitioner | [optional] [default to 'murmur2'] +**compression** | **str** | Compression standard used for the data | [optional] +**is_tls_enabled** | **bool** | | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**auth** | **str** | The authentication method to optionally use. Currently supporting only GSSAPI | +**principal** | **str** | GSSAPI principal | +**realm** | **str** | GSSAPI realm | +**service** | **str** | GSSAPI Service name | +**krb5** | **str** | Kerberos krb5.conf file content for GSSAPI | + +## Example + +```python +from sysdig_client.models.get_kafka_integration_response_all_of_connection_info import GetKafkaIntegrationResponseAllOfConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of GetKafkaIntegrationResponseAllOfConnectionInfo from a JSON string +get_kafka_integration_response_all_of_connection_info_instance = GetKafkaIntegrationResponseAllOfConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(GetKafkaIntegrationResponseAllOfConnectionInfo.to_json()) + +# convert the object into a dict +get_kafka_integration_response_all_of_connection_info_dict = get_kafka_integration_response_all_of_connection_info_instance.to_dict() +# create an instance of GetKafkaIntegrationResponseAllOfConnectionInfo from a dict +get_kafka_integration_response_all_of_connection_info_from_dict = GetKafkaIntegrationResponseAllOfConnectionInfo.from_dict(get_kafka_integration_response_all_of_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetMcmIntegrationResponse.md b/docs/reference/GetMcmIntegrationResponse.md new file mode 100644 index 00000000..b01a173d --- /dev/null +++ b/docs/reference/GetMcmIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetMcmIntegrationResponse + +Get IBM Multicloud Manager Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoMcm**](BaseConnectionInfoMcm.md) | | + +## Example + +```python +from sysdig_client.models.get_mcm_integration_response import GetMcmIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetMcmIntegrationResponse from a JSON string +get_mcm_integration_response_instance = GetMcmIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetMcmIntegrationResponse.to_json()) + +# convert the object into a dict +get_mcm_integration_response_dict = get_mcm_integration_response_instance.to_dict() +# create an instance of GetMcmIntegrationResponse from a dict +get_mcm_integration_response_from_dict = GetMcmIntegrationResponse.from_dict(get_mcm_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetMicrosoftSentinelIntegrationResponse.md b/docs/reference/GetMicrosoftSentinelIntegrationResponse.md new file mode 100644 index 00000000..b07606f3 --- /dev/null +++ b/docs/reference/GetMicrosoftSentinelIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetMicrosoftSentinelIntegrationResponse + +Get Microsoft Sentinel Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoMicrosoftSentinel**](BaseConnectionInfoMicrosoftSentinel.md) | | + +## Example + +```python +from sysdig_client.models.get_microsoft_sentinel_integration_response import GetMicrosoftSentinelIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetMicrosoftSentinelIntegrationResponse from a JSON string +get_microsoft_sentinel_integration_response_instance = GetMicrosoftSentinelIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetMicrosoftSentinelIntegrationResponse.to_json()) + +# convert the object into a dict +get_microsoft_sentinel_integration_response_dict = get_microsoft_sentinel_integration_response_instance.to_dict() +# create an instance of GetMicrosoftSentinelIntegrationResponse from a dict +get_microsoft_sentinel_integration_response_from_dict = GetMicrosoftSentinelIntegrationResponse.from_dict(get_microsoft_sentinel_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetNotificationChannelsPaginatedResponseV1.md b/docs/reference/GetNotificationChannelsPaginatedResponseV1.md new file mode 100644 index 00000000..4e355591 --- /dev/null +++ b/docs/reference/GetNotificationChannelsPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetNotificationChannelsPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[NotificationChannelResponseV1]**](NotificationChannelResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_notification_channels_paginated_response_v1 import GetNotificationChannelsPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetNotificationChannelsPaginatedResponseV1 from a JSON string +get_notification_channels_paginated_response_v1_instance = GetNotificationChannelsPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetNotificationChannelsPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_notification_channels_paginated_response_v1_dict = get_notification_channels_paginated_response_v1_instance.to_dict() +# create an instance of GetNotificationChannelsPaginatedResponseV1 from a dict +get_notification_channels_paginated_response_v1_from_dict = GetNotificationChannelsPaginatedResponseV1.from_dict(get_notification_channels_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetPermissionsResponseV1.md b/docs/reference/GetPermissionsResponseV1.md new file mode 100644 index 00000000..4a943720 --- /dev/null +++ b/docs/reference/GetPermissionsResponseV1.md @@ -0,0 +1,31 @@ +# GetPermissionsResponseV1 + +Permissions response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**permissions** | [**List[PermissionV1]**](PermissionV1.md) | Set of permissions | [optional] +**total** | **int** | Total number of permissions | [optional] + +## Example + +```python +from sysdig_client.models.get_permissions_response_v1 import GetPermissionsResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetPermissionsResponseV1 from a JSON string +get_permissions_response_v1_instance = GetPermissionsResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetPermissionsResponseV1.to_json()) + +# convert the object into a dict +get_permissions_response_v1_dict = get_permissions_response_v1_instance.to_dict() +# create an instance of GetPermissionsResponseV1 from a dict +get_permissions_response_v1_from_dict = GetPermissionsResponseV1.from_dict(get_permissions_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetPolicyResponse.md b/docs/reference/GetPolicyResponse.md new file mode 100644 index 00000000..f81c6e4f --- /dev/null +++ b/docs/reference/GetPolicyResponse.md @@ -0,0 +1,35 @@ +# GetPolicyResponse + +A Policy definition + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | the Policy ID | +**name** | **str** | human readable policy name | +**identifier** | **str** | policy identifier generated from the name | +**description** | **str** | policy description | [optional] +**bundles** | [**List[BundleRef]**](BundleRef.md) | bundles defining this policy | +**stages** | [**List[Stage]**](Stage.md) | array of stages for the policy. An empty array means the policy is applied only when specifically requested by its identifier. | + +## Example + +```python +from sysdig_client.models.get_policy_response import GetPolicyResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetPolicyResponse from a JSON string +get_policy_response_instance = GetPolicyResponse.from_json(json) +# print the JSON string representation of the object +print(GetPolicyResponse.to_json()) + +# convert the object into a dict +get_policy_response_dict = get_policy_response_instance.to_dict() +# create an instance of GetPolicyResponse from a dict +get_policy_response_from_dict = GetPolicyResponse.from_dict(get_policy_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetPricingPaginatedResponseV1.md b/docs/reference/GetPricingPaginatedResponseV1.md new file mode 100644 index 00000000..ccf9f73b --- /dev/null +++ b/docs/reference/GetPricingPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetPricingPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[PricingResponseV1]**](PricingResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_pricing_paginated_response_v1 import GetPricingPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetPricingPaginatedResponseV1 from a JSON string +get_pricing_paginated_response_v1_instance = GetPricingPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetPricingPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_pricing_paginated_response_v1_dict = get_pricing_paginated_response_v1_instance.to_dict() +# create an instance of GetPricingPaginatedResponseV1 from a dict +get_pricing_paginated_response_v1_from_dict = GetPricingPaginatedResponseV1.from_dict(get_pricing_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetPricingProjectedPaginatedResponseV1.md b/docs/reference/GetPricingProjectedPaginatedResponseV1.md new file mode 100644 index 00000000..e05b30f7 --- /dev/null +++ b/docs/reference/GetPricingProjectedPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetPricingProjectedPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[PricingProjectedResponseV1]**](PricingProjectedResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_pricing_projected_paginated_response_v1 import GetPricingProjectedPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetPricingProjectedPaginatedResponseV1 from a JSON string +get_pricing_projected_paginated_response_v1_instance = GetPricingProjectedPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetPricingProjectedPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_pricing_projected_paginated_response_v1_dict = get_pricing_projected_paginated_response_v1_instance.to_dict() +# create an instance of GetPricingProjectedPaginatedResponseV1 from a dict +get_pricing_projected_paginated_response_v1_from_dict = GetPricingProjectedPaginatedResponseV1.from_dict(get_pricing_projected_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetQradarIntegrationResponse.md b/docs/reference/GetQradarIntegrationResponse.md new file mode 100644 index 00000000..d4c8e7f0 --- /dev/null +++ b/docs/reference/GetQradarIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetQradarIntegrationResponse + +Get IBM QRadar Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoQradar**](BaseConnectionInfoQradar.md) | | + +## Example + +```python +from sysdig_client.models.get_qradar_integration_response import GetQradarIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetQradarIntegrationResponse from a JSON string +get_qradar_integration_response_instance = GetQradarIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetQradarIntegrationResponse.to_json()) + +# convert the object into a dict +get_qradar_integration_response_dict = get_qradar_integration_response_instance.to_dict() +# create an instance of GetQradarIntegrationResponse from a dict +get_qradar_integration_response_from_dict = GetQradarIntegrationResponse.from_dict(get_qradar_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetQueryRangeV1StepParameter.md b/docs/reference/GetQueryRangeV1StepParameter.md new file mode 100644 index 00000000..b14894ed --- /dev/null +++ b/docs/reference/GetQueryRangeV1StepParameter.md @@ -0,0 +1,28 @@ +# GetQueryRangeV1StepParameter + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.get_query_range_v1_step_parameter import GetQueryRangeV1StepParameter + +# TODO update the JSON string below +json = "{}" +# create an instance of GetQueryRangeV1StepParameter from a JSON string +get_query_range_v1_step_parameter_instance = GetQueryRangeV1StepParameter.from_json(json) +# print the JSON string representation of the object +print(GetQueryRangeV1StepParameter.to_json()) + +# convert the object into a dict +get_query_range_v1_step_parameter_dict = get_query_range_v1_step_parameter_instance.to_dict() +# create an instance of GetQueryRangeV1StepParameter from a dict +get_query_range_v1_step_parameter_from_dict = GetQueryRangeV1StepParameter.from_dict(get_query_range_v1_step_parameter_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetQueryV1401Response.md b/docs/reference/GetQueryV1401Response.md new file mode 100644 index 00000000..355e5c90 --- /dev/null +++ b/docs/reference/GetQueryV1401Response.md @@ -0,0 +1,32 @@ +# GetQueryV1401Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**timestamp** | **int** | Epoch timestamp (milliseconds) when the error occurred. | +**status** | **int** | HTTP status code of the response. | +**error** | **str** | A human-readable error message. | +**path** | **str** | The requested endpoint path that triggered the error. | + +## Example + +```python +from sysdig_client.models.get_query_v1401_response import GetQueryV1401Response + +# TODO update the JSON string below +json = "{}" +# create an instance of GetQueryV1401Response from a JSON string +get_query_v1401_response_instance = GetQueryV1401Response.from_json(json) +# print the JSON string representation of the object +print(GetQueryV1401Response.to_json()) + +# convert the object into a dict +get_query_v1401_response_dict = get_query_v1401_response_instance.to_dict() +# create an instance of GetQueryV1401Response from a dict +get_query_v1401_response_from_dict = GetQueryV1401Response.from_dict(get_query_v1401_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetRolesPaginatedResponseV1.md b/docs/reference/GetRolesPaginatedResponseV1.md new file mode 100644 index 00000000..18b11b10 --- /dev/null +++ b/docs/reference/GetRolesPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetRolesPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[RoleResponseV1]**](RoleResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_roles_paginated_response_v1 import GetRolesPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetRolesPaginatedResponseV1 from a JSON string +get_roles_paginated_response_v1_instance = GetRolesPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetRolesPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_roles_paginated_response_v1_dict = get_roles_paginated_response_v1_instance.to_dict() +# create an instance of GetRolesPaginatedResponseV1 from a dict +get_roles_paginated_response_v1_from_dict = GetRolesPaginatedResponseV1.from_dict(get_roles_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetServiceAccountsPaginatedResponseV1.md b/docs/reference/GetServiceAccountsPaginatedResponseV1.md new file mode 100644 index 00000000..287c777c --- /dev/null +++ b/docs/reference/GetServiceAccountsPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetServiceAccountsPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[ServiceAccountResponseV1]**](ServiceAccountResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_service_accounts_paginated_response_v1 import GetServiceAccountsPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetServiceAccountsPaginatedResponseV1 from a JSON string +get_service_accounts_paginated_response_v1_instance = GetServiceAccountsPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetServiceAccountsPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_service_accounts_paginated_response_v1_dict = get_service_accounts_paginated_response_v1_instance.to_dict() +# create an instance of GetServiceAccountsPaginatedResponseV1 from a dict +get_service_accounts_paginated_response_v1_from_dict = GetServiceAccountsPaginatedResponseV1.from_dict(get_service_accounts_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetSplunkIntegrationResponse.md b/docs/reference/GetSplunkIntegrationResponse.md new file mode 100644 index 00000000..a4aa8e43 --- /dev/null +++ b/docs/reference/GetSplunkIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetSplunkIntegrationResponse + +Get Splunk Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoSplunk**](BaseConnectionInfoSplunk.md) | | + +## Example + +```python +from sysdig_client.models.get_splunk_integration_response import GetSplunkIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetSplunkIntegrationResponse from a JSON string +get_splunk_integration_response_instance = GetSplunkIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetSplunkIntegrationResponse.to_json()) + +# convert the object into a dict +get_splunk_integration_response_dict = get_splunk_integration_response_instance.to_dict() +# create an instance of GetSplunkIntegrationResponse from a dict +get_splunk_integration_response_from_dict = GetSplunkIntegrationResponse.from_dict(get_splunk_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetSyslogIntegrationResponse.md b/docs/reference/GetSyslogIntegrationResponse.md new file mode 100644 index 00000000..db63a76a --- /dev/null +++ b/docs/reference/GetSyslogIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetSyslogIntegrationResponse + +Get Syslog Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoSyslog**](BaseConnectionInfoSyslog.md) | | + +## Example + +```python +from sysdig_client.models.get_syslog_integration_response import GetSyslogIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetSyslogIntegrationResponse from a JSON string +get_syslog_integration_response_instance = GetSyslogIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetSyslogIntegrationResponse.to_json()) + +# convert the object into a dict +get_syslog_integration_response_dict = get_syslog_integration_response_instance.to_dict() +# create an instance of GetSyslogIntegrationResponse from a dict +get_syslog_integration_response_from_dict = GetSyslogIntegrationResponse.from_dict(get_syslog_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetTeamUsersPaginatedResponseV1.md b/docs/reference/GetTeamUsersPaginatedResponseV1.md new file mode 100644 index 00000000..41174b6d --- /dev/null +++ b/docs/reference/GetTeamUsersPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetTeamUsersPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[TeamUserResponseV1]**](TeamUserResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_team_users_paginated_response_v1 import GetTeamUsersPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetTeamUsersPaginatedResponseV1 from a JSON string +get_team_users_paginated_response_v1_instance = GetTeamUsersPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetTeamUsersPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_team_users_paginated_response_v1_dict = get_team_users_paginated_response_v1_instance.to_dict() +# create an instance of GetTeamUsersPaginatedResponseV1 from a dict +get_team_users_paginated_response_v1_from_dict = GetTeamUsersPaginatedResponseV1.from_dict(get_team_users_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetTeamsPaginatedResponseV1.md b/docs/reference/GetTeamsPaginatedResponseV1.md new file mode 100644 index 00000000..b5c31dff --- /dev/null +++ b/docs/reference/GetTeamsPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetTeamsPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[TeamResponseV1]**](TeamResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_teams_paginated_response_v1 import GetTeamsPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetTeamsPaginatedResponseV1 from a JSON string +get_teams_paginated_response_v1_instance = GetTeamsPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetTeamsPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_teams_paginated_response_v1_dict = get_teams_paginated_response_v1_instance.to_dict() +# create an instance of GetTeamsPaginatedResponseV1 from a dict +get_teams_paginated_response_v1_from_dict = GetTeamsPaginatedResponseV1.from_dict(get_teams_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetUsersPaginatedResponseV1.md b/docs/reference/GetUsersPaginatedResponseV1.md new file mode 100644 index 00000000..c547daed --- /dev/null +++ b/docs/reference/GetUsersPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GetUsersPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[UserResponseV1]**](UserResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.get_users_paginated_response_v1 import GetUsersPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GetUsersPaginatedResponseV1 from a JSON string +get_users_paginated_response_v1_instance = GetUsersPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GetUsersPaginatedResponseV1.to_json()) + +# convert the object into a dict +get_users_paginated_response_v1_dict = get_users_paginated_response_v1_instance.to_dict() +# create an instance of GetUsersPaginatedResponseV1 from a dict +get_users_paginated_response_v1_from_dict = GetUsersPaginatedResponseV1.from_dict(get_users_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GetWebhookIntegrationResponse.md b/docs/reference/GetWebhookIntegrationResponse.md new file mode 100644 index 00000000..00064206 --- /dev/null +++ b/docs/reference/GetWebhookIntegrationResponse.md @@ -0,0 +1,35 @@ +# GetWebhookIntegrationResponse + +Get Webhook Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoWebhook**](BaseConnectionInfoWebhook.md) | | + +## Example + +```python +from sysdig_client.models.get_webhook_integration_response import GetWebhookIntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of GetWebhookIntegrationResponse from a JSON string +get_webhook_integration_response_instance = GetWebhookIntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(GetWebhookIntegrationResponse.to_json()) + +# convert the object into a dict +get_webhook_integration_response_dict = get_webhook_integration_response_instance.to_dict() +# create an instance of GetWebhookIntegrationResponse from a dict +get_webhook_integration_response_from_dict = GetWebhookIntegrationResponse.from_dict(get_webhook_integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GlobalSsoSettingsRequestV1.md b/docs/reference/GlobalSsoSettingsRequestV1.md new file mode 100644 index 00000000..dc854572 --- /dev/null +++ b/docs/reference/GlobalSsoSettingsRequestV1.md @@ -0,0 +1,29 @@ +# GlobalSsoSettingsRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_password_login_enabled** | **bool** | Set to `true` to enable password login when SSO is enabled, or `false` to disable it. | + +## Example + +```python +from sysdig_client.models.global_sso_settings_request_v1 import GlobalSsoSettingsRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GlobalSsoSettingsRequestV1 from a JSON string +global_sso_settings_request_v1_instance = GlobalSsoSettingsRequestV1.from_json(json) +# print the JSON string representation of the object +print(GlobalSsoSettingsRequestV1.to_json()) + +# convert the object into a dict +global_sso_settings_request_v1_dict = global_sso_settings_request_v1_instance.to_dict() +# create an instance of GlobalSsoSettingsRequestV1 from a dict +global_sso_settings_request_v1_from_dict = GlobalSsoSettingsRequestV1.from_dict(global_sso_settings_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GlobalSsoSettingsResponseV1.md b/docs/reference/GlobalSsoSettingsResponseV1.md new file mode 100644 index 00000000..c39feb41 --- /dev/null +++ b/docs/reference/GlobalSsoSettingsResponseV1.md @@ -0,0 +1,29 @@ +# GlobalSsoSettingsResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_password_login_enabled** | **bool** | Indicates whether password login is enabled. | [optional] + +## Example + +```python +from sysdig_client.models.global_sso_settings_response_v1 import GlobalSsoSettingsResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GlobalSsoSettingsResponseV1 from a JSON string +global_sso_settings_response_v1_instance = GlobalSsoSettingsResponseV1.from_json(json) +# print the JSON string representation of the object +print(GlobalSsoSettingsResponseV1.to_json()) + +# convert the object into a dict +global_sso_settings_response_v1_dict = global_sso_settings_response_v1_instance.to_dict() +# create an instance of GlobalSsoSettingsResponseV1 from a dict +global_sso_settings_response_v1_from_dict = GlobalSsoSettingsResponseV1.from_dict(global_sso_settings_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GooglePubSubCreateConnectionInfo.md b/docs/reference/GooglePubSubCreateConnectionInfo.md new file mode 100644 index 00000000..0db39707 --- /dev/null +++ b/docs/reference/GooglePubSubCreateConnectionInfo.md @@ -0,0 +1,33 @@ +# GooglePubSubCreateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**project** | **str** | GCP project ID hosting the target pub/sub | +**topic** | **str** | pub/sub topic onto which publish the data | +**ordering_key** | **str** | The key to use to order the messages. Required to enable ordered delivery | [optional] +**attributes** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the request. Each header mapping requires 2 keys: \"key\" for the header key and \"value\" for its value | [optional] +**credentials_json** | **str** | JSON credentials for the service account Sysdig will use to send data | + +## Example + +```python +from sysdig_client.models.google_pub_sub_create_connection_info import GooglePubSubCreateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of GooglePubSubCreateConnectionInfo from a JSON string +google_pub_sub_create_connection_info_instance = GooglePubSubCreateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(GooglePubSubCreateConnectionInfo.to_json()) + +# convert the object into a dict +google_pub_sub_create_connection_info_dict = google_pub_sub_create_connection_info_instance.to_dict() +# create an instance of GooglePubSubCreateConnectionInfo from a dict +google_pub_sub_create_connection_info_from_dict = GooglePubSubCreateConnectionInfo.from_dict(google_pub_sub_create_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GooglePubSubCreateConnectionInfo1.md b/docs/reference/GooglePubSubCreateConnectionInfo1.md new file mode 100644 index 00000000..8b64b03e --- /dev/null +++ b/docs/reference/GooglePubSubCreateConnectionInfo1.md @@ -0,0 +1,33 @@ +# GooglePubSubCreateConnectionInfo1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**project** | **str** | GCP project ID hosting the target pub/sub | +**topic** | **str** | pub/sub topic onto which publish the data | +**ordering_key** | **str** | The key to use to order the messages. Required to enable ordered delivery | [optional] +**attributes** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the request. Each header mapping requires 2 keys: \"key\" for the header key and \"value\" for its value | [optional] +**credentials_json** | **str** | JSON credentials for the service account Sysdig will use to send data | [optional] + +## Example + +```python +from sysdig_client.models.google_pub_sub_create_connection_info1 import GooglePubSubCreateConnectionInfo1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GooglePubSubCreateConnectionInfo1 from a JSON string +google_pub_sub_create_connection_info1_instance = GooglePubSubCreateConnectionInfo1.from_json(json) +# print the JSON string representation of the object +print(GooglePubSubCreateConnectionInfo1.to_json()) + +# convert the object into a dict +google_pub_sub_create_connection_info1_dict = google_pub_sub_create_connection_info1_instance.to_dict() +# create an instance of GooglePubSubCreateConnectionInfo1 from a dict +google_pub_sub_create_connection_info1_from_dict = GooglePubSubCreateConnectionInfo1.from_dict(google_pub_sub_create_connection_info1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GoogleSCCCreateConnectionInfo.md b/docs/reference/GoogleSCCCreateConnectionInfo.md new file mode 100644 index 00000000..1417c7a0 --- /dev/null +++ b/docs/reference/GoogleSCCCreateConnectionInfo.md @@ -0,0 +1,31 @@ +# GoogleSCCCreateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**organization** | **str** | ID of your GCP organization | +**security_marks** | [**List[KeyValueObject]**](KeyValueObject.md) | additional annotations to add to assets or findings as they get forwarded to Security Command Center | [optional] +**credentials_json** | **str** | JSON credentials for the service account Sysdig will use to send data | + +## Example + +```python +from sysdig_client.models.google_scc_create_connection_info import GoogleSCCCreateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of GoogleSCCCreateConnectionInfo from a JSON string +google_scc_create_connection_info_instance = GoogleSCCCreateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(GoogleSCCCreateConnectionInfo.to_json()) + +# convert the object into a dict +google_scc_create_connection_info_dict = google_scc_create_connection_info_instance.to_dict() +# create an instance of GoogleSCCCreateConnectionInfo from a dict +google_scc_create_connection_info_from_dict = GoogleSCCCreateConnectionInfo.from_dict(google_scc_create_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GoogleSCCCreateConnectionInfo1.md b/docs/reference/GoogleSCCCreateConnectionInfo1.md new file mode 100644 index 00000000..de6b5c39 --- /dev/null +++ b/docs/reference/GoogleSCCCreateConnectionInfo1.md @@ -0,0 +1,31 @@ +# GoogleSCCCreateConnectionInfo1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**organization** | **str** | ID of your GCP organization | +**security_marks** | [**List[KeyValueObject]**](KeyValueObject.md) | additional annotations to add to assets or findings as they get forwarded to Security Command Center | [optional] +**credentials_json** | **str** | JSON credentials for the service account Sysdig will use to send data | [optional] + +## Example + +```python +from sysdig_client.models.google_scc_create_connection_info1 import GoogleSCCCreateConnectionInfo1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GoogleSCCCreateConnectionInfo1 from a JSON string +google_scc_create_connection_info1_instance = GoogleSCCCreateConnectionInfo1.from_json(json) +# print the JSON string representation of the object +print(GoogleSCCCreateConnectionInfo1.to_json()) + +# convert the object into a dict +google_scc_create_connection_info1_dict = google_scc_create_connection_info1_instance.to_dict() +# create an instance of GoogleSCCCreateConnectionInfo1 from a dict +google_scc_create_connection_info1_from_dict = GoogleSCCCreateConnectionInfo1.from_dict(google_scc_create_connection_info1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GroupMappingResponseV1.md b/docs/reference/GroupMappingResponseV1.md new file mode 100644 index 00000000..bebb3f70 --- /dev/null +++ b/docs/reference/GroupMappingResponseV1.md @@ -0,0 +1,37 @@ +# GroupMappingResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**group_name** | **str** | The group name matching the external provider name. | [optional] +**standard_team_role** | [**TeamRoleV1**](TeamRoleV1.md) | The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**. | [optional] +**custom_team_role_id** | **int** | The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. | [optional] +**is_admin** | **bool** | Flag that indicates if the group is an admin group. | [optional] +**team_map** | [**TeamMapV1**](TeamMapV1.md) | | [optional] +**weight** | **int** | The weight of the group mapping that is used to determine the priority - a lower number has higher priority. | [optional] +**date_created** | **datetime** | The date in which this group mapping was created in ISO 8601 format. | [optional] +**last_updated** | **datetime** | The date in which this group mapping was last updated in ISO 8601 format. | [optional] + +## Example + +```python +from sysdig_client.models.group_mapping_response_v1 import GroupMappingResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GroupMappingResponseV1 from a JSON string +group_mapping_response_v1_instance = GroupMappingResponseV1.from_json(json) +# print the JSON string representation of the object +print(GroupMappingResponseV1.to_json()) + +# convert the object into a dict +group_mapping_response_v1_dict = group_mapping_response_v1_instance.to_dict() +# create an instance of GroupMappingResponseV1 from a dict +group_mapping_response_v1_from_dict = GroupMappingResponseV1.from_dict(group_mapping_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GroupMappingSettingsV1.md b/docs/reference/GroupMappingSettingsV1.md new file mode 100644 index 00000000..bf61c040 --- /dev/null +++ b/docs/reference/GroupMappingSettingsV1.md @@ -0,0 +1,32 @@ +# GroupMappingSettingsV1 + +The request to save group mapping settings. Currently settings for conflict resolution strategies are supported. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**no_mapping_strategy** | **str** | Strategy for handling no mappings. | +**different_roles_same_team_strategy** | **str** | Strategy for handling different roles on the same team. | +**no_mappings_error_redirect_url** | **str** | Redirect URL when NO_MAPPINGS_ERROR_REDIRECT is selected. | [optional] + +## Example + +```python +from sysdig_client.models.group_mapping_settings_v1 import GroupMappingSettingsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GroupMappingSettingsV1 from a JSON string +group_mapping_settings_v1_instance = GroupMappingSettingsV1.from_json(json) +# print the JSON string representation of the object +print(GroupMappingSettingsV1.to_json()) + +# convert the object into a dict +group_mapping_settings_v1_dict = group_mapping_settings_v1_instance.to_dict() +# create an instance of GroupMappingSettingsV1 from a dict +group_mapping_settings_v1_from_dict = GroupMappingSettingsV1.from_dict(group_mapping_settings_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GroupMappingsApi.md b/docs/reference/GroupMappingsApi.md new file mode 100644 index 00000000..0d4d9c26 --- /dev/null +++ b/docs/reference/GroupMappingsApi.md @@ -0,0 +1,625 @@ +# sysdig_client.GroupMappingsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_group_mapping_v1**](GroupMappingsApi.md#create_group_mapping_v1) | **POST** /platform/v1/group-mappings | Create Group Mapping +[**delete_group_mapping_by_id_v1**](GroupMappingsApi.md#delete_group_mapping_by_id_v1) | **DELETE** /platform/v1/group-mappings/{groupMappingId} | Delete Group Mapping +[**get_group_mapping_by_id_v1**](GroupMappingsApi.md#get_group_mapping_by_id_v1) | **GET** /platform/v1/group-mappings/{groupMappingId} | Get Group Mapping +[**get_group_mapping_settings_v1**](GroupMappingsApi.md#get_group_mapping_settings_v1) | **GET** /platform/v1/group-mappings-settings | Get Group Mappings Settings +[**get_group_mappings_v1**](GroupMappingsApi.md#get_group_mappings_v1) | **GET** /platform/v1/group-mappings | List Group Mappings +[**save_group_mapping_settings_v1**](GroupMappingsApi.md#save_group_mapping_settings_v1) | **PUT** /platform/v1/group-mappings-settings | Save Group Mapping settings +[**update_group_mapping_by_id_v1**](GroupMappingsApi.md#update_group_mapping_by_id_v1) | **PUT** /platform/v1/group-mappings/{groupMappingId} | Update Group Mapping + + +# **create_group_mapping_v1** +> GroupMappingResponseV1 create_group_mapping_v1(create_group_mapping_request_v1=create_group_mapping_request_v1) + +Create Group Mapping + +Create a new group mapping.\ +\ +**Required permissions:** _group-mappings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_group_mapping_request_v1 import CreateGroupMappingRequestV1 +from sysdig_client.models.group_mapping_response_v1 import GroupMappingResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.GroupMappingsApi(api_client) + create_group_mapping_request_v1 = sysdig_client.CreateGroupMappingRequestV1() # CreateGroupMappingRequestV1 | The payload required to create group mapping. (optional) + + try: + # Create Group Mapping + api_response = api_instance.create_group_mapping_v1(create_group_mapping_request_v1=create_group_mapping_request_v1) + print("The response of GroupMappingsApi->create_group_mapping_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling GroupMappingsApi->create_group_mapping_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_group_mapping_request_v1** | [**CreateGroupMappingRequestV1**](CreateGroupMappingRequestV1.md)| The payload required to create group mapping. | [optional] + +### Return type + +[**GroupMappingResponseV1**](GroupMappingResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Group Mapping created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_group_mapping_by_id_v1** +> delete_group_mapping_by_id_v1(group_mapping_id) + +Delete Group Mapping + +Delete a group mapping by its ID.\ +\ +**Required permissions:** _group-mappings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.GroupMappingsApi(api_client) + group_mapping_id = 56 # int | The group mapping ID. + + try: + # Delete Group Mapping + api_instance.delete_group_mapping_by_id_v1(group_mapping_id) + except Exception as e: + print("Exception when calling GroupMappingsApi->delete_group_mapping_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **group_mapping_id** | **int**| The group mapping ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Group mapping deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_group_mapping_by_id_v1** +> GroupMappingResponseV1 get_group_mapping_by_id_v1(group_mapping_id) + +Get Group Mapping + +Return a group mapping by its ID.\ +\ +**Required permissions:** _group-mappings.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.group_mapping_response_v1 import GroupMappingResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.GroupMappingsApi(api_client) + group_mapping_id = 56 # int | The group mapping ID. + + try: + # Get Group Mapping + api_response = api_instance.get_group_mapping_by_id_v1(group_mapping_id) + print("The response of GroupMappingsApi->get_group_mapping_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling GroupMappingsApi->get_group_mapping_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **group_mapping_id** | **int**| The group mapping ID. | + +### Return type + +[**GroupMappingResponseV1**](GroupMappingResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Group Mapping found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_group_mapping_settings_v1** +> GroupMappingSettingsV1 get_group_mapping_settings_v1() + +Get Group Mappings Settings + +Retrieves your group mapping settings.\ +\ +**Required permissions:** _group-mappings.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.group_mapping_settings_v1 import GroupMappingSettingsV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.GroupMappingsApi(api_client) + + try: + # Get Group Mappings Settings + api_response = api_instance.get_group_mapping_settings_v1() + print("The response of GroupMappingsApi->get_group_mapping_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling GroupMappingsApi->get_group_mapping_settings_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**GroupMappingSettingsV1**](GroupMappingSettingsV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Group mappings page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_group_mappings_v1** +> GroupMappingsPaginatedResponseV1 get_group_mappings_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + +List Group Mappings + +Retrieve a paginated list of group mappings.\ +\ +**Required permissions:** _group-mappings.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.group_mappings_paginated_response_v1 import GroupMappingsPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.GroupMappingsApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + orderby = '' # str | The order by field separated by a colon for the direction (optional) (default to '') + filter = '' # str | The filter by field separated by a colon for the filter value (optional) (default to '') + + try: + # List Group Mappings + api_response = api_instance.get_group_mappings_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + print("The response of GroupMappingsApi->get_group_mappings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling GroupMappingsApi->get_group_mappings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **orderby** | **str**| The order by field separated by a colon for the direction | [optional] [default to ''] + **filter** | **str**| The filter by field separated by a colon for the filter value | [optional] [default to ''] + +### Return type + +[**GroupMappingsPaginatedResponseV1**](GroupMappingsPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Group mappings paginated response. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **save_group_mapping_settings_v1** +> GroupMappingSettingsV1 save_group_mapping_settings_v1(group_mapping_settings_v1=group_mapping_settings_v1) + +Save Group Mapping settings + +Saves your group mapping settings.\ +\ +**Required permissions:** _group-mappings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.group_mapping_settings_v1 import GroupMappingSettingsV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.GroupMappingsApi(api_client) + group_mapping_settings_v1 = sysdig_client.GroupMappingSettingsV1() # GroupMappingSettingsV1 | The payload required to save group mapping settings. (optional) + + try: + # Save Group Mapping settings + api_response = api_instance.save_group_mapping_settings_v1(group_mapping_settings_v1=group_mapping_settings_v1) + print("The response of GroupMappingsApi->save_group_mapping_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling GroupMappingsApi->save_group_mapping_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **group_mapping_settings_v1** | [**GroupMappingSettingsV1**](GroupMappingSettingsV1.md)| The payload required to save group mapping settings. | [optional] + +### Return type + +[**GroupMappingSettingsV1**](GroupMappingSettingsV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Group Mapping settings saved. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_group_mapping_by_id_v1** +> GroupMappingResponseV1 update_group_mapping_by_id_v1(group_mapping_id, update_group_mapping_request_v1=update_group_mapping_request_v1) + +Update Group Mapping + +Update a group mapping by its ID.\ +\ +**Required permissions:** _group-mappings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.group_mapping_response_v1 import GroupMappingResponseV1 +from sysdig_client.models.update_group_mapping_request_v1 import UpdateGroupMappingRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.GroupMappingsApi(api_client) + group_mapping_id = 56 # int | The group mapping ID. + update_group_mapping_request_v1 = sysdig_client.UpdateGroupMappingRequestV1() # UpdateGroupMappingRequestV1 | (optional) + + try: + # Update Group Mapping + api_response = api_instance.update_group_mapping_by_id_v1(group_mapping_id, update_group_mapping_request_v1=update_group_mapping_request_v1) + print("The response of GroupMappingsApi->update_group_mapping_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling GroupMappingsApi->update_group_mapping_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **group_mapping_id** | **int**| The group mapping ID. | + **update_group_mapping_request_v1** | [**UpdateGroupMappingRequestV1**](UpdateGroupMappingRequestV1.md)| | [optional] + +### Return type + +[**GroupMappingResponseV1**](GroupMappingResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Group Mapping updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/GroupMappingsPaginatedResponseV1.md b/docs/reference/GroupMappingsPaginatedResponseV1.md new file mode 100644 index 00000000..8802c9d8 --- /dev/null +++ b/docs/reference/GroupMappingsPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# GroupMappingsPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[GroupMappingResponseV1]**](GroupMappingResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.group_mappings_paginated_response_v1 import GroupMappingsPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of GroupMappingsPaginatedResponseV1 from a JSON string +group_mappings_paginated_response_v1_instance = GroupMappingsPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(GroupMappingsPaginatedResponseV1.to_json()) + +# convert the object into a dict +group_mappings_paginated_response_v1_dict = group_mappings_paginated_response_v1_instance.to_dict() +# create an instance of GroupMappingsPaginatedResponseV1 from a dict +group_mappings_paginated_response_v1_from_dict = GroupMappingsPaginatedResponseV1.from_dict(group_mappings_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/GssapiConnectionInfoKafka.md b/docs/reference/GssapiConnectionInfoKafka.md new file mode 100644 index 00000000..4dfca07f --- /dev/null +++ b/docs/reference/GssapiConnectionInfoKafka.md @@ -0,0 +1,33 @@ +# GssapiConnectionInfoKafka + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**auth** | **str** | The authentication method to optionally use. Currently supporting only GSSAPI | +**principal** | **str** | GSSAPI principal | +**realm** | **str** | GSSAPI realm | +**service** | **str** | GSSAPI Service name | +**krb5** | **str** | Kerberos krb5.conf file content for GSSAPI | + +## Example + +```python +from sysdig_client.models.gssapi_connection_info_kafka import GssapiConnectionInfoKafka + +# TODO update the JSON string below +json = "{}" +# create an instance of GssapiConnectionInfoKafka from a JSON string +gssapi_connection_info_kafka_instance = GssapiConnectionInfoKafka.from_json(json) +# print the JSON string representation of the object +print(GssapiConnectionInfoKafka.to_json()) + +# convert the object into a dict +gssapi_connection_info_kafka_dict = gssapi_connection_info_kafka_instance.to_dict() +# create an instance of GssapiConnectionInfoKafka from a dict +gssapi_connection_info_kafka_from_dict = GssapiConnectionInfoKafka.from_dict(gssapi_connection_info_kafka_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/HostMetadata.md b/docs/reference/HostMetadata.md new file mode 100644 index 00000000..c751a5fe --- /dev/null +++ b/docs/reference/HostMetadata.md @@ -0,0 +1,32 @@ +# HostMetadata + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**architecture** | **str** | host architecture | [optional] +**host_id** | **str** | host id | +**host_name** | **str** | host name | +**os** | **str** | host os | + +## Example + +```python +from sysdig_client.models.host_metadata import HostMetadata + +# TODO update the JSON string below +json = "{}" +# create an instance of HostMetadata from a JSON string +host_metadata_instance = HostMetadata.from_json(json) +# print the JSON string representation of the object +print(HostMetadata.to_json()) + +# convert the object into a dict +host_metadata_dict = host_metadata_instance.to_dict() +# create an instance of HostMetadata from a dict +host_metadata_from_dict = HostMetadata.from_dict(host_metadata_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/HostName.md b/docs/reference/HostName.md new file mode 100644 index 00000000..e55ec15b --- /dev/null +++ b/docs/reference/HostName.md @@ -0,0 +1,30 @@ +# HostName + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.host_name import HostName + +# TODO update the JSON string below +json = "{}" +# create an instance of HostName from a JSON string +host_name_instance = HostName.from_json(json) +# print the JSON string representation of the object +print(HostName.to_json()) + +# convert the object into a dict +host_name_dict = host_name_instance.to_dict() +# create an instance of HostName from a dict +host_name_from_dict = HostName.from_dict(host_name_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/HostNameContains.md b/docs/reference/HostNameContains.md new file mode 100644 index 00000000..14f6edcb --- /dev/null +++ b/docs/reference/HostNameContains.md @@ -0,0 +1,30 @@ +# HostNameContains + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.host_name_contains import HostNameContains + +# TODO update the JSON string below +json = "{}" +# create an instance of HostNameContains from a JSON string +host_name_contains_instance = HostNameContains.from_json(json) +# print the JSON string representation of the object +print(HostNameContains.to_json()) + +# convert the object into a dict +host_name_contains_dict = host_name_contains_instance.to_dict() +# create an instance of HostNameContains from a dict +host_name_contains_from_dict = HostNameContains.from_dict(host_name_contains_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IBMMulticloudCloudCreateConnectionInfo.md b/docs/reference/IBMMulticloudCloudCreateConnectionInfo.md new file mode 100644 index 00000000..16f7e4fd --- /dev/null +++ b/docs/reference/IBMMulticloudCloudCreateConnectionInfo.md @@ -0,0 +1,34 @@ +# IBMMulticloudCloudCreateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | The URL, including protocol and port (if non standard), to your IBM Cloud Pak for Multicloud Management API endpoint | +**account_id** | **str** | IBM Account ID | [optional] [default to 'id-mycluster-account'] +**provider_id** | **str** | The provider the findings will be associated to | [optional] [default to 'sysdig-secure'] +**note_name** | **str** | The note to use. If unspecified, a note with `policy-event` ID will be created and used | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**api_key** | **str** | IBM Cloud API Key | + +## Example + +```python +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info import IBMMulticloudCloudCreateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of IBMMulticloudCloudCreateConnectionInfo from a JSON string +ibm_multicloud_cloud_create_connection_info_instance = IBMMulticloudCloudCreateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(IBMMulticloudCloudCreateConnectionInfo.to_json()) + +# convert the object into a dict +ibm_multicloud_cloud_create_connection_info_dict = ibm_multicloud_cloud_create_connection_info_instance.to_dict() +# create an instance of IBMMulticloudCloudCreateConnectionInfo from a dict +ibm_multicloud_cloud_create_connection_info_from_dict = IBMMulticloudCloudCreateConnectionInfo.from_dict(ibm_multicloud_cloud_create_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IBMMulticloudCloudCreateConnectionInfo1.md b/docs/reference/IBMMulticloudCloudCreateConnectionInfo1.md new file mode 100644 index 00000000..0517863e --- /dev/null +++ b/docs/reference/IBMMulticloudCloudCreateConnectionInfo1.md @@ -0,0 +1,34 @@ +# IBMMulticloudCloudCreateConnectionInfo1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | The URL, including protocol and port (if non standard), to your IBM Cloud Pak for Multicloud Management API endpoint | +**account_id** | **str** | IBM Account ID | [optional] [default to 'id-mycluster-account'] +**provider_id** | **str** | The provider the findings will be associated to | [optional] [default to 'sysdig-secure'] +**note_name** | **str** | The note to use. If unspecified, a note with `policy-event` ID will be created and used | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**api_key** | **str** | IBM Cloud API Key | [optional] + +## Example + +```python +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info1 import IBMMulticloudCloudCreateConnectionInfo1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IBMMulticloudCloudCreateConnectionInfo1 from a JSON string +ibm_multicloud_cloud_create_connection_info1_instance = IBMMulticloudCloudCreateConnectionInfo1.from_json(json) +# print the JSON string representation of the object +print(IBMMulticloudCloudCreateConnectionInfo1.to_json()) + +# convert the object into a dict +ibm_multicloud_cloud_create_connection_info1_dict = ibm_multicloud_cloud_create_connection_info1_instance.to_dict() +# create an instance of IBMMulticloudCloudCreateConnectionInfo1 from a dict +ibm_multicloud_cloud_create_connection_info1_from_dict = IBMMulticloudCloudCreateConnectionInfo1.from_dict(ibm_multicloud_cloud_create_connection_info1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IPFilteringApi.md b/docs/reference/IPFilteringApi.md new file mode 100644 index 00000000..20085d15 --- /dev/null +++ b/docs/reference/IPFilteringApi.md @@ -0,0 +1,624 @@ +# sysdig_client.IPFilteringApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_ip_filter_v1**](IPFilteringApi.md#create_ip_filter_v1) | **POST** /platform/v1/ip-filters | Create IP Filter +[**delete_ip_filter_by_id_v1**](IPFilteringApi.md#delete_ip_filter_by_id_v1) | **DELETE** /platform/v1/ip-filters/{ipFilterId} | Delete IP Filter +[**get_ip_filter_by_id_v1**](IPFilteringApi.md#get_ip_filter_by_id_v1) | **GET** /platform/v1/ip-filters/{ipFilterId} | Get IP Filter by ID +[**get_ip_filters_settings_v1**](IPFilteringApi.md#get_ip_filters_settings_v1) | **GET** /platform/v1/ip-filters-settings | Get IP Filters Settings +[**get_ip_filters_v1**](IPFilteringApi.md#get_ip_filters_v1) | **GET** /platform/v1/ip-filters | List IP Filters +[**save_ip_filters_settings_v1**](IPFilteringApi.md#save_ip_filters_settings_v1) | **PUT** /platform/v1/ip-filters-settings | Save IP Filters settings +[**update_ip_filter_v1**](IPFilteringApi.md#update_ip_filter_v1) | **PUT** /platform/v1/ip-filters/{ipFilterId} | Update IP Filter + + +# **create_ip_filter_v1** +> IpFilterResponseV1 create_ip_filter_v1(create_ip_filter_v1=create_ip_filter_v1) + +Create IP Filter + +Create a new IP filter.\ +\ +**Required permissions:** _ip-filters.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_ip_filter_v1 import CreateIpFilterV1 +from sysdig_client.models.ip_filter_response_v1 import IpFilterResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.IPFilteringApi(api_client) + create_ip_filter_v1 = sysdig_client.CreateIpFilterV1() # CreateIpFilterV1 | The payload required to create IP filter. (optional) + + try: + # Create IP Filter + api_response = api_instance.create_ip_filter_v1(create_ip_filter_v1=create_ip_filter_v1) + print("The response of IPFilteringApi->create_ip_filter_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling IPFilteringApi->create_ip_filter_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_ip_filter_v1** | [**CreateIpFilterV1**](CreateIpFilterV1.md)| The payload required to create IP filter. | [optional] + +### Return type + +[**IpFilterResponseV1**](IpFilterResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | IP filter created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_ip_filter_by_id_v1** +> delete_ip_filter_by_id_v1(ip_filter_id) + +Delete IP Filter + +Delete IP filter by its ID.\ +\ +**Required permissions:** _ip-filters.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.IPFilteringApi(api_client) + ip_filter_id = 56 # int | IP Filter ID. + + try: + # Delete IP Filter + api_instance.delete_ip_filter_by_id_v1(ip_filter_id) + except Exception as e: + print("Exception when calling IPFilteringApi->delete_ip_filter_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ip_filter_id** | **int**| IP Filter ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | IP filter deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_ip_filter_by_id_v1** +> IpFilterResponseV1 get_ip_filter_by_id_v1(ip_filter_id) + +Get IP Filter by ID + +Get IP Filter by ID.\ +\ +**Required permissions:** _ip-filters.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.ip_filter_response_v1 import IpFilterResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.IPFilteringApi(api_client) + ip_filter_id = 56 # int | IP Filter ID. + + try: + # Get IP Filter by ID + api_response = api_instance.get_ip_filter_by_id_v1(ip_filter_id) + print("The response of IPFilteringApi->get_ip_filter_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling IPFilteringApi->get_ip_filter_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ip_filter_id** | **int**| IP Filter ID. | + +### Return type + +[**IpFilterResponseV1**](IpFilterResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | IP filter found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_ip_filters_settings_v1** +> IpFiltersSettingsV1 get_ip_filters_settings_v1() + +Get IP Filters Settings + +Retrieves your IP filters settings.\ +\ +**Required permissions:** _ip-filters.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.ip_filters_settings_v1 import IpFiltersSettingsV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.IPFilteringApi(api_client) + + try: + # Get IP Filters Settings + api_response = api_instance.get_ip_filters_settings_v1() + print("The response of IPFilteringApi->get_ip_filters_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling IPFilteringApi->get_ip_filters_settings_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**IpFiltersSettingsV1**](IpFiltersSettingsV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | IP filters settings. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_ip_filters_v1** +> IpFiltersPaginatedResponseV1 get_ip_filters_v1(offset=offset, limit=limit, filter=filter) + +List IP Filters + +Retrieve a paginated list of IP filters.\ +\ +**Required permissions:** _ip-filters.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.ip_filters_paginated_response_v1 import IpFiltersPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.IPFilteringApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + filter = '' # str | The filter by field separated by a colon for the filter value (optional) (default to '') + + try: + # List IP Filters + api_response = api_instance.get_ip_filters_v1(offset=offset, limit=limit, filter=filter) + print("The response of IPFilteringApi->get_ip_filters_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling IPFilteringApi->get_ip_filters_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **filter** | **str**| The filter by field separated by a colon for the filter value | [optional] [default to ''] + +### Return type + +[**IpFiltersPaginatedResponseV1**](IpFiltersPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List all IP filters response. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **save_ip_filters_settings_v1** +> IpFiltersSettingsV1 save_ip_filters_settings_v1(ip_filters_settings_v1=ip_filters_settings_v1) + +Save IP Filters settings + +Saves your IP filters settings.\ +\ +**Required permissions:** _ip-filters.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.ip_filters_settings_v1 import IpFiltersSettingsV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.IPFilteringApi(api_client) + ip_filters_settings_v1 = sysdig_client.IpFiltersSettingsV1() # IpFiltersSettingsV1 | The payload required to save IP filters settings. (optional) + + try: + # Save IP Filters settings + api_response = api_instance.save_ip_filters_settings_v1(ip_filters_settings_v1=ip_filters_settings_v1) + print("The response of IPFilteringApi->save_ip_filters_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling IPFilteringApi->save_ip_filters_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ip_filters_settings_v1** | [**IpFiltersSettingsV1**](IpFiltersSettingsV1.md)| The payload required to save IP filters settings. | [optional] + +### Return type + +[**IpFiltersSettingsV1**](IpFiltersSettingsV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | IP filters settings saved. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_ip_filter_v1** +> IpFilterResponseV1 update_ip_filter_v1(ip_filter_id, update_ip_filter_v1) + +Update IP Filter + +Update IP filter by its ID. \ +\ +**Required permissions:** _ip-filters.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.ip_filter_response_v1 import IpFilterResponseV1 +from sysdig_client.models.update_ip_filter_v1 import UpdateIpFilterV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.IPFilteringApi(api_client) + ip_filter_id = 56 # int | IP Filter ID. + update_ip_filter_v1 = sysdig_client.UpdateIpFilterV1() # UpdateIpFilterV1 | + + try: + # Update IP Filter + api_response = api_instance.update_ip_filter_v1(ip_filter_id, update_ip_filter_v1) + print("The response of IPFilteringApi->update_ip_filter_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling IPFilteringApi->update_ip_filter_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ip_filter_id** | **int**| IP Filter ID. | + **update_ip_filter_v1** | [**UpdateIpFilterV1**](UpdateIpFilterV1.md)| | + +### Return type + +[**IpFilterResponseV1**](IpFilterResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | IP filter updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/IbmEventNotificationsNotificationChannelOptionsV1.md b/docs/reference/IbmEventNotificationsNotificationChannelOptionsV1.md new file mode 100644 index 00000000..222c6ab7 --- /dev/null +++ b/docs/reference/IbmEventNotificationsNotificationChannelOptionsV1.md @@ -0,0 +1,31 @@ +# IbmEventNotificationsNotificationChannelOptionsV1 + +The IBM Event Notifications notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**instance_id** | **str** | The IBM Event Notification Service Instance Id | + +## Example + +```python +from sysdig_client.models.ibm_event_notifications_notification_channel_options_v1 import IbmEventNotificationsNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IbmEventNotificationsNotificationChannelOptionsV1 from a JSON string +ibm_event_notifications_notification_channel_options_v1_instance = IbmEventNotificationsNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(IbmEventNotificationsNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +ibm_event_notifications_notification_channel_options_v1_dict = ibm_event_notifications_notification_channel_options_v1_instance.to_dict() +# create an instance of IbmEventNotificationsNotificationChannelOptionsV1 from a dict +ibm_event_notifications_notification_channel_options_v1_from_dict = IbmEventNotificationsNotificationChannelOptionsV1.from_dict(ibm_event_notifications_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IbmEventNotificationsNotificationChannelResponseV1.md b/docs/reference/IbmEventNotificationsNotificationChannelResponseV1.md new file mode 100644 index 00000000..7a94cc89 --- /dev/null +++ b/docs/reference/IbmEventNotificationsNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# IbmEventNotificationsNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**IbmEventNotificationsNotificationChannelOptionsV1**](IbmEventNotificationsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.ibm_event_notifications_notification_channel_response_v1 import IbmEventNotificationsNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IbmEventNotificationsNotificationChannelResponseV1 from a JSON string +ibm_event_notifications_notification_channel_response_v1_instance = IbmEventNotificationsNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(IbmEventNotificationsNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +ibm_event_notifications_notification_channel_response_v1_dict = ibm_event_notifications_notification_channel_response_v1_instance.to_dict() +# create an instance of IbmEventNotificationsNotificationChannelResponseV1 from a dict +ibm_event_notifications_notification_channel_response_v1_from_dict = IbmEventNotificationsNotificationChannelResponseV1.from_dict(ibm_event_notifications_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Image.md b/docs/reference/Image.md new file mode 100644 index 00000000..1cb7a000 --- /dev/null +++ b/docs/reference/Image.md @@ -0,0 +1,36 @@ +# Image + +An Image resource that returns as part of of the image summary. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**hash** | **str** | Resource unique identifier | +**name** | **str** | Resource name | +**type** | **str** | The resource type | +**pull_string** | **str** | The pull string for the image. | +**vulnerability_summary** | [**VulnerabilitySummary**](VulnerabilitySummary.md) | | +**in_use_vulnerability_summary** | [**VulnerabilitySummary**](VulnerabilitySummary.md) | | +**vm_api_endpoint** | **str** | A link that provides vulnerability management information about an image (Images only). | + +## Example + +```python +from sysdig_client.models.image import Image + +# TODO update the JSON string below +json = "{}" +# create an instance of Image from a JSON string +image_instance = Image.from_json(json) +# print the JSON string representation of the object +print(Image.to_json()) + +# convert the object into a dict +image_dict = image_instance.to_dict() +# create an instance of Image from a dict +image_from_dict = Image.from_dict(image_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigCreationDateWithAge.md b/docs/reference/ImageConfigCreationDateWithAge.md new file mode 100644 index 00000000..a8d21435 --- /dev/null +++ b/docs/reference/ImageConfigCreationDateWithAge.md @@ -0,0 +1,31 @@ +# ImageConfigCreationDateWithAge + +Predicate expressing \"the image has been created before the specified amount of days\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigCreationDateWithAgeExtra**](ImageConfigCreationDateWithAgeExtra.md) | | + +## Example + +```python +from sysdig_client.models.image_config_creation_date_with_age import ImageConfigCreationDateWithAge + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigCreationDateWithAge from a JSON string +image_config_creation_date_with_age_instance = ImageConfigCreationDateWithAge.from_json(json) +# print the JSON string representation of the object +print(ImageConfigCreationDateWithAge.to_json()) + +# convert the object into a dict +image_config_creation_date_with_age_dict = image_config_creation_date_with_age_instance.to_dict() +# create an instance of ImageConfigCreationDateWithAge from a dict +image_config_creation_date_with_age_from_dict = ImageConfigCreationDateWithAge.from_dict(image_config_creation_date_with_age_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigCreationDateWithAgeExtra.md b/docs/reference/ImageConfigCreationDateWithAgeExtra.md new file mode 100644 index 00000000..b93a1d99 --- /dev/null +++ b/docs/reference/ImageConfigCreationDateWithAgeExtra.md @@ -0,0 +1,29 @@ +# ImageConfigCreationDateWithAgeExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **int** | | [optional] + +## Example + +```python +from sysdig_client.models.image_config_creation_date_with_age_extra import ImageConfigCreationDateWithAgeExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigCreationDateWithAgeExtra from a JSON string +image_config_creation_date_with_age_extra_instance = ImageConfigCreationDateWithAgeExtra.from_json(json) +# print the JSON string representation of the object +print(ImageConfigCreationDateWithAgeExtra.to_json()) + +# convert the object into a dict +image_config_creation_date_with_age_extra_dict = image_config_creation_date_with_age_extra_instance.to_dict() +# create an instance of ImageConfigCreationDateWithAgeExtra from a dict +image_config_creation_date_with_age_extra_from_dict = ImageConfigCreationDateWithAgeExtra.from_dict(image_config_creation_date_with_age_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigDefaultUserIsNot.md b/docs/reference/ImageConfigDefaultUserIsNot.md new file mode 100644 index 00000000..e0da4591 --- /dev/null +++ b/docs/reference/ImageConfigDefaultUserIsNot.md @@ -0,0 +1,31 @@ +# ImageConfigDefaultUserIsNot + +Predicate expressing \"the container user does not default to the specified user\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigDefaultUserIsNotExtra**](ImageConfigDefaultUserIsNotExtra.md) | | + +## Example + +```python +from sysdig_client.models.image_config_default_user_is_not import ImageConfigDefaultUserIsNot + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigDefaultUserIsNot from a JSON string +image_config_default_user_is_not_instance = ImageConfigDefaultUserIsNot.from_json(json) +# print the JSON string representation of the object +print(ImageConfigDefaultUserIsNot.to_json()) + +# convert the object into a dict +image_config_default_user_is_not_dict = image_config_default_user_is_not_instance.to_dict() +# create an instance of ImageConfigDefaultUserIsNot from a dict +image_config_default_user_is_not_from_dict = ImageConfigDefaultUserIsNot.from_dict(image_config_default_user_is_not_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigDefaultUserIsNotExtra.md b/docs/reference/ImageConfigDefaultUserIsNotExtra.md new file mode 100644 index 00000000..bc414e51 --- /dev/null +++ b/docs/reference/ImageConfigDefaultUserIsNotExtra.md @@ -0,0 +1,29 @@ +# ImageConfigDefaultUserIsNotExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**user** | **str** | | + +## Example + +```python +from sysdig_client.models.image_config_default_user_is_not_extra import ImageConfigDefaultUserIsNotExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigDefaultUserIsNotExtra from a JSON string +image_config_default_user_is_not_extra_instance = ImageConfigDefaultUserIsNotExtra.from_json(json) +# print the JSON string representation of the object +print(ImageConfigDefaultUserIsNotExtra.to_json()) + +# convert the object into a dict +image_config_default_user_is_not_extra_dict = image_config_default_user_is_not_extra_instance.to_dict() +# create an instance of ImageConfigDefaultUserIsNotExtra from a dict +image_config_default_user_is_not_extra_from_dict = ImageConfigDefaultUserIsNotExtra.from_dict(image_config_default_user_is_not_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigDefaultUserIsRoot.md b/docs/reference/ImageConfigDefaultUserIsRoot.md new file mode 100644 index 00000000..be53bedd --- /dev/null +++ b/docs/reference/ImageConfigDefaultUserIsRoot.md @@ -0,0 +1,30 @@ +# ImageConfigDefaultUserIsRoot + +Predicate expressing \"the container user defaults to root user\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.image_config_default_user_is_root import ImageConfigDefaultUserIsRoot + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigDefaultUserIsRoot from a JSON string +image_config_default_user_is_root_instance = ImageConfigDefaultUserIsRoot.from_json(json) +# print the JSON string representation of the object +print(ImageConfigDefaultUserIsRoot.to_json()) + +# convert the object into a dict +image_config_default_user_is_root_dict = image_config_default_user_is_root_instance.to_dict() +# create an instance of ImageConfigDefaultUserIsRoot from a dict +image_config_default_user_is_root_from_dict = ImageConfigDefaultUserIsRoot.from_dict(image_config_default_user_is_root_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigDefaultUserList.md b/docs/reference/ImageConfigDefaultUserList.md new file mode 100644 index 00000000..f3ca3cdf --- /dev/null +++ b/docs/reference/ImageConfigDefaultUserList.md @@ -0,0 +1,31 @@ +# ImageConfigDefaultUserList + +Configuration to set the default user for the specified image. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigDefaultUserListExtra**](ImageConfigDefaultUserListExtra.md) | | + +## Example + +```python +from sysdig_client.models.image_config_default_user_list import ImageConfigDefaultUserList + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigDefaultUserList from a JSON string +image_config_default_user_list_instance = ImageConfigDefaultUserList.from_json(json) +# print the JSON string representation of the object +print(ImageConfigDefaultUserList.to_json()) + +# convert the object into a dict +image_config_default_user_list_dict = image_config_default_user_list_instance.to_dict() +# create an instance of ImageConfigDefaultUserList from a dict +image_config_default_user_list_from_dict = ImageConfigDefaultUserList.from_dict(image_config_default_user_list_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigDefaultUserListExtra.md b/docs/reference/ImageConfigDefaultUserListExtra.md new file mode 100644 index 00000000..447d7ddd --- /dev/null +++ b/docs/reference/ImageConfigDefaultUserListExtra.md @@ -0,0 +1,30 @@ +# ImageConfigDefaultUserListExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**operator** | **str** | | +**users** | **List[str]** | | + +## Example + +```python +from sysdig_client.models.image_config_default_user_list_extra import ImageConfigDefaultUserListExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigDefaultUserListExtra from a JSON string +image_config_default_user_list_extra_instance = ImageConfigDefaultUserListExtra.from_json(json) +# print the JSON string representation of the object +print(ImageConfigDefaultUserListExtra.to_json()) + +# convert the object into a dict +image_config_default_user_list_extra_dict = image_config_default_user_list_extra_instance.to_dict() +# create an instance of ImageConfigDefaultUserListExtra from a dict +image_config_default_user_list_extra_from_dict = ImageConfigDefaultUserListExtra.from_dict(image_config_default_user_list_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigEnvVariableContains.md b/docs/reference/ImageConfigEnvVariableContains.md new file mode 100644 index 00000000..c114a215 --- /dev/null +++ b/docs/reference/ImageConfigEnvVariableContains.md @@ -0,0 +1,31 @@ +# ImageConfigEnvVariableContains + +Predicate expressing \"the container has the specified environment variable and value\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigEnvVariableContainsExtra**](ImageConfigEnvVariableContainsExtra.md) | | + +## Example + +```python +from sysdig_client.models.image_config_env_variable_contains import ImageConfigEnvVariableContains + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigEnvVariableContains from a JSON string +image_config_env_variable_contains_instance = ImageConfigEnvVariableContains.from_json(json) +# print the JSON string representation of the object +print(ImageConfigEnvVariableContains.to_json()) + +# convert the object into a dict +image_config_env_variable_contains_dict = image_config_env_variable_contains_instance.to_dict() +# create an instance of ImageConfigEnvVariableContains from a dict +image_config_env_variable_contains_from_dict = ImageConfigEnvVariableContains.from_dict(image_config_env_variable_contains_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigEnvVariableContainsExtra.md b/docs/reference/ImageConfigEnvVariableContainsExtra.md new file mode 100644 index 00000000..e803b1a9 --- /dev/null +++ b/docs/reference/ImageConfigEnvVariableContainsExtra.md @@ -0,0 +1,30 @@ +# ImageConfigEnvVariableContainsExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **str** | | +**value** | **str** | | [optional] + +## Example + +```python +from sysdig_client.models.image_config_env_variable_contains_extra import ImageConfigEnvVariableContainsExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigEnvVariableContainsExtra from a JSON string +image_config_env_variable_contains_extra_instance = ImageConfigEnvVariableContainsExtra.from_json(json) +# print the JSON string representation of the object +print(ImageConfigEnvVariableContainsExtra.to_json()) + +# convert the object into a dict +image_config_env_variable_contains_extra_dict = image_config_env_variable_contains_extra_instance.to_dict() +# create an instance of ImageConfigEnvVariableContainsExtra from a dict +image_config_env_variable_contains_extra_from_dict = ImageConfigEnvVariableContainsExtra.from_dict(image_config_env_variable_contains_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigEnvVariableExists.md b/docs/reference/ImageConfigEnvVariableExists.md new file mode 100644 index 00000000..3d16bb21 --- /dev/null +++ b/docs/reference/ImageConfigEnvVariableExists.md @@ -0,0 +1,31 @@ +# ImageConfigEnvVariableExists + +Predicate expressing \"the container has the specified environment variable\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigEnvVariableExistsExtra**](ImageConfigEnvVariableExistsExtra.md) | | + +## Example + +```python +from sysdig_client.models.image_config_env_variable_exists import ImageConfigEnvVariableExists + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigEnvVariableExists from a JSON string +image_config_env_variable_exists_instance = ImageConfigEnvVariableExists.from_json(json) +# print the JSON string representation of the object +print(ImageConfigEnvVariableExists.to_json()) + +# convert the object into a dict +image_config_env_variable_exists_dict = image_config_env_variable_exists_instance.to_dict() +# create an instance of ImageConfigEnvVariableExists from a dict +image_config_env_variable_exists_from_dict = ImageConfigEnvVariableExists.from_dict(image_config_env_variable_exists_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigEnvVariableExistsExtra.md b/docs/reference/ImageConfigEnvVariableExistsExtra.md new file mode 100644 index 00000000..be3df4ef --- /dev/null +++ b/docs/reference/ImageConfigEnvVariableExistsExtra.md @@ -0,0 +1,29 @@ +# ImageConfigEnvVariableExistsExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **str** | | + +## Example + +```python +from sysdig_client.models.image_config_env_variable_exists_extra import ImageConfigEnvVariableExistsExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigEnvVariableExistsExtra from a JSON string +image_config_env_variable_exists_extra_instance = ImageConfigEnvVariableExistsExtra.from_json(json) +# print the JSON string representation of the object +print(ImageConfigEnvVariableExistsExtra.to_json()) + +# convert the object into a dict +image_config_env_variable_exists_extra_dict = image_config_env_variable_exists_extra_instance.to_dict() +# create an instance of ImageConfigEnvVariableExistsExtra from a dict +image_config_env_variable_exists_extra_from_dict = ImageConfigEnvVariableExistsExtra.from_dict(image_config_env_variable_exists_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigEnvVariableNotExists.md b/docs/reference/ImageConfigEnvVariableNotExists.md new file mode 100644 index 00000000..a3170f2c --- /dev/null +++ b/docs/reference/ImageConfigEnvVariableNotExists.md @@ -0,0 +1,31 @@ +# ImageConfigEnvVariableNotExists + +Predicate expressing \"the container does not have the specified environment variable\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigEnvVariableExistsExtra**](ImageConfigEnvVariableExistsExtra.md) | | + +## Example + +```python +from sysdig_client.models.image_config_env_variable_not_exists import ImageConfigEnvVariableNotExists + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigEnvVariableNotExists from a JSON string +image_config_env_variable_not_exists_instance = ImageConfigEnvVariableNotExists.from_json(json) +# print the JSON string representation of the object +print(ImageConfigEnvVariableNotExists.to_json()) + +# convert the object into a dict +image_config_env_variable_not_exists_dict = image_config_env_variable_not_exists_instance.to_dict() +# create an instance of ImageConfigEnvVariableNotExists from a dict +image_config_env_variable_not_exists_from_dict = ImageConfigEnvVariableNotExists.from_dict(image_config_env_variable_not_exists_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigFailure.md b/docs/reference/ImageConfigFailure.md new file mode 100644 index 00000000..87694587 --- /dev/null +++ b/docs/reference/ImageConfigFailure.md @@ -0,0 +1,34 @@ +# ImageConfigFailure + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**description** | **str** | image configuration failure description | [optional] +**remediation** | **str** | image configuration failure remediation | +**arguments** | **object** | | +**package_ref** | **str** | reference to the affected package | [optional] +**vulnerability_ref** | **str** | reference to the vulnerability | [optional] +**risk_accept_refs** | **List[str]** | list of accepted risks for the failure | [optional] + +## Example + +```python +from sysdig_client.models.image_config_failure import ImageConfigFailure + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigFailure from a JSON string +image_config_failure_instance = ImageConfigFailure.from_json(json) +# print the JSON string representation of the object +print(ImageConfigFailure.to_json()) + +# convert the object into a dict +image_config_failure_dict = image_config_failure_instance.to_dict() +# create an instance of ImageConfigFailure from a dict +image_config_failure_from_dict = ImageConfigFailure.from_dict(image_config_failure_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigInstructionIsPkgManager.md b/docs/reference/ImageConfigInstructionIsPkgManager.md new file mode 100644 index 00000000..92e4034a --- /dev/null +++ b/docs/reference/ImageConfigInstructionIsPkgManager.md @@ -0,0 +1,30 @@ +# ImageConfigInstructionIsPkgManager + +Predicate expressing \"the image history contains a package manager command (eg. apk, npm, rpm, etc)\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.image_config_instruction_is_pkg_manager import ImageConfigInstructionIsPkgManager + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigInstructionIsPkgManager from a JSON string +image_config_instruction_is_pkg_manager_instance = ImageConfigInstructionIsPkgManager.from_json(json) +# print the JSON string representation of the object +print(ImageConfigInstructionIsPkgManager.to_json()) + +# convert the object into a dict +image_config_instruction_is_pkg_manager_dict = image_config_instruction_is_pkg_manager_instance.to_dict() +# create an instance of ImageConfigInstructionIsPkgManager from a dict +image_config_instruction_is_pkg_manager_from_dict = ImageConfigInstructionIsPkgManager.from_dict(image_config_instruction_is_pkg_manager_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigInstructionNotRecommended.md b/docs/reference/ImageConfigInstructionNotRecommended.md new file mode 100644 index 00000000..c8606dc7 --- /dev/null +++ b/docs/reference/ImageConfigInstructionNotRecommended.md @@ -0,0 +1,30 @@ +# ImageConfigInstructionNotRecommended + +Predicate expressing \"the image history contains not recommended instruction (ADD, ...)\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.image_config_instruction_not_recommended import ImageConfigInstructionNotRecommended + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigInstructionNotRecommended from a JSON string +image_config_instruction_not_recommended_instance = ImageConfigInstructionNotRecommended.from_json(json) +# print the JSON string representation of the object +print(ImageConfigInstructionNotRecommended.to_json()) + +# convert the object into a dict +image_config_instruction_not_recommended_dict = image_config_instruction_not_recommended_instance.to_dict() +# create an instance of ImageConfigInstructionNotRecommended from a dict +image_config_instruction_not_recommended_from_dict = ImageConfigInstructionNotRecommended.from_dict(image_config_instruction_not_recommended_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigLabelExists.md b/docs/reference/ImageConfigLabelExists.md new file mode 100644 index 00000000..4f4c4dfa --- /dev/null +++ b/docs/reference/ImageConfigLabelExists.md @@ -0,0 +1,31 @@ +# ImageConfigLabelExists + +Predicate expressing \"the image has the specified label\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigLabelExistsExtra**](ImageConfigLabelExistsExtra.md) | | + +## Example + +```python +from sysdig_client.models.image_config_label_exists import ImageConfigLabelExists + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigLabelExists from a JSON string +image_config_label_exists_instance = ImageConfigLabelExists.from_json(json) +# print the JSON string representation of the object +print(ImageConfigLabelExists.to_json()) + +# convert the object into a dict +image_config_label_exists_dict = image_config_label_exists_instance.to_dict() +# create an instance of ImageConfigLabelExists from a dict +image_config_label_exists_from_dict = ImageConfigLabelExists.from_dict(image_config_label_exists_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigLabelExistsExtra.md b/docs/reference/ImageConfigLabelExistsExtra.md new file mode 100644 index 00000000..8a944840 --- /dev/null +++ b/docs/reference/ImageConfigLabelExistsExtra.md @@ -0,0 +1,29 @@ +# ImageConfigLabelExistsExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **str** | | + +## Example + +```python +from sysdig_client.models.image_config_label_exists_extra import ImageConfigLabelExistsExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigLabelExistsExtra from a JSON string +image_config_label_exists_extra_instance = ImageConfigLabelExistsExtra.from_json(json) +# print the JSON string representation of the object +print(ImageConfigLabelExistsExtra.to_json()) + +# convert the object into a dict +image_config_label_exists_extra_dict = image_config_label_exists_extra_instance.to_dict() +# create an instance of ImageConfigLabelExistsExtra from a dict +image_config_label_exists_extra_from_dict = ImageConfigLabelExistsExtra.from_dict(image_config_label_exists_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigLabelNotContains.md b/docs/reference/ImageConfigLabelNotContains.md new file mode 100644 index 00000000..ef254c52 --- /dev/null +++ b/docs/reference/ImageConfigLabelNotContains.md @@ -0,0 +1,31 @@ +# ImageConfigLabelNotContains + +Predicate expressing \"the image has the specified label and value\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigLabelNotContainsExtra**](ImageConfigLabelNotContainsExtra.md) | | + +## Example + +```python +from sysdig_client.models.image_config_label_not_contains import ImageConfigLabelNotContains + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigLabelNotContains from a JSON string +image_config_label_not_contains_instance = ImageConfigLabelNotContains.from_json(json) +# print the JSON string representation of the object +print(ImageConfigLabelNotContains.to_json()) + +# convert the object into a dict +image_config_label_not_contains_dict = image_config_label_not_contains_instance.to_dict() +# create an instance of ImageConfigLabelNotContains from a dict +image_config_label_not_contains_from_dict = ImageConfigLabelNotContains.from_dict(image_config_label_not_contains_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigLabelNotContainsExtra.md b/docs/reference/ImageConfigLabelNotContainsExtra.md new file mode 100644 index 00000000..1677fd77 --- /dev/null +++ b/docs/reference/ImageConfigLabelNotContainsExtra.md @@ -0,0 +1,30 @@ +# ImageConfigLabelNotContainsExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **str** | | +**value** | **str** | | + +## Example + +```python +from sysdig_client.models.image_config_label_not_contains_extra import ImageConfigLabelNotContainsExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigLabelNotContainsExtra from a JSON string +image_config_label_not_contains_extra_instance = ImageConfigLabelNotContainsExtra.from_json(json) +# print the JSON string representation of the object +print(ImageConfigLabelNotContainsExtra.to_json()) + +# convert the object into a dict +image_config_label_not_contains_extra_dict = image_config_label_not_contains_extra_instance.to_dict() +# create an instance of ImageConfigLabelNotContainsExtra from a dict +image_config_label_not_contains_extra_from_dict = ImageConfigLabelNotContainsExtra.from_dict(image_config_label_not_contains_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigLabelNotExists.md b/docs/reference/ImageConfigLabelNotExists.md new file mode 100644 index 00000000..d1b9804f --- /dev/null +++ b/docs/reference/ImageConfigLabelNotExists.md @@ -0,0 +1,31 @@ +# ImageConfigLabelNotExists + +Predicate expressing \"the image does not have the specified label\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigLabelNotExistsExtra**](ImageConfigLabelNotExistsExtra.md) | | + +## Example + +```python +from sysdig_client.models.image_config_label_not_exists import ImageConfigLabelNotExists + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigLabelNotExists from a JSON string +image_config_label_not_exists_instance = ImageConfigLabelNotExists.from_json(json) +# print the JSON string representation of the object +print(ImageConfigLabelNotExists.to_json()) + +# convert the object into a dict +image_config_label_not_exists_dict = image_config_label_not_exists_instance.to_dict() +# create an instance of ImageConfigLabelNotExists from a dict +image_config_label_not_exists_from_dict = ImageConfigLabelNotExists.from_dict(image_config_label_not_exists_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigLabelNotExistsExtra.md b/docs/reference/ImageConfigLabelNotExistsExtra.md new file mode 100644 index 00000000..fa0e3b63 --- /dev/null +++ b/docs/reference/ImageConfigLabelNotExistsExtra.md @@ -0,0 +1,29 @@ +# ImageConfigLabelNotExistsExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **str** | | + +## Example + +```python +from sysdig_client.models.image_config_label_not_exists_extra import ImageConfigLabelNotExistsExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigLabelNotExistsExtra from a JSON string +image_config_label_not_exists_extra_instance = ImageConfigLabelNotExistsExtra.from_json(json) +# print the JSON string representation of the object +print(ImageConfigLabelNotExistsExtra.to_json()) + +# convert the object into a dict +image_config_label_not_exists_extra_dict = image_config_label_not_exists_extra_instance.to_dict() +# create an instance of ImageConfigLabelNotExistsExtra from a dict +image_config_label_not_exists_extra_from_dict = ImageConfigLabelNotExistsExtra.from_dict(image_config_label_not_exists_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageConfigSensitiveInformationAndSecrets.md b/docs/reference/ImageConfigSensitiveInformationAndSecrets.md new file mode 100644 index 00000000..fb030f9d --- /dev/null +++ b/docs/reference/ImageConfigSensitiveInformationAndSecrets.md @@ -0,0 +1,30 @@ +# ImageConfigSensitiveInformationAndSecrets + +Predicate expressing \"the image contains sensitive information and secrets\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.image_config_sensitive_information_and_secrets import ImageConfigSensitiveInformationAndSecrets + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageConfigSensitiveInformationAndSecrets from a JSON string +image_config_sensitive_information_and_secrets_instance = ImageConfigSensitiveInformationAndSecrets.from_json(json) +# print the JSON string representation of the object +print(ImageConfigSensitiveInformationAndSecrets.to_json()) + +# convert the object into a dict +image_config_sensitive_information_and_secrets_dict = image_config_sensitive_information_and_secrets_instance.to_dict() +# create an instance of ImageConfigSensitiveInformationAndSecrets from a dict +image_config_sensitive_information_and_secrets_from_dict = ImageConfigSensitiveInformationAndSecrets.from_dict(image_config_sensitive_information_and_secrets_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageMetadata.md b/docs/reference/ImageMetadata.md new file mode 100644 index 00000000..a0a111e3 --- /dev/null +++ b/docs/reference/ImageMetadata.md @@ -0,0 +1,38 @@ +# ImageMetadata + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**pull_string** | **str** | image pull string | +**image_id** | **str** | image id | +**digest** | **str** | image digest | [optional] +**base_os** | **str** | image base os | +**size** | **int** | image size in bytes | +**os** | **str** | image os | +**architecture** | **str** | image architecture | [optional] +**labels** | **object** | image labels | [optional] +**author** | **str** | image author | [optional] +**created_at** | **str** | datetime of creation | + +## Example + +```python +from sysdig_client.models.image_metadata import ImageMetadata + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageMetadata from a JSON string +image_metadata_instance = ImageMetadata.from_json(json) +# print the JSON string representation of the object +print(ImageMetadata.to_json()) + +# convert the object into a dict +image_metadata_dict = image_metadata_instance.to_dict() +# create an instance of ImageMetadata from a dict +image_metadata_from_dict = ImageMetadata.from_dict(image_metadata_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageName.md b/docs/reference/ImageName.md new file mode 100644 index 00000000..1cfe823e --- /dev/null +++ b/docs/reference/ImageName.md @@ -0,0 +1,30 @@ +# ImageName + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.image_name import ImageName + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageName from a JSON string +image_name_instance = ImageName.from_json(json) +# print the JSON string representation of the object +print(ImageName.to_json()) + +# convert the object into a dict +image_name_dict = image_name_instance.to_dict() +# create an instance of ImageName from a dict +image_name_from_dict = ImageName.from_dict(image_name_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageNameContains.md b/docs/reference/ImageNameContains.md new file mode 100644 index 00000000..47d5cb88 --- /dev/null +++ b/docs/reference/ImageNameContains.md @@ -0,0 +1,30 @@ +# ImageNameContains + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.image_name_contains import ImageNameContains + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageNameContains from a JSON string +image_name_contains_instance = ImageNameContains.from_json(json) +# print the JSON string representation of the object +print(ImageNameContains.to_json()) + +# convert the object into a dict +image_name_contains_dict = image_name_contains_instance.to_dict() +# create an instance of ImageNameContains from a dict +image_name_contains_from_dict = ImageNameContains.from_dict(image_name_contains_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImagePrefix.md b/docs/reference/ImagePrefix.md new file mode 100644 index 00000000..9dda0116 --- /dev/null +++ b/docs/reference/ImagePrefix.md @@ -0,0 +1,30 @@ +# ImagePrefix + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.image_prefix import ImagePrefix + +# TODO update the JSON string below +json = "{}" +# create an instance of ImagePrefix from a JSON string +image_prefix_instance = ImagePrefix.from_json(json) +# print the JSON string representation of the object +print(ImagePrefix.to_json()) + +# convert the object into a dict +image_prefix_dict = image_prefix_instance.to_dict() +# create an instance of ImagePrefix from a dict +image_prefix_from_dict = ImagePrefix.from_dict(image_prefix_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ImageSuffix.md b/docs/reference/ImageSuffix.md new file mode 100644 index 00000000..233440c0 --- /dev/null +++ b/docs/reference/ImageSuffix.md @@ -0,0 +1,30 @@ +# ImageSuffix + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.image_suffix import ImageSuffix + +# TODO update the JSON string below +json = "{}" +# create an instance of ImageSuffix from a JSON string +image_suffix_instance = ImageSuffix.from_json(json) +# print the JSON string representation of the object +print(ImageSuffix.to_json()) + +# convert the object into a dict +image_suffix_dict = image_suffix_instance.to_dict() +# create an instance of ImageSuffix from a dict +image_suffix_from_dict = ImageSuffix.from_dict(image_suffix_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InhibitionRuleResponseV1.md b/docs/reference/InhibitionRuleResponseV1.md new file mode 100644 index 00000000..f57e7b62 --- /dev/null +++ b/docs/reference/InhibitionRuleResponseV1.md @@ -0,0 +1,40 @@ +# InhibitionRuleResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | Unique ID of the resource. | [optional] +**version** | **int** | The current version of the resource. | [optional] +**created_on** | **datetime** | Creation date. | [optional] +**modified_on** | **datetime** | Last modification date. | [optional] +**customer_id** | **int** | ID of customer that owns the inhibition rule. | [optional] +**team_id** | **int** | ID of team that owns the inhibition rule. | [optional] +**is_enabled** | **bool** | Indicates if the inhibition rule is enabled or not. | [optional] [default to True] +**name** | **str** | Name of the inhibition rule. | [optional] +**description** | **str** | Description of the inhibition rule. | [optional] +**source_matchers** | [**List[LabelMatcherV1]**](LabelMatcherV1.md) | List of source matchers for which one or more alerts have to exist for the inhibition to take effect. | [optional] +**target_matchers** | [**List[LabelMatcherV1]**](LabelMatcherV1.md) | List of target matchers that have to be fulfilled by the target alerts to be muted. | [optional] +**equal** | **List[str]** | List of labels that must have an equal value in the source and target alert for the inhibition to take effect. | [optional] + +## Example + +```python +from sysdig_client.models.inhibition_rule_response_v1 import InhibitionRuleResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of InhibitionRuleResponseV1 from a JSON string +inhibition_rule_response_v1_instance = InhibitionRuleResponseV1.from_json(json) +# print the JSON string representation of the object +print(InhibitionRuleResponseV1.to_json()) + +# convert the object into a dict +inhibition_rule_response_v1_dict = inhibition_rule_response_v1_instance.to_dict() +# create an instance of InhibitionRuleResponseV1 from a dict +inhibition_rule_response_v1_from_dict = InhibitionRuleResponseV1.from_dict(inhibition_rule_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InhibitionRulesApi.md b/docs/reference/InhibitionRulesApi.md new file mode 100644 index 00000000..72fa4bd7 --- /dev/null +++ b/docs/reference/InhibitionRulesApi.md @@ -0,0 +1,450 @@ +# sysdig_client.InhibitionRulesApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_inhibition_rule**](InhibitionRulesApi.md#create_inhibition_rule) | **POST** /monitor/alerts/v1/inhibition-rules | Create Inhibition Rule +[**delete_inhibition_rule_by_id**](InhibitionRulesApi.md#delete_inhibition_rule_by_id) | **DELETE** /monitor/alerts/v1/inhibition-rules/{inhibitionRuleId} | Delete Inhibition Rule +[**get_inhibition_rule_by_id**](InhibitionRulesApi.md#get_inhibition_rule_by_id) | **GET** /monitor/alerts/v1/inhibition-rules/{inhibitionRuleId} | Get Inhibition Rule +[**get_inhibition_rules**](InhibitionRulesApi.md#get_inhibition_rules) | **GET** /monitor/alerts/v1/inhibition-rules | List Inhibition Rules +[**update_inhibition_rule**](InhibitionRulesApi.md#update_inhibition_rule) | **PUT** /monitor/alerts/v1/inhibition-rules/{inhibitionRuleId} | Update Inhibition Rule + + +# **create_inhibition_rule** +> InhibitionRuleResponseV1 create_inhibition_rule(create_inhibition_rule_request_v1) + +Create Inhibition Rule + +Create an inhibition rule.\ +\ +**Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_inhibition_rule_request_v1 import CreateInhibitionRuleRequestV1 +from sysdig_client.models.inhibition_rule_response_v1 import InhibitionRuleResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.InhibitionRulesApi(api_client) + create_inhibition_rule_request_v1 = sysdig_client.CreateInhibitionRuleRequestV1() # CreateInhibitionRuleRequestV1 | The inhibition rule to be created. + + try: + # Create Inhibition Rule + api_response = api_instance.create_inhibition_rule(create_inhibition_rule_request_v1) + print("The response of InhibitionRulesApi->create_inhibition_rule:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling InhibitionRulesApi->create_inhibition_rule: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_inhibition_rule_request_v1** | [**CreateInhibitionRuleRequestV1**](CreateInhibitionRuleRequestV1.md)| The inhibition rule to be created. | + +### Return type + +[**InhibitionRuleResponseV1**](InhibitionRuleResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Inhibition rule created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_inhibition_rule_by_id** +> delete_inhibition_rule_by_id(inhibition_rule_id) + +Delete Inhibition Rule + +Delete an inhibition rule by its ID.\ +\ +**Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.InhibitionRulesApi(api_client) + inhibition_rule_id = 56 # int | The inhibition rule ID. + + try: + # Delete Inhibition Rule + api_instance.delete_inhibition_rule_by_id(inhibition_rule_id) + except Exception as e: + print("Exception when calling InhibitionRulesApi->delete_inhibition_rule_by_id: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **inhibition_rule_id** | **int**| The inhibition rule ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Inhibition rule deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_inhibition_rule_by_id** +> InhibitionRuleResponseV1 get_inhibition_rule_by_id(inhibition_rule_id) + +Get Inhibition Rule + +Retrieve an inhibition rule by ID.\ +\ +**Required permissions:** _inhibition-rules.read_ or _alerts.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.inhibition_rule_response_v1 import InhibitionRuleResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.InhibitionRulesApi(api_client) + inhibition_rule_id = 56 # int | The inhibition rule ID. + + try: + # Get Inhibition Rule + api_response = api_instance.get_inhibition_rule_by_id(inhibition_rule_id) + print("The response of InhibitionRulesApi->get_inhibition_rule_by_id:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling InhibitionRulesApi->get_inhibition_rule_by_id: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **inhibition_rule_id** | **int**| The inhibition rule ID. | + +### Return type + +[**InhibitionRuleResponseV1**](InhibitionRuleResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Inhibition rule found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_inhibition_rules** +> GetInhibitionRulesPaginatedResponseV1 get_inhibition_rules(offset=offset, limit=limit) + +List Inhibition Rules + +Retrieve the list of inhibition rules.\ +\ +**Required permissions:** _inhibition-rules.read_ or _alerts.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_inhibition_rules_paginated_response_v1 import GetInhibitionRulesPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.InhibitionRulesApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + + try: + # List Inhibition Rules + api_response = api_instance.get_inhibition_rules(offset=offset, limit=limit) + print("The response of InhibitionRulesApi->get_inhibition_rules:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling InhibitionRulesApi->get_inhibition_rules: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + +### Return type + +[**GetInhibitionRulesPaginatedResponseV1**](GetInhibitionRulesPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of inhibition rules. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_inhibition_rule** +> InhibitionRuleResponseV1 update_inhibition_rule(inhibition_rule_id, update_inhibition_rule_request_v1) + +Update Inhibition Rule + +Update an inhibition rule.\ +\ +**Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.inhibition_rule_response_v1 import InhibitionRuleResponseV1 +from sysdig_client.models.update_inhibition_rule_request_v1 import UpdateInhibitionRuleRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.InhibitionRulesApi(api_client) + inhibition_rule_id = 56 # int | The inhibition rule ID. + update_inhibition_rule_request_v1 = sysdig_client.UpdateInhibitionRuleRequestV1() # UpdateInhibitionRuleRequestV1 | The new version of the inhibition rule. + + try: + # Update Inhibition Rule + api_response = api_instance.update_inhibition_rule(inhibition_rule_id, update_inhibition_rule_request_v1) + print("The response of InhibitionRulesApi->update_inhibition_rule:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling InhibitionRulesApi->update_inhibition_rule: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **inhibition_rule_id** | **int**| The inhibition rule ID. | + **update_inhibition_rule_request_v1** | [**UpdateInhibitionRuleRequestV1**](UpdateInhibitionRuleRequestV1.md)| The new version of the inhibition rule. | + +### Return type + +[**InhibitionRuleResponseV1**](InhibitionRuleResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Inhibition rule updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/IntegrationChannel.md b/docs/reference/IntegrationChannel.md new file mode 100644 index 00000000..1d5b6625 --- /dev/null +++ b/docs/reference/IntegrationChannel.md @@ -0,0 +1,17 @@ +# IntegrationChannel + +Type of data to forward + +## Enum + +* `SECURE_EVENTS_POLICIES` (value: `'SECURE_EVENTS_POLICIES'`) + +* `ACTIVITY_AUDIT` (value: `'ACTIVITY_AUDIT'`) + +* `MONITOR_EVENTS` (value: `'MONITOR_EVENTS'`) + +* `PLATFORM_AUDIT` (value: `'PLATFORM_AUDIT'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IntegrationChannelsResponse.md b/docs/reference/IntegrationChannelsResponse.md new file mode 100644 index 00000000..a80bdf1c --- /dev/null +++ b/docs/reference/IntegrationChannelsResponse.md @@ -0,0 +1,30 @@ +# IntegrationChannelsResponse + +Integration Channels Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | + +## Example + +```python +from sysdig_client.models.integration_channels_response import IntegrationChannelsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of IntegrationChannelsResponse from a JSON string +integration_channels_response_instance = IntegrationChannelsResponse.from_json(json) +# print the JSON string representation of the object +print(IntegrationChannelsResponse.to_json()) + +# convert the object into a dict +integration_channels_response_dict = integration_channels_response_instance.to_dict() +# create an instance of IntegrationChannelsResponse from a dict +integration_channels_response_from_dict = IntegrationChannelsResponse.from_dict(integration_channels_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IntegrationResponse.md b/docs/reference/IntegrationResponse.md new file mode 100644 index 00000000..30959e6f --- /dev/null +++ b/docs/reference/IntegrationResponse.md @@ -0,0 +1,35 @@ +# IntegrationResponse + +Get Integration Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | +**id** | **int** | The ID of the integration | +**connection_info** | [**BaseConnectionInfoWebhook**](BaseConnectionInfoWebhook.md) | | + +## Example + +```python +from sysdig_client.models.integration_response import IntegrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of IntegrationResponse from a JSON string +integration_response_instance = IntegrationResponse.from_json(json) +# print the JSON string representation of the object +print(IntegrationResponse.to_json()) + +# convert the object into a dict +integration_response_dict = integration_response_instance.to_dict() +# create an instance of IntegrationResponse from a dict +integration_response_from_dict = IntegrationResponse.from_dict(integration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IntegrationResponseV1.md b/docs/reference/IntegrationResponseV1.md new file mode 100644 index 00000000..f0d98cb1 --- /dev/null +++ b/docs/reference/IntegrationResponseV1.md @@ -0,0 +1,46 @@ +# IntegrationResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | Integration id. | +**name** | **str** | Integration name. | +**created_at** | **datetime** | Integration creation date. | +**modified_at** | **datetime** | Integration modification date. | +**deleted_at** | **datetime** | Integration deletion date. | [optional] +**customer_id** | **int** | Customer identifier for which the integration was created. | +**is_enabled** | **bool** | Integration enabled status. | +**is_valid** | **bool** | Integration valid status. | +**is_all_teams** | **bool** | **True** if the integration is enabled for all teams, **false** otherwise and the *teamIds* for which is accessible will be defined. | +**team_ids** | **List[int]** | The list of internal Sysdig team ids that the integration is enabled for. | [optional] +**jira_project_id** | **str** | Jira project id. | +**jira_project_name** | **str** | Jira project name. | [optional] +**jira_url** | **str** | Customer's Jira URL. | +**jira_email** | **str** | User's Jira email. | +**jira_assignee** | **str** | The default assignee account id for this integration. | [optional] +**jira_labels** | **List[str]** | The list of labels available for this integration. | [optional] +**parent_issue_type** | [**IssueTypeResponseV1**](IssueTypeResponseV1.md) | Parent issue type for the integration. | [optional] +**child_issue_type** | [**IssueTypeResponseV1**](IssueTypeResponseV1.md) | Child issue type for the integration. | [optional] + +## Example + +```python +from sysdig_client.models.integration_response_v1 import IntegrationResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IntegrationResponseV1 from a JSON string +integration_response_v1_instance = IntegrationResponseV1.from_json(json) +# print the JSON string representation of the object +print(IntegrationResponseV1.to_json()) + +# convert the object into a dict +integration_response_v1_dict = integration_response_v1_instance.to_dict() +# create an instance of IntegrationResponseV1 from a dict +integration_response_v1_from_dict = IntegrationResponseV1.from_dict(integration_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IntegrationType.md b/docs/reference/IntegrationType.md new file mode 100644 index 00000000..203a9499 --- /dev/null +++ b/docs/reference/IntegrationType.md @@ -0,0 +1,33 @@ +# IntegrationType + +The platform to which data will be forwarded + +## Enum + +* `SYSLOG` (value: `'SYSLOG'`) + +* `SPLUNK` (value: `'SPLUNK'`) + +* `MCM` (value: `'MCM'`) + +* `QRADAR` (value: `'QRADAR'`) + +* `WEBHOOK` (value: `'WEBHOOK'`) + +* `KAFKA` (value: `'KAFKA'`) + +* `CHRONICLE` (value: `'CHRONICLE'`) + +* `SENTINEL` (value: `'SENTINEL'`) + +* `SQS` (value: `'SQS'`) + +* `PUBSUB` (value: `'PUBSUB'`) + +* `SCC` (value: `'SCC'`) + +* `ELASTIC` (value: `'ELASTIC'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IntegrationTypesResponse.md b/docs/reference/IntegrationTypesResponse.md new file mode 100644 index 00000000..2178a3fb --- /dev/null +++ b/docs/reference/IntegrationTypesResponse.md @@ -0,0 +1,30 @@ +# IntegrationTypesResponse + +The list of supported integration types + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[IntegrationType]**](IntegrationType.md) | | + +## Example + +```python +from sysdig_client.models.integration_types_response import IntegrationTypesResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of IntegrationTypesResponse from a JSON string +integration_types_response_instance = IntegrationTypesResponse.from_json(json) +# print the JSON string representation of the object +print(IntegrationTypesResponse.to_json()) + +# convert the object into a dict +integration_types_response_dict = integration_types_response_instance.to_dict() +# create an instance of IntegrationTypesResponse from a dict +integration_types_response_from_dict = IntegrationTypesResponse.from_dict(integration_types_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InvalidCertificate.md b/docs/reference/InvalidCertificate.md new file mode 100644 index 00000000..6dcb1fec --- /dev/null +++ b/docs/reference/InvalidCertificate.md @@ -0,0 +1,31 @@ +# InvalidCertificate + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**message** | **str** | | +**details** | **List[object]** | | [optional] + +## Example + +```python +from sysdig_client.models.invalid_certificate import InvalidCertificate + +# TODO update the JSON string below +json = "{}" +# create an instance of InvalidCertificate from a JSON string +invalid_certificate_instance = InvalidCertificate.from_json(json) +# print the JSON string representation of the object +print(InvalidCertificate.to_json()) + +# convert the object into a dict +invalid_certificate_dict = invalid_certificate_instance.to_dict() +# create an instance of InvalidCertificate from a dict +invalid_certificate_from_dict = InvalidCertificate.from_dict(invalid_certificate_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InvalidRequest.md b/docs/reference/InvalidRequest.md new file mode 100644 index 00000000..2094d98e --- /dev/null +++ b/docs/reference/InvalidRequest.md @@ -0,0 +1,31 @@ +# InvalidRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**message** | **str** | | +**details** | **List[object]** | | [optional] + +## Example + +```python +from sysdig_client.models.invalid_request import InvalidRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of InvalidRequest from a JSON string +invalid_request_instance = InvalidRequest.from_json(json) +# print the JSON string representation of the object +print(InvalidRequest.to_json()) + +# convert the object into a dict +invalid_request_dict = invalid_request_instance.to_dict() +# create an instance of InvalidRequest from a dict +invalid_request_from_dict = InvalidRequest.from_dict(invalid_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InvalidRequest1.md b/docs/reference/InvalidRequest1.md new file mode 100644 index 00000000..92e377b5 --- /dev/null +++ b/docs/reference/InvalidRequest1.md @@ -0,0 +1,31 @@ +# InvalidRequest1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**message** | **str** | | +**details** | **List[object]** | | [optional] + +## Example + +```python +from sysdig_client.models.invalid_request1 import InvalidRequest1 + +# TODO update the JSON string below +json = "{}" +# create an instance of InvalidRequest1 from a JSON string +invalid_request1_instance = InvalidRequest1.from_json(json) +# print the JSON string representation of the object +print(InvalidRequest1.to_json()) + +# convert the object into a dict +invalid_request1_dict = invalid_request1_instance.to_dict() +# create an instance of InvalidRequest1 from a dict +invalid_request1_from_dict = InvalidRequest1.from_dict(invalid_request1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InventoryApi.md b/docs/reference/InventoryApi.md new file mode 100644 index 00000000..cd375bdc --- /dev/null +++ b/docs/reference/InventoryApi.md @@ -0,0 +1,182 @@ +# sysdig_client.InventoryApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_resource**](InventoryApi.md#get_resource) | **GET** /secure/inventory/v1/resources/{hash} | Get Resource +[**get_resources**](InventoryApi.md#get_resources) | **GET** /secure/inventory/v1/resources | List Resources + + +# **get_resource** +> InventoryResourceExtended get_resource(hash) + +Get Resource + +Retrieve an Inventory Resource by its unique hash value. + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.inventory_resource_extended import InventoryResourceExtended +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.InventoryApi(api_client) + hash = 'hash_example' # str | resource hash + + try: + # Get Resource + api_response = api_instance.get_resource(hash) + print("The response of InventoryApi->get_resource:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling InventoryApi->get_resource: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **hash** | **str**| resource hash | + +### Return type + +[**InventoryResourceExtended**](InventoryResourceExtended.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Successfully returned an Inventory v1 resource. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_resources** +> InventoryResourceResponse get_resources(filter=filter, page_number=page_number, page_size=page_size, with_enriched_containers=with_enriched_containers) + +List Resources + +Search for Inventory Resources based on the given filter. + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.inventory_resource_response import InventoryResourceResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.InventoryApi(api_client) + filter = 'platform = \"AWS\" and policy.failed in (\"CIS Amazon Web Services Foundations Benchmark\")' # str | Query language expression for filtering results. Operators: - `and` and `not` logical operators - `=`, `!=` - `in` - `contains` and `startsWith` to check partial values of attributes - `exists` to check if a field exists and not empty List of supported fields: - `account` - Type: string - Example: `account in (\"285211435247\")` - Description: DEPRECATED. The account that will be included in the results. - `accountName` - Type: string - Example: `accountName in (\"some-account-name\")` - Description: The account name that will be included in the results. - `accountId` - Type: string - Example: `accountId in (\"345224567\")` - Description: The account id that will be included in the results. - `cluster` - Type: string - Example: `cluster in (\"cluster1\")` - Description: The kubernetes cluster that will be included in the results. - `externalDNS` - Type: string - Example: `externalDNS in (\"ec2-102-34-15-23.compute-1.amazonaws.com\")` - Description: The external DNS that will be included in the results. - `distribution` - Type: string - Example: `distribution in (\"gke\", \"vanilla\")` - Description: The kubernetes distribution that will be included in the results. - `integrationName` - Type: string - Example: `integrationName = \"github-integration\"` - Description: The name of the integration an IaC resource belongs to. - `labels` - Type: string - Example: `not labels exists` - Description: The resource labels that will be included in the results. - `location` - Type: string - Example: `location starts with \"https://bitbucket.org/organizations-workspace/teams-repository/src\"` - Description: The web address of an IaC Manifest. - `name` - Type: string - Example: `name starts with \"acl\"` - Description: The names that will be included in the results. - `namespace` - Type: string - Example: `namespace contains \"production\"` - Description: The namespace that will be included in the results. - `nodeType` - Type: string - Example: `nodeType=\"Worker\"` - Description: The nodeType that will be included in the results. - `osName` - Type: string - Example: `osName != \"linux\"` - Description: The operating system that will be included in the results. - `osImage` - Type: string - Example: `osImage = \"Ubuntu 18.04.6 LTS\"` - Description: The operating system image that will be included in the results. - `organization` - Type: string - Example: `organization = \"s-xqe92dwe61\"` - Description: The organization that will be included in the results. - `platform` - Type: string - Example: `platform = \"AWS\"` - Description: The platform that will be included in the results. - `control.accepted` - Type: boolean - Example: `control.accepted exists` - Description: Include (or Exclude) only resources with accepted results. Supported operators: exists and not exists. - `policy` - Type: string - Example: `policy in (\"CIS Docker Benchmark\")` - Description: Include resources that applied the selected policies. Supported operators: in, not in, exists, not exists. - `control.severity` - Type: string - Example: `control.severity in (\"High\")` - Description: Include resources that have violated risks in the selected severities. Supported operators: in, not in. - `control.failed` - Type: string - Example: `control.failed in (\"/etc/default/docker owned by root:root\")` - Description: Include resources that have violated the selected risks. Supported operators: in, not in, exists, not exists. - `policy.failed` - Type: string - Example: `policy.failed in (\"PCI DSS (Payment Card Industry Data Security Standard) v3.2.1\")` - Description: Include resources that failed the selected policies. Supported operators: in, not in, exists, not exists. - `policy.passed` in (\"CIS Kubernetes V1.20 Benchmark\") - Type: string - Example: `policy.passed in (\"CIS Kubernetes V1.20 Benchmark\")` - Description: Include resources that passed the selected policies. Supported operators: in, not in, exists, not exists. - `project` - Type: string - Example: `project = \"project1\"` - Description: DEPRECATED. The project that will be included in the results. - `projectName` - Type: string - Example: `projectName = \"project123\"` - Description: The project name that will be included in the results. - `projectId` - Type: string - Example: `projectId = \"1235495521\"` - Description: The project id that will be included in the results. - `region` - Type: string - Example: `region in (\"europe-west1\")` - Description: The regions that will be included in the results. - `repository` - Type: string - Example: `repository in (\"e2e-repo\")` - Description: The Repository an IaC resource belongs to. - `resourceOrigin` - Type: string - Example: `resourceOrigin = \"Code\"` - Description: Origin of the resource. Supported values: Code, Deployed. - `type` - Type: string - Example: `type = \"Account\"` - Description: The resource types that will be included in the results. - `subscription` - Type: string - Example: `subscription = \"Azure subscription 1\"` - Description: DEPRECATED. The Azure subscription that will be included in the results. - `subscriptionName` - Type: string - Example: `subscriptionName = \"subscription abc\"` - Description: The Azure subscription name that will be included in the results. - `subscriptionId` - Type: string - Example: `subscriptionId = \"568634664353\"` - Description: The Azure subscription id that will be included in the results. - `sourceType` - Type: string - Example: `sourceType = \"YAML\"` - Description: The source type of an IaC resource. Supported values: YAML, Kustomize, Terraform, Helm. - `version` - Type: string - Example: `version = \"1.1\"` - Description: OCP Cluster versions that will be included in the results. - `zone` - Type: string - Example: `zone in (\"zone1\")` - Description: The zones that will be included in the results. - `category` - Type: string - Example: `category in (\"Compute\", \"IAM\")` - Description: The category that will be included in the results. Supported operators: in, not in. - `isExposed` - Type: boolean - Example: `isExposed exists` - Description - Specifies whether the resource to return is exposed to the internet. Supported operators: exists and not exists. - `validatedExposure` - Type: boolean - Example: `validatedExposure exists` - Description - Specifies whether the resource to return is exposed to the internet and could be reach by our network exposure validator. Supported operators: exists and not exists. - `arn` - Type: string - Example: `arn in (\"arn:aws:ec2:eu-central-1:843232641625:instance/i-0c1dedd325e71138d\")` - Description - The AWS ARN of the resource. - `resourceId` - Type: string - Example: `resourceId = \"//compute.googleapis.com/projects/project1/global/routes/default-route-192ae83214caddd\"` - Description - The Azure or GCP Resource Identifier of the resource. - `container.name` - Type: string - Example: `container.name in (\"sysdig-container\")` - Description - Filters the resource by a container. - `architecture` - Type: string - Example: `architecture = \"arm64\"` - Description - Image architecture. - `baseOS` - Type: string - Example: `baseOS = \"debian 11.6\"` - Description - Image Base OS. - `digest` - Type: string - Example: `digest = \"sha256:21829f4f033ac2805aa43a412bcdf60e98eee4124d565a06dee184c97efff6091\"` - Description - Image Digest. - `imageId` - Type: string - Example: `imageId in (\"sha256:3768ff6176e29a35ce1354622977a1e5c013045cbc4f30754ef3459218be8ac\")` - Description - Image Id. - `os` - Type: string - Example: `os = \"linux\"` - Description - Image OS. - `container.imageName` - Type: string - Example: `container.imageName in (\"registry.k8s.io/kube-image:v1.2.4\")` - Description - Image Pullstring. - `image.registry` - Type: string - Example: `image.registry = \"quay.io\"` - Description - Image Registry. - `image.tag` - Type: string - Example: `image.tag in (\"tag1\")` - Description - Image tag. - `package.inUse` - Type: boolean - Example: `package.inUse exists` - Description - Package in use filter. Supported operators: exists and not exists. - `package.info` - Type: string - Example: `package.info in (\"github.com/golang/protobuf - v1.5.2\")` - Description - Filters by a package using the format [packge name] - [version]. - `package.path` - Type: string - Example: `package.path in (\"/app\")` - Description - Filters by package path. - `package.type` - Type: string - Example: `package.type in (\"Golang\")` - Description - Package type. - `vuln.cvssScore` - Type: string - Example: `vuln.cvssScore >= \"3\"` - Description - Filter by vulnerability CVSS. Supported operators: `=` and `>=`. - `vuln.hasExploit` - Type: boolean - Example: `vuln.hasExploit exists` - Description - Filters resources by the existence of vulnerabilities with exploits. Supported operators: exists and not exists. - `vuln.hasFix` - Type: boolean - Example: `vuln.hasFix exists` - Description - Filters resources by the existence of vulnerabilities with fixes. Supported operators: exists and not exists. - `vuln.name` - Type: string - Example: `vuln.name in (\"CVE-2023-0049\")` - Description - Filter by vulnerability name. - `vuln.severity` - Type: string - Example: `vuln.severity in (\"Critical\")` - Description - Filter by vulnerability severity. Supported operators: in, not in, exists and not exists. - `machineImage` - Type: string - Example: `machineImage = \"ami-0b22b359fdfabe1b5\"` - Description - Filter by host machine image. **Note**: Whenever you filter for values with special characters, ensure that you encode the values. If the special characters are \" or \\, use the escape character \\ and then encode the values. (optional) + page_number = 1 # int | Page number. Defaults to 1. (optional) + page_size = 20 # int | Page size. Defaults to 20. (optional) + with_enriched_containers = True # bool | If true then for kubernetes workload resources additional container information will be included. (optional) + + try: + # List Resources + api_response = api_instance.get_resources(filter=filter, page_number=page_number, page_size=page_size, with_enriched_containers=with_enriched_containers) + print("The response of InventoryApi->get_resources:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling InventoryApi->get_resources: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **filter** | **str**| Query language expression for filtering results. Operators: - `and` and `not` logical operators - `=`, `!=` - `in` - `contains` and `startsWith` to check partial values of attributes - `exists` to check if a field exists and not empty List of supported fields: - `account` - Type: string - Example: `account in (\"285211435247\")` - Description: DEPRECATED. The account that will be included in the results. - `accountName` - Type: string - Example: `accountName in (\"some-account-name\")` - Description: The account name that will be included in the results. - `accountId` - Type: string - Example: `accountId in (\"345224567\")` - Description: The account id that will be included in the results. - `cluster` - Type: string - Example: `cluster in (\"cluster1\")` - Description: The kubernetes cluster that will be included in the results. - `externalDNS` - Type: string - Example: `externalDNS in (\"ec2-102-34-15-23.compute-1.amazonaws.com\")` - Description: The external DNS that will be included in the results. - `distribution` - Type: string - Example: `distribution in (\"gke\", \"vanilla\")` - Description: The kubernetes distribution that will be included in the results. - `integrationName` - Type: string - Example: `integrationName = \"github-integration\"` - Description: The name of the integration an IaC resource belongs to. - `labels` - Type: string - Example: `not labels exists` - Description: The resource labels that will be included in the results. - `location` - Type: string - Example: `location starts with \"https://bitbucket.org/organizations-workspace/teams-repository/src\"` - Description: The web address of an IaC Manifest. - `name` - Type: string - Example: `name starts with \"acl\"` - Description: The names that will be included in the results. - `namespace` - Type: string - Example: `namespace contains \"production\"` - Description: The namespace that will be included in the results. - `nodeType` - Type: string - Example: `nodeType=\"Worker\"` - Description: The nodeType that will be included in the results. - `osName` - Type: string - Example: `osName != \"linux\"` - Description: The operating system that will be included in the results. - `osImage` - Type: string - Example: `osImage = \"Ubuntu 18.04.6 LTS\"` - Description: The operating system image that will be included in the results. - `organization` - Type: string - Example: `organization = \"s-xqe92dwe61\"` - Description: The organization that will be included in the results. - `platform` - Type: string - Example: `platform = \"AWS\"` - Description: The platform that will be included in the results. - `control.accepted` - Type: boolean - Example: `control.accepted exists` - Description: Include (or Exclude) only resources with accepted results. Supported operators: exists and not exists. - `policy` - Type: string - Example: `policy in (\"CIS Docker Benchmark\")` - Description: Include resources that applied the selected policies. Supported operators: in, not in, exists, not exists. - `control.severity` - Type: string - Example: `control.severity in (\"High\")` - Description: Include resources that have violated risks in the selected severities. Supported operators: in, not in. - `control.failed` - Type: string - Example: `control.failed in (\"/etc/default/docker owned by root:root\")` - Description: Include resources that have violated the selected risks. Supported operators: in, not in, exists, not exists. - `policy.failed` - Type: string - Example: `policy.failed in (\"PCI DSS (Payment Card Industry Data Security Standard) v3.2.1\")` - Description: Include resources that failed the selected policies. Supported operators: in, not in, exists, not exists. - `policy.passed` in (\"CIS Kubernetes V1.20 Benchmark\") - Type: string - Example: `policy.passed in (\"CIS Kubernetes V1.20 Benchmark\")` - Description: Include resources that passed the selected policies. Supported operators: in, not in, exists, not exists. - `project` - Type: string - Example: `project = \"project1\"` - Description: DEPRECATED. The project that will be included in the results. - `projectName` - Type: string - Example: `projectName = \"project123\"` - Description: The project name that will be included in the results. - `projectId` - Type: string - Example: `projectId = \"1235495521\"` - Description: The project id that will be included in the results. - `region` - Type: string - Example: `region in (\"europe-west1\")` - Description: The regions that will be included in the results. - `repository` - Type: string - Example: `repository in (\"e2e-repo\")` - Description: The Repository an IaC resource belongs to. - `resourceOrigin` - Type: string - Example: `resourceOrigin = \"Code\"` - Description: Origin of the resource. Supported values: Code, Deployed. - `type` - Type: string - Example: `type = \"Account\"` - Description: The resource types that will be included in the results. - `subscription` - Type: string - Example: `subscription = \"Azure subscription 1\"` - Description: DEPRECATED. The Azure subscription that will be included in the results. - `subscriptionName` - Type: string - Example: `subscriptionName = \"subscription abc\"` - Description: The Azure subscription name that will be included in the results. - `subscriptionId` - Type: string - Example: `subscriptionId = \"568634664353\"` - Description: The Azure subscription id that will be included in the results. - `sourceType` - Type: string - Example: `sourceType = \"YAML\"` - Description: The source type of an IaC resource. Supported values: YAML, Kustomize, Terraform, Helm. - `version` - Type: string - Example: `version = \"1.1\"` - Description: OCP Cluster versions that will be included in the results. - `zone` - Type: string - Example: `zone in (\"zone1\")` - Description: The zones that will be included in the results. - `category` - Type: string - Example: `category in (\"Compute\", \"IAM\")` - Description: The category that will be included in the results. Supported operators: in, not in. - `isExposed` - Type: boolean - Example: `isExposed exists` - Description - Specifies whether the resource to return is exposed to the internet. Supported operators: exists and not exists. - `validatedExposure` - Type: boolean - Example: `validatedExposure exists` - Description - Specifies whether the resource to return is exposed to the internet and could be reach by our network exposure validator. Supported operators: exists and not exists. - `arn` - Type: string - Example: `arn in (\"arn:aws:ec2:eu-central-1:843232641625:instance/i-0c1dedd325e71138d\")` - Description - The AWS ARN of the resource. - `resourceId` - Type: string - Example: `resourceId = \"//compute.googleapis.com/projects/project1/global/routes/default-route-192ae83214caddd\"` - Description - The Azure or GCP Resource Identifier of the resource. - `container.name` - Type: string - Example: `container.name in (\"sysdig-container\")` - Description - Filters the resource by a container. - `architecture` - Type: string - Example: `architecture = \"arm64\"` - Description - Image architecture. - `baseOS` - Type: string - Example: `baseOS = \"debian 11.6\"` - Description - Image Base OS. - `digest` - Type: string - Example: `digest = \"sha256:21829f4f033ac2805aa43a412bcdf60e98eee4124d565a06dee184c97efff6091\"` - Description - Image Digest. - `imageId` - Type: string - Example: `imageId in (\"sha256:3768ff6176e29a35ce1354622977a1e5c013045cbc4f30754ef3459218be8ac\")` - Description - Image Id. - `os` - Type: string - Example: `os = \"linux\"` - Description - Image OS. - `container.imageName` - Type: string - Example: `container.imageName in (\"registry.k8s.io/kube-image:v1.2.4\")` - Description - Image Pullstring. - `image.registry` - Type: string - Example: `image.registry = \"quay.io\"` - Description - Image Registry. - `image.tag` - Type: string - Example: `image.tag in (\"tag1\")` - Description - Image tag. - `package.inUse` - Type: boolean - Example: `package.inUse exists` - Description - Package in use filter. Supported operators: exists and not exists. - `package.info` - Type: string - Example: `package.info in (\"github.com/golang/protobuf - v1.5.2\")` - Description - Filters by a package using the format [packge name] - [version]. - `package.path` - Type: string - Example: `package.path in (\"/app\")` - Description - Filters by package path. - `package.type` - Type: string - Example: `package.type in (\"Golang\")` - Description - Package type. - `vuln.cvssScore` - Type: string - Example: `vuln.cvssScore >= \"3\"` - Description - Filter by vulnerability CVSS. Supported operators: `=` and `>=`. - `vuln.hasExploit` - Type: boolean - Example: `vuln.hasExploit exists` - Description - Filters resources by the existence of vulnerabilities with exploits. Supported operators: exists and not exists. - `vuln.hasFix` - Type: boolean - Example: `vuln.hasFix exists` - Description - Filters resources by the existence of vulnerabilities with fixes. Supported operators: exists and not exists. - `vuln.name` - Type: string - Example: `vuln.name in (\"CVE-2023-0049\")` - Description - Filter by vulnerability name. - `vuln.severity` - Type: string - Example: `vuln.severity in (\"Critical\")` - Description - Filter by vulnerability severity. Supported operators: in, not in, exists and not exists. - `machineImage` - Type: string - Example: `machineImage = \"ami-0b22b359fdfabe1b5\"` - Description - Filter by host machine image. **Note**: Whenever you filter for values with special characters, ensure that you encode the values. If the special characters are \" or \\, use the escape character \\ and then encode the values. | [optional] + **page_number** | **int**| Page number. Defaults to 1. | [optional] + **page_size** | **int**| Page size. Defaults to 20. | [optional] + **with_enriched_containers** | **bool**| If true then for kubernetes workload resources additional container information will be included. | [optional] + +### Return type + +[**InventoryResourceResponse**](InventoryResourceResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Successfully returned Inventory v1 resources. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/InventoryPage.md b/docs/reference/InventoryPage.md new file mode 100644 index 00000000..517ec318 --- /dev/null +++ b/docs/reference/InventoryPage.md @@ -0,0 +1,32 @@ +# InventoryPage + +The total number of pages the matched the filter, and the next and previous page numbers. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**next** | **int** | The next page | [optional] +**previous** | **int** | The previous page | [optional] +**total** | **int** | Total page count | + +## Example + +```python +from sysdig_client.models.inventory_page import InventoryPage + +# TODO update the JSON string below +json = "{}" +# create an instance of InventoryPage from a JSON string +inventory_page_instance = InventoryPage.from_json(json) +# print the JSON string representation of the object +print(InventoryPage.to_json()) + +# convert the object into a dict +inventory_page_dict = inventory_page_instance.to_dict() +# create an instance of InventoryPage from a dict +inventory_page_from_dict = InventoryPage.from_dict(inventory_page_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InventoryResource.md b/docs/reference/InventoryResource.md new file mode 100644 index 00000000..7788bc40 --- /dev/null +++ b/docs/reference/InventoryResource.md @@ -0,0 +1,48 @@ +# InventoryResource + +An Inventory Resource + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**hash** | **str** | Resource unique identifier | +**name** | **str** | Resource name | +**platform** | **str** | The resource platform (such as AWS, GCP, Kubernetes, or Azure) | +**type** | **str** | The resource type | +**category** | **str** | The resource category | +**last_seen** | **int** | Last scan date as unix timestamp | +**is_exposed** | **bool** | Indicates if a resource is exposed to the internet | [optional] +**validated_exposure** | **bool** | Indicates if a resource which is exposed to the internet could be reach by our network exposure validator | [optional] +**labels** | **List[str]** | The resource labels | +**metadata** | **object** | The resource metadata | +**resource_origin** | **str** | Where a resource was collected (Code, Deployed) | +**posture_policy_summary** | [**PosturePolicySummary**](PosturePolicySummary.md) | | [optional] +**vulnerability_summary** | [**VulnerabilitySummary**](VulnerabilitySummary.md) | | [optional] +**in_use_vulnerability_summary** | [**VulnerabilitySummary**](VulnerabilitySummary.md) | | [optional] +**zones** | [**List[InventoryZone]**](InventoryZone.md) | Resource zones | +**config_api_endpoint** | **str** | A link that provides the resource configuration. | [optional] +**posture_control_summary_api_endpoint** | **str** | A link that provides the posture control summary. | [optional] +**vm_api_endpoint** | **str** | A link that provides vulnerability management information about an image (Images only). | [optional] +**container_info** | [**List[ContainerInfo]**](ContainerInfo.md) | List of containers (with some of kubernetes metadata) belonging to this kubernetes workload. If resource is not kubernetes workload this fild will be empty. | [optional] + +## Example + +```python +from sysdig_client.models.inventory_resource import InventoryResource + +# TODO update the JSON string below +json = "{}" +# create an instance of InventoryResource from a JSON string +inventory_resource_instance = InventoryResource.from_json(json) +# print the JSON string representation of the object +print(InventoryResource.to_json()) + +# convert the object into a dict +inventory_resource_dict = inventory_resource_instance.to_dict() +# create an instance of InventoryResource from a dict +inventory_resource_from_dict = InventoryResource.from_dict(inventory_resource_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InventoryResourceExtended.md b/docs/reference/InventoryResourceExtended.md new file mode 100644 index 00000000..dc69a1e1 --- /dev/null +++ b/docs/reference/InventoryResourceExtended.md @@ -0,0 +1,49 @@ +# InventoryResourceExtended + +Extended information about an Inventory Resource + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**hash** | **str** | Resource unique identifier | +**name** | **str** | Resource name | +**platform** | **str** | The resource platform (such as AWS, GCP, Kubernetes, or Azure) | +**type** | **str** | The resource type | +**category** | **str** | The resource category | +**last_seen** | **int** | Last scan date as unix timestamp | +**is_exposed** | **bool** | Indicates if a resource is exposed to the internet | [optional] +**validated_exposure** | **bool** | Indicates if a resource which is exposed to the internet could be reach by our network exposure validator | [optional] +**labels** | **List[str]** | The resource labels | +**metadata** | **object** | The resource metadata | +**resource_origin** | **str** | Where a resource was collected (Code, Deployed) | +**posture_policy_summary** | [**PosturePolicySummary**](PosturePolicySummary.md) | | [optional] +**vulnerability_summary** | [**VulnerabilitySummary**](VulnerabilitySummary.md) | | [optional] +**in_use_vulnerability_summary** | [**VulnerabilitySummary**](VulnerabilitySummary.md) | | [optional] +**zones** | [**List[InventoryZone]**](InventoryZone.md) | Resource zones | +**config_api_endpoint** | **str** | A link that provides the resource configuration. | [optional] +**posture_control_summary_api_endpoint** | **str** | A link that provides the posture control summary. | [optional] +**vm_api_endpoint** | **str** | A link that provides vulnerability management information about an image (Images only). | [optional] +**container_info** | [**List[ContainerInfo]**](ContainerInfo.md) | List of containers (with some of kubernetes metadata) belonging to this kubernetes workload. If resource is not kubernetes workload this fild will be empty. | [optional] +**image_summary** | [**List[Image]**](Image.md) | Images used by the workload (Workloads only) | [optional] + +## Example + +```python +from sysdig_client.models.inventory_resource_extended import InventoryResourceExtended + +# TODO update the JSON string below +json = "{}" +# create an instance of InventoryResourceExtended from a JSON string +inventory_resource_extended_instance = InventoryResourceExtended.from_json(json) +# print the JSON string representation of the object +print(InventoryResourceExtended.to_json()) + +# convert the object into a dict +inventory_resource_extended_dict = inventory_resource_extended_instance.to_dict() +# create an instance of InventoryResourceExtended from a dict +inventory_resource_extended_from_dict = InventoryResourceExtended.from_dict(inventory_resource_extended_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InventoryResourceResponse.md b/docs/reference/InventoryResourceResponse.md new file mode 100644 index 00000000..f9dd0b00 --- /dev/null +++ b/docs/reference/InventoryResourceResponse.md @@ -0,0 +1,31 @@ +# InventoryResourceResponse + +A paged response of resources that match the filter. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[InventoryResource]**](InventoryResource.md) | The resources that matches the filter | +**page** | [**InventoryPage**](InventoryPage.md) | | + +## Example + +```python +from sysdig_client.models.inventory_resource_response import InventoryResourceResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of InventoryResourceResponse from a JSON string +inventory_resource_response_instance = InventoryResourceResponse.from_json(json) +# print the JSON string representation of the object +print(InventoryResourceResponse.to_json()) + +# convert the object into a dict +inventory_resource_response_dict = inventory_resource_response_instance.to_dict() +# create an instance of InventoryResourceResponse from a dict +inventory_resource_response_from_dict = InventoryResourceResponse.from_dict(inventory_resource_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/InventoryZone.md b/docs/reference/InventoryZone.md new file mode 100644 index 00000000..5c13cee5 --- /dev/null +++ b/docs/reference/InventoryZone.md @@ -0,0 +1,31 @@ +# InventoryZone + +a Zone + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | The zone identifier | +**name** | **str** | The zone name | + +## Example + +```python +from sysdig_client.models.inventory_zone import InventoryZone + +# TODO update the JSON string below +json = "{}" +# create an instance of InventoryZone from a JSON string +inventory_zone_instance = InventoryZone.from_json(json) +# print the JSON string representation of the object +print(InventoryZone.to_json()) + +# convert the object into a dict +inventory_zone_dict = inventory_zone_instance.to_dict() +# create an instance of InventoryZone from a dict +inventory_zone_from_dict = InventoryZone.from_dict(inventory_zone_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IpFilterResponseV1.md b/docs/reference/IpFilterResponseV1.md new file mode 100644 index 00000000..e10488d3 --- /dev/null +++ b/docs/reference/IpFilterResponseV1.md @@ -0,0 +1,34 @@ +# IpFilterResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**ip_range** | **str** | IP range in CIDR notation | [optional] +**note** | **str** | | [optional] +**is_enabled** | **bool** | | [optional] +**is_allowed** | **bool** | Whether the IP range is allowed or not. | [optional] +**last_updated** | **datetime** | The date when IP filter was last updated. | [optional] + +## Example + +```python +from sysdig_client.models.ip_filter_response_v1 import IpFilterResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IpFilterResponseV1 from a JSON string +ip_filter_response_v1_instance = IpFilterResponseV1.from_json(json) +# print the JSON string representation of the object +print(IpFilterResponseV1.to_json()) + +# convert the object into a dict +ip_filter_response_v1_dict = ip_filter_response_v1_instance.to_dict() +# create an instance of IpFilterResponseV1 from a dict +ip_filter_response_v1_from_dict = IpFilterResponseV1.from_dict(ip_filter_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IpFiltersPaginatedResponseV1.md b/docs/reference/IpFiltersPaginatedResponseV1.md new file mode 100644 index 00000000..e8e906a7 --- /dev/null +++ b/docs/reference/IpFiltersPaginatedResponseV1.md @@ -0,0 +1,30 @@ +# IpFiltersPaginatedResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[IpFilterResponseV1]**](IpFilterResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.ip_filters_paginated_response_v1 import IpFiltersPaginatedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IpFiltersPaginatedResponseV1 from a JSON string +ip_filters_paginated_response_v1_instance = IpFiltersPaginatedResponseV1.from_json(json) +# print the JSON string representation of the object +print(IpFiltersPaginatedResponseV1.to_json()) + +# convert the object into a dict +ip_filters_paginated_response_v1_dict = ip_filters_paginated_response_v1_instance.to_dict() +# create an instance of IpFiltersPaginatedResponseV1 from a dict +ip_filters_paginated_response_v1_from_dict = IpFiltersPaginatedResponseV1.from_dict(ip_filters_paginated_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IpFiltersSettingsV1.md b/docs/reference/IpFiltersSettingsV1.md new file mode 100644 index 00000000..31d9319b --- /dev/null +++ b/docs/reference/IpFiltersSettingsV1.md @@ -0,0 +1,30 @@ +# IpFiltersSettingsV1 + +Used to configure IP filters settings. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_filtering_enabled** | **bool** | Specifies if IP filtering is enabled. | [optional] + +## Example + +```python +from sysdig_client.models.ip_filters_settings_v1 import IpFiltersSettingsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IpFiltersSettingsV1 from a JSON string +ip_filters_settings_v1_instance = IpFiltersSettingsV1.from_json(json) +# print the JSON string representation of the object +print(IpFiltersSettingsV1.to_json()) + +# convert the object into a dict +ip_filters_settings_v1_dict = ip_filters_settings_v1_instance.to_dict() +# create an instance of IpFiltersSettingsV1 from a dict +ip_filters_settings_v1_from_dict = IpFiltersSettingsV1.from_dict(ip_filters_settings_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IssueTypeFieldResponseV1.md b/docs/reference/IssueTypeFieldResponseV1.md new file mode 100644 index 00000000..a2c03189 --- /dev/null +++ b/docs/reference/IssueTypeFieldResponseV1.md @@ -0,0 +1,35 @@ +# IssueTypeFieldResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | Issue type field id. | +**jira_id** | **str** | Issue type field id on Jira. | +**jira_name** | **str** | Jira issue type field name. | +**type** | **str** | Issue type field type. | +**is_required** | **bool** | Indicates if the field is required. | +**has_default_value** | **bool** | Indicates if the field has a default value. | +**allowed_values** | [**List[IssueTypeFieldResponseV1AllowedValuesInner]**](IssueTypeFieldResponseV1AllowedValuesInner.md) | Allowed values for the field. | [optional] + +## Example + +```python +from sysdig_client.models.issue_type_field_response_v1 import IssueTypeFieldResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IssueTypeFieldResponseV1 from a JSON string +issue_type_field_response_v1_instance = IssueTypeFieldResponseV1.from_json(json) +# print the JSON string representation of the object +print(IssueTypeFieldResponseV1.to_json()) + +# convert the object into a dict +issue_type_field_response_v1_dict = issue_type_field_response_v1_instance.to_dict() +# create an instance of IssueTypeFieldResponseV1 from a dict +issue_type_field_response_v1_from_dict = IssueTypeFieldResponseV1.from_dict(issue_type_field_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IssueTypeFieldResponseV1AllowedValuesInner.md b/docs/reference/IssueTypeFieldResponseV1AllowedValuesInner.md new file mode 100644 index 00000000..dc87b747 --- /dev/null +++ b/docs/reference/IssueTypeFieldResponseV1AllowedValuesInner.md @@ -0,0 +1,30 @@ +# IssueTypeFieldResponseV1AllowedValuesInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Jira checkbox field id. | +**value** | **str** | Jira checkbox field value. | + +## Example + +```python +from sysdig_client.models.issue_type_field_response_v1_allowed_values_inner import IssueTypeFieldResponseV1AllowedValuesInner + +# TODO update the JSON string below +json = "{}" +# create an instance of IssueTypeFieldResponseV1AllowedValuesInner from a JSON string +issue_type_field_response_v1_allowed_values_inner_instance = IssueTypeFieldResponseV1AllowedValuesInner.from_json(json) +# print the JSON string representation of the object +print(IssueTypeFieldResponseV1AllowedValuesInner.to_json()) + +# convert the object into a dict +issue_type_field_response_v1_allowed_values_inner_dict = issue_type_field_response_v1_allowed_values_inner_instance.to_dict() +# create an instance of IssueTypeFieldResponseV1AllowedValuesInner from a dict +issue_type_field_response_v1_allowed_values_inner_from_dict = IssueTypeFieldResponseV1AllowedValuesInner.from_dict(issue_type_field_response_v1_allowed_values_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IssueTypeResponseV1.md b/docs/reference/IssueTypeResponseV1.md new file mode 100644 index 00000000..809fe957 --- /dev/null +++ b/docs/reference/IssueTypeResponseV1.md @@ -0,0 +1,37 @@ +# IssueTypeResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | Issue type ID. | +**jira_id** | **str** | Issue type ID on Jira. | +**jira_name** | **str** | Jira issue type name. | +**jira_hierarchy_level** | **int** | Issue type hierarchy level on Jira. | +**jira_open_status_id** | **str** | Jira status ID mapped to open status. | +**jira_in_progress_status_id** | **str** | Jira status ID mapped to in progress status. | +**jira_closed_status_id** | **str** | Jira status ID mapped to closed status. | +**standard_fields** | [**List[IssueTypeFieldResponseV1]**](IssueTypeFieldResponseV1.md) | Standard fields for the issue type. | +**custom_fields** | [**List[IssueTypeFieldResponseV1]**](IssueTypeFieldResponseV1.md) | Custom fields for the issue type. | [optional] + +## Example + +```python +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IssueTypeResponseV1 from a JSON string +issue_type_response_v1_instance = IssueTypeResponseV1.from_json(json) +# print the JSON string representation of the object +print(IssueTypeResponseV1.to_json()) + +# convert the object into a dict +issue_type_response_v1_dict = issue_type_response_v1_instance.to_dict() +# create an instance of IssueTypeResponseV1 from a dict +issue_type_response_v1_from_dict = IssueTypeResponseV1.from_dict(issue_type_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/IssueTypesResponseV1.md b/docs/reference/IssueTypesResponseV1.md new file mode 100644 index 00000000..1b5f3b08 --- /dev/null +++ b/docs/reference/IssueTypesResponseV1.md @@ -0,0 +1,29 @@ +# IssueTypesResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[IssueTypeResponseV1]**](IssueTypeResponseV1.md) | List of issue types. | [optional] + +## Example + +```python +from sysdig_client.models.issue_types_response_v1 import IssueTypesResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of IssueTypesResponseV1 from a JSON string +issue_types_response_v1_instance = IssueTypesResponseV1.from_json(json) +# print the JSON string representation of the object +print(IssueTypesResponseV1.to_json()) + +# convert the object into a dict +issue_types_response_v1_dict = issue_types_response_v1_instance.to_dict() +# create an instance of IssueTypesResponseV1 from a dict +issue_types_response_v1_from_dict = IssueTypesResponseV1.from_dict(issue_types_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/JiraIntegrationsApi.md b/docs/reference/JiraIntegrationsApi.md new file mode 100644 index 00000000..319a8924 --- /dev/null +++ b/docs/reference/JiraIntegrationsApi.md @@ -0,0 +1,900 @@ +# sysdig_client.JiraIntegrationsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_jira_integration_v1**](JiraIntegrationsApi.md#create_jira_integration_v1) | **POST** /platform/jira/v1/integrations | Create Jira integration +[**create_jira_issue_type_v1**](JiraIntegrationsApi.md#create_jira_issue_type_v1) | **POST** /platform/jira/v1/integrations/{integrationId}/issue-types | Create Jira issue type +[**delete_jira_integration_v1**](JiraIntegrationsApi.md#delete_jira_integration_v1) | **DELETE** /platform/jira/v1/integrations/{integrationId} | Delete Jira integration +[**delete_jira_issue_type_v1**](JiraIntegrationsApi.md#delete_jira_issue_type_v1) | **DELETE** /platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId} | Delete Jira issue type +[**get_jira_integration_v1**](JiraIntegrationsApi.md#get_jira_integration_v1) | **GET** /platform/jira/v1/integrations/{integrationId} | Get Jira integration +[**get_jira_integrations_v1**](JiraIntegrationsApi.md#get_jira_integrations_v1) | **GET** /platform/jira/v1/integrations | List Jira integrations +[**get_jira_issue_type_v1**](JiraIntegrationsApi.md#get_jira_issue_type_v1) | **GET** /platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId} | Get Jira issue type +[**get_jira_issue_types_v1**](JiraIntegrationsApi.md#get_jira_issue_types_v1) | **GET** /platform/jira/v1/integrations/{integrationId}/issue-types | List Jira issue types +[**update_jira_integration_v1**](JiraIntegrationsApi.md#update_jira_integration_v1) | **PUT** /platform/jira/v1/integrations/{integrationId} | Update Jira integration +[**update_jira_issue_type_v1**](JiraIntegrationsApi.md#update_jira_issue_type_v1) | **PUT** /platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId} | Update Jira issue type + + +# **create_jira_integration_v1** +> IntegrationResponseV1 create_jira_integration_v1(create_integration_request_v1) + +Create Jira integration + +This operation creates a Jira integration on the Sysdig platform. + +**Required permissions:** *ticketing-integration.write* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_integration_request_v1 import CreateIntegrationRequestV1 +from sysdig_client.models.integration_response_v1 import IntegrationResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + create_integration_request_v1 = sysdig_client.CreateIntegrationRequestV1() # CreateIntegrationRequestV1 | A Jira integration to create + + try: + # Create Jira integration + api_response = api_instance.create_jira_integration_v1(create_integration_request_v1) + print("The response of JiraIntegrationsApi->create_jira_integration_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->create_jira_integration_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_integration_request_v1** | [**CreateIntegrationRequestV1**](CreateIntegrationRequestV1.md)| A Jira integration to create | + +### Return type + +[**IntegrationResponseV1**](IntegrationResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Created Jira integration | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **create_jira_issue_type_v1** +> IssueTypeResponseV1 create_jira_issue_type_v1(integration_id, create_issue_type_request_v1) + +Create Jira issue type + +This operation creates a Jira issue type on the Sysdig platform for the particular Jira integration. + +**Required permissions:** *ticketing-integration.write* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_issue_type_request_v1 import CreateIssueTypeRequestV1 +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + integration_id = 56 # int | Jira integration identifier + create_issue_type_request_v1 = sysdig_client.CreateIssueTypeRequestV1() # CreateIssueTypeRequestV1 | A Jira issue type to create + + try: + # Create Jira issue type + api_response = api_instance.create_jira_issue_type_v1(integration_id, create_issue_type_request_v1) + print("The response of JiraIntegrationsApi->create_jira_issue_type_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->create_jira_issue_type_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| Jira integration identifier | + **create_issue_type_request_v1** | [**CreateIssueTypeRequestV1**](CreateIssueTypeRequestV1.md)| A Jira issue type to create | + +### Return type + +[**IssueTypeResponseV1**](IssueTypeResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Created Jira issue type | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_jira_integration_v1** +> delete_jira_integration_v1(integration_id) + +Delete Jira integration + +This operation deletes a specific Jira integration on the Sysdig platform. + +**Required permissions:** *ticketing-integration.write* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + integration_id = 56 # int | Jira integration identifier + + try: + # Delete Jira integration + api_instance.delete_jira_integration_v1(integration_id) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->delete_jira_integration_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| Jira integration identifier | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Jira integration deleted successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_jira_issue_type_v1** +> delete_jira_issue_type_v1(integration_id, issue_type_id) + +Delete Jira issue type + +This operation deletes a specific Jira issue type on the Sysdig platform. + +**Required permissions:** *ticketing-integration.write* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + integration_id = 56 # int | Jira integration identifier + issue_type_id = 56 # int | Jira issue type identifier + + try: + # Delete Jira issue type + api_instance.delete_jira_issue_type_v1(integration_id, issue_type_id) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->delete_jira_issue_type_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| Jira integration identifier | + **issue_type_id** | **int**| Jira issue type identifier | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Jira issue type deleted successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_jira_integration_v1** +> IntegrationResponseV1 get_jira_integration_v1(integration_id) + +Get Jira integration + +This operation returns a specific Jira integration from the Sysdig platform. + +**Required permissions:** *ticketing-integration.read* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.integration_response_v1 import IntegrationResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + integration_id = 56 # int | Jira integration identifier + + try: + # Get Jira integration + api_response = api_instance.get_jira_integration_v1(integration_id) + print("The response of JiraIntegrationsApi->get_jira_integration_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->get_jira_integration_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| Jira integration identifier | + +### Return type + +[**IntegrationResponseV1**](IntegrationResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Specific Jira integration | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_jira_integrations_v1** +> PaginatedIntegrationsResponseV1 get_jira_integrations_v1(limit=limit, offset=offset, enabled=enabled) + +List Jira integrations + +This operation returns a paginated list of Jira integrations from the Sysdig platform. + +**Required permissions:** *ticketing-integration.read* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.paginated_integrations_response_v1 import PaginatedIntegrationsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + limit = 25 # int | The number of items to return (optional) (default to 25) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + enabled = false # bool | Enabled status of the integration (optional) + + try: + # List Jira integrations + api_response = api_instance.get_jira_integrations_v1(limit=limit, offset=offset, enabled=enabled) + print("The response of JiraIntegrationsApi->get_jira_integrations_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->get_jira_integrations_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **limit** | **int**| The number of items to return | [optional] [default to 25] + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **enabled** | **bool**| Enabled status of the integration | [optional] + +### Return type + +[**PaginatedIntegrationsResponseV1**](PaginatedIntegrationsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of Jira integrations | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_jira_issue_type_v1** +> IssueTypeResponseV1 get_jira_issue_type_v1(integration_id, issue_type_id) + +Get Jira issue type + +This operation returns a specific Jira issue type from the Sysdig platform. + +**Required permissions:** *ticketing-integration.read* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + integration_id = 56 # int | Jira integration identifier + issue_type_id = 56 # int | Jira issue type identifier + + try: + # Get Jira issue type + api_response = api_instance.get_jira_issue_type_v1(integration_id, issue_type_id) + print("The response of JiraIntegrationsApi->get_jira_issue_type_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->get_jira_issue_type_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| Jira integration identifier | + **issue_type_id** | **int**| Jira issue type identifier | + +### Return type + +[**IssueTypeResponseV1**](IssueTypeResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Specific Jira issue type | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_jira_issue_types_v1** +> IssueTypesResponseV1 get_jira_issue_types_v1(integration_id) + +List Jira issue types + +This operation returns a list of Jira issue types from the Sysdig platform, associated with a particular Jira integration. + +**Required permissions:** *ticketing-integration.read* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.issue_types_response_v1 import IssueTypesResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + integration_id = 56 # int | Jira integration identifier + + try: + # List Jira issue types + api_response = api_instance.get_jira_issue_types_v1(integration_id) + print("The response of JiraIntegrationsApi->get_jira_issue_types_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->get_jira_issue_types_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| Jira integration identifier | + +### Return type + +[**IssueTypesResponseV1**](IssueTypesResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of Jira issue types for the particular Jira integration | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_jira_integration_v1** +> IntegrationResponseV1 update_jira_integration_v1(integration_id, update_integration_request_v1=update_integration_request_v1) + +Update Jira integration + +This operation updates a specific Jira integration on the Sysdig platform. + +**Required permissions:** *ticketing-integration.write* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.integration_response_v1 import IntegrationResponseV1 +from sysdig_client.models.update_integration_request_v1 import UpdateIntegrationRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + integration_id = 56 # int | Jira integration identifier + update_integration_request_v1 = sysdig_client.UpdateIntegrationRequestV1() # UpdateIntegrationRequestV1 | The Jira integration to update (optional) + + try: + # Update Jira integration + api_response = api_instance.update_jira_integration_v1(integration_id, update_integration_request_v1=update_integration_request_v1) + print("The response of JiraIntegrationsApi->update_jira_integration_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->update_jira_integration_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| Jira integration identifier | + **update_integration_request_v1** | [**UpdateIntegrationRequestV1**](UpdateIntegrationRequestV1.md)| The Jira integration to update | [optional] + +### Return type + +[**IntegrationResponseV1**](IntegrationResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Updated Jira integration | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_jira_issue_type_v1** +> IssueTypeResponseV1 update_jira_issue_type_v1(integration_id, issue_type_id, update_issue_type_request_v1=update_issue_type_request_v1) + +Update Jira issue type + +This operation updates a specific Jira issue type on the Sysdig platform. + +**Required permissions:** *ticketing-integration.write* + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 +from sysdig_client.models.update_issue_type_request_v1 import UpdateIssueTypeRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.JiraIntegrationsApi(api_client) + integration_id = 56 # int | Jira integration identifier + issue_type_id = 56 # int | Jira issue type identifier + update_issue_type_request_v1 = sysdig_client.UpdateIssueTypeRequestV1() # UpdateIssueTypeRequestV1 | A Jira issue type to update (optional) + + try: + # Update Jira issue type + api_response = api_instance.update_jira_issue_type_v1(integration_id, issue_type_id, update_issue_type_request_v1=update_issue_type_request_v1) + print("The response of JiraIntegrationsApi->update_jira_issue_type_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling JiraIntegrationsApi->update_jira_issue_type_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **integration_id** | **int**| Jira integration identifier | + **issue_type_id** | **int**| Jira issue type identifier | + **update_issue_type_request_v1** | [**UpdateIssueTypeRequestV1**](UpdateIssueTypeRequestV1.md)| A Jira issue type to update | [optional] + +### Return type + +[**IssueTypeResponseV1**](IssueTypeResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Updated Jira issue type | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/JobResponse.md b/docs/reference/JobResponse.md new file mode 100644 index 00000000..b3243f47 --- /dev/null +++ b/docs/reference/JobResponse.md @@ -0,0 +1,51 @@ +# JobResponse + +Schema for a job response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Unique identifier for the job. | +**user_id** | **int** | ID of the user who created the job. | +**team_id** | **int** | ID of the team the job was created under. | +**customer_id** | **int** | ID of the user associated with the job. | +**iac_task_id** | **int** | ID of the IAC scheduled task. | [optional] +**schedule_id** | **str** | ID of the schedule associated with the job | [optional] +**report_id** | **int** | ID of the report | +**is_report_template** | **bool** | Indicates if the report is a template | +**report_format** | **str** | Format of the report | +**job_type** | **str** | Type of the job | +**job_name** | **str** | Name of the job | [optional] +**zones** | **List[int]** | List of zone IDs | +**policies** | **List[int]** | List of policy IDs | [optional] +**status** | **str** | Status of the job | +**timezone** | **str** | Timezone of the request time frame | [optional] +**time_frame** | [**TimeFrame**](TimeFrame.md) | | [optional] +**file_name** | **str** | File name of the report | [optional] +**file_path** | **str** | File path of the report | [optional] +**created_by** | **str** | Email of the user who created the job | +**scheduled_on** | **datetime** | Timestamp when the job was scheduled | +**started_on** | **datetime** | Timestamp when the job was started | [optional] +**completed_on** | **datetime** | Timestamp when the job was completed | [optional] + +## Example + +```python +from sysdig_client.models.job_response import JobResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of JobResponse from a JSON string +job_response_instance = JobResponse.from_json(json) +# print the JSON string representation of the object +print(JobResponse.to_json()) + +# convert the object into a dict +job_response_dict = job_response_instance.to_dict() +# create an instance of JobResponse from a dict +job_response_from_dict = JobResponse.from_dict(job_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/K8sAdmissionReviewContent.md b/docs/reference/K8sAdmissionReviewContent.md new file mode 100644 index 00000000..e326ad00 --- /dev/null +++ b/docs/reference/K8sAdmissionReviewContent.md @@ -0,0 +1,36 @@ +# K8sAdmissionReviewContent + +Kubernetes admission requests-posture checks event content + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**EventContentType**](EventContentType.md) | | +**namespace** | **str** | Kubernetes namespace | [optional] +**cluster_name** | **str** | Kubernetes cluster name | [optional] +**resource_name** | **str** | Kubernetes resource name | [optional] +**resource_kind** | **str** | Kubernetes resource kind | [optional] +**zones** | [**List[Zone]**](Zone.md) | List of zones that match the scope of the resource. | [optional] +**scan_result** | [**K8sAdmissionReviewContentAllOfScanResult**](K8sAdmissionReviewContentAllOfScanResult.md) | | + +## Example + +```python +from sysdig_client.models.k8s_admission_review_content import K8sAdmissionReviewContent + +# TODO update the JSON string below +json = "{}" +# create an instance of K8sAdmissionReviewContent from a JSON string +k8s_admission_review_content_instance = K8sAdmissionReviewContent.from_json(json) +# print the JSON string representation of the object +print(K8sAdmissionReviewContent.to_json()) + +# convert the object into a dict +k8s_admission_review_content_dict = k8s_admission_review_content_instance.to_dict() +# create an instance of K8sAdmissionReviewContent from a dict +k8s_admission_review_content_from_dict = K8sAdmissionReviewContent.from_dict(k8s_admission_review_content_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/K8sAdmissionReviewContentAllOfScanResult.md b/docs/reference/K8sAdmissionReviewContentAllOfScanResult.md new file mode 100644 index 00000000..05c6a290 --- /dev/null +++ b/docs/reference/K8sAdmissionReviewContentAllOfScanResult.md @@ -0,0 +1,28 @@ +# K8sAdmissionReviewContentAllOfScanResult + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.k8s_admission_review_content_all_of_scan_result import K8sAdmissionReviewContentAllOfScanResult + +# TODO update the JSON string below +json = "{}" +# create an instance of K8sAdmissionReviewContentAllOfScanResult from a JSON string +k8s_admission_review_content_all_of_scan_result_instance = K8sAdmissionReviewContentAllOfScanResult.from_json(json) +# print the JSON string representation of the object +print(K8sAdmissionReviewContentAllOfScanResult.to_json()) + +# convert the object into a dict +k8s_admission_review_content_all_of_scan_result_dict = k8s_admission_review_content_all_of_scan_result_instance.to_dict() +# create an instance of K8sAdmissionReviewContentAllOfScanResult from a dict +k8s_admission_review_content_all_of_scan_result_from_dict = K8sAdmissionReviewContentAllOfScanResult.from_dict(k8s_admission_review_content_all_of_scan_result_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/KafkaPlaintext.md b/docs/reference/KafkaPlaintext.md new file mode 100644 index 00000000..9c1ff027 --- /dev/null +++ b/docs/reference/KafkaPlaintext.md @@ -0,0 +1,29 @@ +# KafkaPlaintext + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_tls_enabled** | **bool** | | [optional] + +## Example + +```python +from sysdig_client.models.kafka_plaintext import KafkaPlaintext + +# TODO update the JSON string below +json = "{}" +# create an instance of KafkaPlaintext from a JSON string +kafka_plaintext_instance = KafkaPlaintext.from_json(json) +# print the JSON string representation of the object +print(KafkaPlaintext.to_json()) + +# convert the object into a dict +kafka_plaintext_dict = kafka_plaintext_instance.to_dict() +# create an instance of KafkaPlaintext from a dict +kafka_plaintext_from_dict = KafkaPlaintext.from_dict(kafka_plaintext_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/KafkaTlsEncrypted.md b/docs/reference/KafkaTlsEncrypted.md new file mode 100644 index 00000000..1ab13051 --- /dev/null +++ b/docs/reference/KafkaTlsEncrypted.md @@ -0,0 +1,30 @@ +# KafkaTlsEncrypted + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_tls_enabled** | **bool** | | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] + +## Example + +```python +from sysdig_client.models.kafka_tls_encrypted import KafkaTlsEncrypted + +# TODO update the JSON string below +json = "{}" +# create an instance of KafkaTlsEncrypted from a JSON string +kafka_tls_encrypted_instance = KafkaTlsEncrypted.from_json(json) +# print the JSON string representation of the object +print(KafkaTlsEncrypted.to_json()) + +# convert the object into a dict +kafka_tls_encrypted_dict = kafka_tls_encrypted_instance.to_dict() +# create an instance of KafkaTlsEncrypted from a dict +kafka_tls_encrypted_from_dict = KafkaTlsEncrypted.from_dict(kafka_tls_encrypted_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/KeyValueObject.md b/docs/reference/KeyValueObject.md new file mode 100644 index 00000000..c9c7ac84 --- /dev/null +++ b/docs/reference/KeyValueObject.md @@ -0,0 +1,30 @@ +# KeyValueObject + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **str** | The key | +**value** | **str** | The value | + +## Example + +```python +from sysdig_client.models.key_value_object import KeyValueObject + +# TODO update the JSON string below +json = "{}" +# create an instance of KeyValueObject from a JSON string +key_value_object_instance = KeyValueObject.from_json(json) +# print the JSON string representation of the object +print(KeyValueObject.to_json()) + +# convert the object into a dict +key_value_object_dict = key_value_object_instance.to_dict() +# create an instance of KeyValueObject from a dict +key_value_object_from_dict = KeyValueObject.from_dict(key_value_object_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Kubernetes.md b/docs/reference/Kubernetes.md new file mode 100644 index 00000000..f531d6cb --- /dev/null +++ b/docs/reference/Kubernetes.md @@ -0,0 +1,43 @@ +# Kubernetes + +Represents a kubernetes audit event. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The audit event id. | +**timestamp** | **int** | Timestamp the audit event occured, expressed in nanoseconds. | +**type** | **str** | The entry type | +**hostname** | **str** | The Kubernetes hostname. | +**container_id** | **str** | The container id. `containerId` is present only if the audit event was collected in a container context. | +**resource** | **str** | The Kubernetes resource. | +**sub_resource** | **str** | The Kubernetes subresource. | +**namespace** | **str** | The Kubernetes namespace. | +**name** | **str** | The name of the resource. | +**source_addresses** | **List[str]** | | +**user** | [**User**](User.md) | | +**user_agent** | **str** | The user agent of the client | +**args** | **object** | Arguments specific for the different types of Kubernetes audit entries. In case of `pods:exec`, `args` will contain the fields `command` and `container` representing the command called and the name of the container in the pod where the command was executed respectively. | +**labels** | **Dict[str, str]** | Key value pairs of labels. | [optional] + +## Example + +```python +from sysdig_client.models.kubernetes import Kubernetes + +# TODO update the JSON string below +json = "{}" +# create an instance of Kubernetes from a JSON string +kubernetes_instance = Kubernetes.from_json(json) +# print the JSON string representation of the object +print(Kubernetes.to_json()) + +# convert the object into a dict +kubernetes_dict = kubernetes_instance.to_dict() +# create an instance of Kubernetes from a dict +kubernetes_from_dict = Kubernetes.from_dict(kubernetes_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/LabelMatcherV1.md b/docs/reference/LabelMatcherV1.md new file mode 100644 index 00000000..58c006cc --- /dev/null +++ b/docs/reference/LabelMatcherV1.md @@ -0,0 +1,32 @@ +# LabelMatcherV1 + +Matcher to match alerts to inhibition rules. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**label_name** | **str** | Label to match. | +**operator** | **str** | Match operator. | +**value** | **str** | Label value to match in case operator is of type equality, or regular expression in case of operator is of type regex. | + +## Example + +```python +from sysdig_client.models.label_matcher_v1 import LabelMatcherV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of LabelMatcherV1 from a JSON string +label_matcher_v1_instance = LabelMatcherV1.from_json(json) +# print the JSON string representation of the object +print(LabelMatcherV1.to_json()) + +# convert the object into a dict +label_matcher_v1_dict = label_matcher_v1_instance.to_dict() +# create an instance of LabelMatcherV1 from a dict +label_matcher_v1_from_dict = LabelMatcherV1.from_dict(label_matcher_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/LabelValuesResponseV1.md b/docs/reference/LabelValuesResponseV1.md new file mode 100644 index 00000000..10aa1120 --- /dev/null +++ b/docs/reference/LabelValuesResponseV1.md @@ -0,0 +1,32 @@ +# LabelValuesResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | Query status. | [optional] +**data** | **List[str]** | List of values associated with the specified label. | [optional] +**warnings** | **List[str]** | A set of warning messages attached to the response. | [optional] +**infos** | **List[str]** | A set of information messages attached to the response. | [optional] + +## Example + +```python +from sysdig_client.models.label_values_response_v1 import LabelValuesResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of LabelValuesResponseV1 from a JSON string +label_values_response_v1_instance = LabelValuesResponseV1.from_json(json) +# print the JSON string representation of the object +print(LabelValuesResponseV1.to_json()) + +# convert the object into a dict +label_values_response_v1_dict = label_values_response_v1_instance.to_dict() +# create an instance of LabelValuesResponseV1 from a dict +label_values_response_v1_from_dict = LabelValuesResponseV1.from_dict(label_values_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/LabelsResponseV1.md b/docs/reference/LabelsResponseV1.md new file mode 100644 index 00000000..0efd37d3 --- /dev/null +++ b/docs/reference/LabelsResponseV1.md @@ -0,0 +1,32 @@ +# LabelsResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | Query status. | [optional] +**data** | **List[str]** | List of label names. | [optional] +**warnings** | **List[str]** | A set of warning messages attached to the response. | [optional] +**infos** | **List[str]** | A set of information messages attached to the response. | [optional] + +## Example + +```python +from sysdig_client.models.labels_response_v1 import LabelsResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of LabelsResponseV1 from a JSON string +labels_response_v1_instance = LabelsResponseV1.from_json(json) +# print the JSON string representation of the object +print(LabelsResponseV1.to_json()) + +# convert the object into a dict +labels_response_v1_dict = labels_response_v1_instance.to_dict() +# create an instance of LabelsResponseV1 from a dict +labels_response_v1_from_dict = LabelsResponseV1.from_dict(labels_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Layer.md b/docs/reference/Layer.md new file mode 100644 index 00000000..9e1e3135 --- /dev/null +++ b/docs/reference/Layer.md @@ -0,0 +1,33 @@ +# Layer + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**index** | **int** | layer's index | [optional] +**digest** | **str** | sha256 digest of the layer | +**size** | **int** | size of the layer in bytes | [optional] +**command** | **str** | layer command | [optional] +**base_images_ref** | **List[str]** | base images refs | [optional] + +## Example + +```python +from sysdig_client.models.layer import Layer + +# TODO update the JSON string below +json = "{}" +# create an instance of Layer from a JSON string +layer_instance = Layer.from_json(json) +# print the JSON string representation of the object +print(Layer.to_json()) + +# convert the object into a dict +layer_dict = layer_instance.to_dict() +# create an instance of Layer from a dict +layer_from_dict = Layer.from_dict(layer_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListAuditEventsResponse.md b/docs/reference/ListAuditEventsResponse.md new file mode 100644 index 00000000..0d5e2e4f --- /dev/null +++ b/docs/reference/ListAuditEventsResponse.md @@ -0,0 +1,31 @@ +# ListAuditEventsResponse + +The list of events matching a search criteria. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**AuditPage**](AuditPage.md) | | +**data** | [**List[AuditEvent]**](AuditEvent.md) | The list of Audit events. | + +## Example + +```python +from sysdig_client.models.list_audit_events_response import ListAuditEventsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ListAuditEventsResponse from a JSON string +list_audit_events_response_instance = ListAuditEventsResponse.from_json(json) +# print the JSON string representation of the object +print(ListAuditEventsResponse.to_json()) + +# convert the object into a dict +list_audit_events_response_dict = list_audit_events_response_instance.to_dict() +# create an instance of ListAuditEventsResponse from a dict +list_audit_events_response_from_dict = ListAuditEventsResponse.from_dict(list_audit_events_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListBundlesResponse.md b/docs/reference/ListBundlesResponse.md new file mode 100644 index 00000000..e0fbaddd --- /dev/null +++ b/docs/reference/ListBundlesResponse.md @@ -0,0 +1,31 @@ +# ListBundlesResponse + +Bundles list response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**PoliciesPage**](PoliciesPage.md) | | +**data** | [**List[GetBundleResponse]**](GetBundleResponse.md) | Bundles collection | + +## Example + +```python +from sysdig_client.models.list_bundles_response import ListBundlesResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ListBundlesResponse from a JSON string +list_bundles_response_instance = ListBundlesResponse.from_json(json) +# print the JSON string representation of the object +print(ListBundlesResponse.to_json()) + +# convert the object into a dict +list_bundles_response_dict = list_bundles_response_instance.to_dict() +# create an instance of ListBundlesResponse from a dict +list_bundles_response_from_dict = ListBundlesResponse.from_dict(list_bundles_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListEventsResponse.md b/docs/reference/ListEventsResponse.md new file mode 100644 index 00000000..d2b986de --- /dev/null +++ b/docs/reference/ListEventsResponse.md @@ -0,0 +1,31 @@ +# ListEventsResponse + +The list of events matching a search criteria. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**EventsFeedPage**](EventsFeedPage.md) | | +**data** | [**List[Event]**](Event.md) | The list of events | + +## Example + +```python +from sysdig_client.models.list_events_response import ListEventsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ListEventsResponse from a JSON string +list_events_response_instance = ListEventsResponse.from_json(json) +# print the JSON string representation of the object +print(ListEventsResponse.to_json()) + +# convert the object into a dict +list_events_response_dict = list_events_response_instance.to_dict() +# create an instance of ListEventsResponse from a dict +list_events_response_from_dict = ListEventsResponse.from_dict(list_events_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListIntegrationsResponse.md b/docs/reference/ListIntegrationsResponse.md new file mode 100644 index 00000000..d34cab02 --- /dev/null +++ b/docs/reference/ListIntegrationsResponse.md @@ -0,0 +1,29 @@ +# ListIntegrationsResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[IntegrationResponse]**](IntegrationResponse.md) | | + +## Example + +```python +from sysdig_client.models.list_integrations_response import ListIntegrationsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ListIntegrationsResponse from a JSON string +list_integrations_response_instance = ListIntegrationsResponse.from_json(json) +# print the JSON string representation of the object +print(ListIntegrationsResponse.to_json()) + +# convert the object into a dict +list_integrations_response_dict = list_integrations_response_instance.to_dict() +# create an instance of ListIntegrationsResponse from a dict +list_integrations_response_from_dict = ListIntegrationsResponse.from_dict(list_integrations_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListJobAndDisabledMetricsV1.md b/docs/reference/ListJobAndDisabledMetricsV1.md new file mode 100644 index 00000000..42560b4b --- /dev/null +++ b/docs/reference/ListJobAndDisabledMetricsV1.md @@ -0,0 +1,31 @@ +# ListJobAndDisabledMetricsV1 + +Get Disabled Metrics by Job name Response. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**job_name** | **str** | The name of the Job reporting the metric. | [optional] +**metrics** | [**List[MetricV1]**](MetricV1.md) | List of metrics that are disabled for the Job. | [optional] + +## Example + +```python +from sysdig_client.models.list_job_and_disabled_metrics_v1 import ListJobAndDisabledMetricsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of ListJobAndDisabledMetricsV1 from a JSON string +list_job_and_disabled_metrics_v1_instance = ListJobAndDisabledMetricsV1.from_json(json) +# print the JSON string representation of the object +print(ListJobAndDisabledMetricsV1.to_json()) + +# convert the object into a dict +list_job_and_disabled_metrics_v1_dict = list_job_and_disabled_metrics_v1_instance.to_dict() +# create an instance of ListJobAndDisabledMetricsV1 from a dict +list_job_and_disabled_metrics_v1_from_dict = ListJobAndDisabledMetricsV1.from_dict(list_job_and_disabled_metrics_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListJobs.md b/docs/reference/ListJobs.md new file mode 100644 index 00000000..d03a652a --- /dev/null +++ b/docs/reference/ListJobs.md @@ -0,0 +1,29 @@ +# ListJobs + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[JobResponse]**](JobResponse.md) | List of Jobs. | + +## Example + +```python +from sysdig_client.models.list_jobs import ListJobs + +# TODO update the JSON string below +json = "{}" +# create an instance of ListJobs from a JSON string +list_jobs_instance = ListJobs.from_json(json) +# print the JSON string representation of the object +print(ListJobs.to_json()) + +# convert the object into a dict +list_jobs_dict = list_jobs_instance.to_dict() +# create an instance of ListJobs from a dict +list_jobs_from_dict = ListJobs.from_dict(list_jobs_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListMonitorEventsResponse.md b/docs/reference/ListMonitorEventsResponse.md new file mode 100644 index 00000000..5fa1ff0e --- /dev/null +++ b/docs/reference/ListMonitorEventsResponse.md @@ -0,0 +1,31 @@ +# ListMonitorEventsResponse + +The list of events matching a search criteria. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**MonitorEventsPage**](MonitorEventsPage.md) | | +**data** | [**List[MonitorEvent]**](MonitorEvent.md) | The list of events | + +## Example + +```python +from sysdig_client.models.list_monitor_events_response import ListMonitorEventsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ListMonitorEventsResponse from a JSON string +list_monitor_events_response_instance = ListMonitorEventsResponse.from_json(json) +# print the JSON string representation of the object +print(ListMonitorEventsResponse.to_json()) + +# convert the object into a dict +list_monitor_events_response_dict = list_monitor_events_response_instance.to_dict() +# create an instance of ListMonitorEventsResponse from a dict +list_monitor_events_response_from_dict = ListMonitorEventsResponse.from_dict(list_monitor_events_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListPoliciesResponse.md b/docs/reference/ListPoliciesResponse.md new file mode 100644 index 00000000..0c766a21 --- /dev/null +++ b/docs/reference/ListPoliciesResponse.md @@ -0,0 +1,30 @@ +# ListPoliciesResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**PoliciesPage**](PoliciesPage.md) | | +**data** | [**List[PolicySummary]**](PolicySummary.md) | Policies collection | + +## Example + +```python +from sysdig_client.models.list_policies_response import ListPoliciesResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ListPoliciesResponse from a JSON string +list_policies_response_instance = ListPoliciesResponse.from_json(json) +# print the JSON string representation of the object +print(ListPoliciesResponse.to_json()) + +# convert the object into a dict +list_policies_response_dict = list_policies_response_instance.to_dict() +# create an instance of ListPoliciesResponse from a dict +list_policies_response_from_dict = ListPoliciesResponse.from_dict(list_policies_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListRiskAcceptedResponse.md b/docs/reference/ListRiskAcceptedResponse.md new file mode 100644 index 00000000..668b7f13 --- /dev/null +++ b/docs/reference/ListRiskAcceptedResponse.md @@ -0,0 +1,30 @@ +# ListRiskAcceptedResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[ListRiskAcceptedResponseAllOfData]**](ListRiskAcceptedResponseAllOfData.md) | List of Accepted Risks | + +## Example + +```python +from sysdig_client.models.list_risk_accepted_response import ListRiskAcceptedResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ListRiskAcceptedResponse from a JSON string +list_risk_accepted_response_instance = ListRiskAcceptedResponse.from_json(json) +# print the JSON string representation of the object +print(ListRiskAcceptedResponse.to_json()) + +# convert the object into a dict +list_risk_accepted_response_dict = list_risk_accepted_response_instance.to_dict() +# create an instance of ListRiskAcceptedResponse from a dict +list_risk_accepted_response_from_dict = ListRiskAcceptedResponse.from_dict(list_risk_accepted_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListRiskAcceptedResponseAllOfData.md b/docs/reference/ListRiskAcceptedResponseAllOfData.md new file mode 100644 index 00000000..8327c004 --- /dev/null +++ b/docs/reference/ListRiskAcceptedResponseAllOfData.md @@ -0,0 +1,41 @@ +# ListRiskAcceptedResponseAllOfData + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**entity_type** | **str** | The entity where the Accepted Risk will be applied. | +**context** | [**RiskAcceptedResponseAllOfContext**](RiskAcceptedResponseAllOfContext.md) | | +**id** | **str** | The Accepted Risk ID | +**expiration_date** | **date** | Date when the accepted risk will expire (in YYYY-MM-DD format) | [optional] +**created_at** | **datetime** | Date when the Accepted Risk was created | [optional] +**updated_at** | **datetime** | Date when the Accepted Risk was updated | [optional] +**status** | **str** | Specifies whether the Accepted Risk is enabled or expired | +**created_by** | **str** | User who created the risk acceptance | [optional] +**updated_by** | **str** | User who last updated the risk acceptance | [optional] +**entity_value** | **str** | A value to match with the entityType | +**reason** | **str** | Reason for acceptance | +**description** | **str** | Description of why the accepted risk was created | +**stages** | **List[str]** | List of stages where the risk acceptance is applied, empty list enables risk acceptance for all the stages | [optional] + +## Example + +```python +from sysdig_client.models.list_risk_accepted_response_all_of_data import ListRiskAcceptedResponseAllOfData + +# TODO update the JSON string below +json = "{}" +# create an instance of ListRiskAcceptedResponseAllOfData from a JSON string +list_risk_accepted_response_all_of_data_instance = ListRiskAcceptedResponseAllOfData.from_json(json) +# print the JSON string representation of the object +print(ListRiskAcceptedResponseAllOfData.to_json()) + +# convert the object into a dict +list_risk_accepted_response_all_of_data_dict = list_risk_accepted_response_all_of_data_instance.to_dict() +# create an instance of ListRiskAcceptedResponseAllOfData from a dict +list_risk_accepted_response_all_of_data_from_dict = ListRiskAcceptedResponseAllOfData.from_dict(list_risk_accepted_response_all_of_data_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListSchedules.md b/docs/reference/ListSchedules.md new file mode 100644 index 00000000..37c44433 --- /dev/null +++ b/docs/reference/ListSchedules.md @@ -0,0 +1,29 @@ +# ListSchedules + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[ScheduleResponse]**](ScheduleResponse.md) | List of Schedules. | + +## Example + +```python +from sysdig_client.models.list_schedules import ListSchedules + +# TODO update the JSON string below +json = "{}" +# create an instance of ListSchedules from a JSON string +list_schedules_instance = ListSchedules.from_json(json) +# print the JSON string representation of the object +print(ListSchedules.to_json()) + +# convert the object into a dict +list_schedules_dict = list_schedules_instance.to_dict() +# create an instance of ListSchedules from a dict +list_schedules_from_dict = ListSchedules.from_dict(list_schedules_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListZonesResponseV1.md b/docs/reference/ListZonesResponseV1.md new file mode 100644 index 00000000..1b146476 --- /dev/null +++ b/docs/reference/ListZonesResponseV1.md @@ -0,0 +1,30 @@ +# ListZonesResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[ListZonesResponseV1AllOfData]**](ListZonesResponseV1AllOfData.md) | | [optional] + +## Example + +```python +from sysdig_client.models.list_zones_response_v1 import ListZonesResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of ListZonesResponseV1 from a JSON string +list_zones_response_v1_instance = ListZonesResponseV1.from_json(json) +# print the JSON string representation of the object +print(ListZonesResponseV1.to_json()) + +# convert the object into a dict +list_zones_response_v1_dict = list_zones_response_v1_instance.to_dict() +# create an instance of ListZonesResponseV1 from a dict +list_zones_response_v1_from_dict = ListZonesResponseV1.from_dict(list_zones_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ListZonesResponseV1AllOfData.md b/docs/reference/ListZonesResponseV1AllOfData.md new file mode 100644 index 00000000..71aaad95 --- /dev/null +++ b/docs/reference/ListZonesResponseV1AllOfData.md @@ -0,0 +1,37 @@ +# ListZonesResponseV1AllOfData + +A paged list of Zones + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**name** | **str** | The name of the Zone | [optional] +**description** | **str** | The description of the Zone | [optional] +**author** | **str** | Email of the user who created this Zone | [optional] +**last_modified_by** | **str** | Email of the user who last modified the Zone | [optional] +**last_updated** | **int** | Timestamp indicating the moment the Zone has been last updated.\\ It is expressed in milliseconds elapsed since January 1, 1970 UTC. | [optional] +**is_system** | **bool** | Boolean value indicating if the Zone is a *System* one | [optional] +**scopes** | [**List[ZoneScope]**](ZoneScope.md) | Attached Zone Scopes | [optional] + +## Example + +```python +from sysdig_client.models.list_zones_response_v1_all_of_data import ListZonesResponseV1AllOfData + +# TODO update the JSON string below +json = "{}" +# create an instance of ListZonesResponseV1AllOfData from a JSON string +list_zones_response_v1_all_of_data_instance = ListZonesResponseV1AllOfData.from_json(json) +# print the JSON string representation of the object +print(ListZonesResponseV1AllOfData.to_json()) + +# convert the object into a dict +list_zones_response_v1_all_of_data_dict = list_zones_response_v1_all_of_data_instance.to_dict() +# create an instance of ListZonesResponseV1AllOfData from a dict +list_zones_response_v1_all_of_data_from_dict = ListZonesResponseV1AllOfData.from_dict(list_zones_response_v1_all_of_data_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MalwarePreventedAction.md b/docs/reference/MalwarePreventedAction.md new file mode 100644 index 00000000..c08f5a65 --- /dev/null +++ b/docs/reference/MalwarePreventedAction.md @@ -0,0 +1,32 @@ +# MalwarePreventedAction + +Malware execution prevention + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ActionType**](ActionType.md) | | +**is_successful** | **bool** | Whether or not the action was completed successfully. | [optional] +**err_msg** | **str** | When `isSuccessful` is `false`, details on why the action failed. | [optional] + +## Example + +```python +from sysdig_client.models.malware_prevented_action import MalwarePreventedAction + +# TODO update the JSON string below +json = "{}" +# create an instance of MalwarePreventedAction from a JSON string +malware_prevented_action_instance = MalwarePreventedAction.from_json(json) +# print the JSON string representation of the object +print(MalwarePreventedAction.to_json()) + +# convert the object into a dict +malware_prevented_action_dict = malware_prevented_action_instance.to_dict() +# create an instance of MalwarePreventedAction from a dict +malware_prevented_action_from_dict = MalwarePreventedAction.from_dict(malware_prevented_action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MetadataResponseV1.md b/docs/reference/MetadataResponseV1.md new file mode 100644 index 00000000..a36800df --- /dev/null +++ b/docs/reference/MetadataResponseV1.md @@ -0,0 +1,32 @@ +# MetadataResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | Query status. | [optional] +**data** | **Dict[str, List[MetadataResponseV1DataValueInner]]** | Metric metadata indexed by metric name. | [optional] +**warnings** | **List[str]** | A set of warning messages attached to the response. | [optional] +**infos** | **List[str]** | A set of information messages attached to the response. | [optional] + +## Example + +```python +from sysdig_client.models.metadata_response_v1 import MetadataResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of MetadataResponseV1 from a JSON string +metadata_response_v1_instance = MetadataResponseV1.from_json(json) +# print the JSON string representation of the object +print(MetadataResponseV1.to_json()) + +# convert the object into a dict +metadata_response_v1_dict = metadata_response_v1_instance.to_dict() +# create an instance of MetadataResponseV1 from a dict +metadata_response_v1_from_dict = MetadataResponseV1.from_dict(metadata_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MetadataResponseV1DataValueInner.md b/docs/reference/MetadataResponseV1DataValueInner.md new file mode 100644 index 00000000..e52aeca3 --- /dev/null +++ b/docs/reference/MetadataResponseV1DataValueInner.md @@ -0,0 +1,31 @@ +# MetadataResponseV1DataValueInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | The type of the metric. | +**help** | **str** | A brief description of the metric. | +**unit** | **str** | The unit of measurement for the metric. | + +## Example + +```python +from sysdig_client.models.metadata_response_v1_data_value_inner import MetadataResponseV1DataValueInner + +# TODO update the JSON string below +json = "{}" +# create an instance of MetadataResponseV1DataValueInner from a JSON string +metadata_response_v1_data_value_inner_instance = MetadataResponseV1DataValueInner.from_json(json) +# print the JSON string representation of the object +print(MetadataResponseV1DataValueInner.to_json()) + +# convert the object into a dict +metadata_response_v1_data_value_inner_dict = metadata_response_v1_data_value_inner_instance.to_dict() +# create an instance of MetadataResponseV1DataValueInner from a dict +metadata_response_v1_data_value_inner_from_dict = MetadataResponseV1DataValueInner.from_dict(metadata_response_v1_data_value_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MetricErrorV1.md b/docs/reference/MetricErrorV1.md new file mode 100644 index 00000000..1552b32b --- /dev/null +++ b/docs/reference/MetricErrorV1.md @@ -0,0 +1,32 @@ +# MetricErrorV1 + +Get Disabled Metrics by Job name Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metric_name** | **str** | The metric name which could not be disabled or enabled. | [optional] +**job_name** | **str** | Specifies the name of the job that caused the error. | [optional] +**message** | **str** | Describes the job and metric error. | [optional] + +## Example + +```python +from sysdig_client.models.metric_error_v1 import MetricErrorV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of MetricErrorV1 from a JSON string +metric_error_v1_instance = MetricErrorV1.from_json(json) +# print the JSON string representation of the object +print(MetricErrorV1.to_json()) + +# convert the object into a dict +metric_error_v1_dict = metric_error_v1_instance.to_dict() +# create an instance of MetricErrorV1 from a dict +metric_error_v1_from_dict = MetricErrorV1.from_dict(metric_error_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MetricV1.md b/docs/reference/MetricV1.md new file mode 100644 index 00000000..90177694 --- /dev/null +++ b/docs/reference/MetricV1.md @@ -0,0 +1,33 @@ +# MetricV1 + +Get Disabled Metrics by Job name Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metric_name** | **str** | Specifies the name of the disabled metric. | [optional] +**modified_date** | **datetime** | The timestamp during which the metric was disabled | [optional] +**user_id** | **int** | The UserId responsible for disabling the metric | [optional] +**user_name** | **str** | User name of the person who disabled the metric | [optional] + +## Example + +```python +from sysdig_client.models.metric_v1 import MetricV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of MetricV1 from a JSON string +metric_v1_instance = MetricV1.from_json(json) +# print the JSON string representation of the object +print(MetricV1.to_json()) + +# convert the object into a dict +metric_v1_dict = metric_v1_instance.to_dict() +# create an instance of MetricV1 from a dict +metric_v1_from_dict = MetricV1.from_dict(metric_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MetricsCollectionApi.md b/docs/reference/MetricsCollectionApi.md new file mode 100644 index 00000000..82a5210a --- /dev/null +++ b/docs/reference/MetricsCollectionApi.md @@ -0,0 +1,823 @@ +# sysdig_client.MetricsCollectionApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_custom_prometheus_job_v1**](MetricsCollectionApi.md#create_custom_prometheus_job_v1) | **POST** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName} | Create Custom Prometheus job +[**delete_custom_prometheus_job_by_id_v1**](MetricsCollectionApi.md#delete_custom_prometheus_job_by_id_v1) | **DELETE** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName} | Delete Custom Prometheus job +[**get_custom_prometheus_job_by_name_v1**](MetricsCollectionApi.md#get_custom_prometheus_job_by_name_v1) | **GET** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName} | Get Custom Prometheus Job +[**get_custom_prometheus_job_enablement_v1**](MetricsCollectionApi.md#get_custom_prometheus_job_enablement_v1) | **GET** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement | Get Custom Prometheus Job enablement +[**get_custom_prometheus_jobs_v1**](MetricsCollectionApi.md#get_custom_prometheus_jobs_v1) | **GET** /monitor/prometheus-jobs/v1alpha1/custom-jobs | List Custom Prometheus jobs +[**get_disabled_metrics_by_job_v1**](MetricsCollectionApi.md#get_disabled_metrics_by_job_v1) | **GET** /monitor/prometheus-jobs/v1/disabled-metrics | List disabled metrics collection for Jobs. +[**post_disabled_metrics_v1**](MetricsCollectionApi.md#post_disabled_metrics_v1) | **POST** /monitor/prometheus-jobs/v1/disabled-metrics | Disable or re-enable metrics collection for Jobs +[**update_custom_prometheus_job_by_id_v1**](MetricsCollectionApi.md#update_custom_prometheus_job_by_id_v1) | **PUT** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName} | Update Custom Prometheus Job +[**update_custom_prometheus_job_enablement_v1**](MetricsCollectionApi.md#update_custom_prometheus_job_enablement_v1) | **PUT** /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement | Update Custom Prometheus Job enablement + + +# **create_custom_prometheus_job_v1** +> str create_custom_prometheus_job_v1(job_name, body=body) + +Create Custom Prometheus job + +Create a custom Prometheus job. +\ +The body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\ +\ +The custom job will be disabled by default and must be enabled with the `/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement` api. +\ +You can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations +\ +**CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs. +\ +**Required permissions:** _promcat.integrations.admin_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MetricsCollectionApi(api_client) + job_name = 'my-custom-job' # str | The custom Prometheus job name. + body = 'body_example' # str | The payload to create a custom job. Content must be a valid Prometheus `scrape_config`. (optional) + + try: + # Create Custom Prometheus job + api_response = api_instance.create_custom_prometheus_job_v1(job_name, body=body) + print("The response of MetricsCollectionApi->create_custom_prometheus_job_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling MetricsCollectionApi->create_custom_prometheus_job_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **job_name** | **str**| The custom Prometheus job name. | + **body** | **str**| The payload to create a custom job. Content must be a valid Prometheus `scrape_config`. | [optional] + +### Return type + +**str** + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/yaml + - **Accept**: application/yaml, application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Custom Prometheus job created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_custom_prometheus_job_by_id_v1** +> delete_custom_prometheus_job_by_id_v1(job_name) + +Delete Custom Prometheus job + +Delete a custom Prometheus job by its name.\ +\ +**Required permissions:** _promcat.integrations.admin_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MetricsCollectionApi(api_client) + job_name = 'my-custom-job' # str | The custom Prometheus job name. + + try: + # Delete Custom Prometheus job + api_instance.delete_custom_prometheus_job_by_id_v1(job_name) + except Exception as e: + print("Exception when calling MetricsCollectionApi->delete_custom_prometheus_job_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **job_name** | **str**| The custom Prometheus job name. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Custom Prometheus job deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_custom_prometheus_job_by_name_v1** +> str get_custom_prometheus_job_by_name_v1(job_name) + +Get Custom Prometheus Job + +Retrieve a custom Prometheus job by its name.\ +\ +**Required permissions:** _promcat.integrations.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MetricsCollectionApi(api_client) + job_name = 'my-custom-job' # str | The custom Prometheus job name. + + try: + # Get Custom Prometheus Job + api_response = api_instance.get_custom_prometheus_job_by_name_v1(job_name) + print("The response of MetricsCollectionApi->get_custom_prometheus_job_by_name_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling MetricsCollectionApi->get_custom_prometheus_job_by_name_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **job_name** | **str**| The custom Prometheus job name. | + +### Return type + +**str** + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/yaml, application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Custom Prometheus Job found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_custom_prometheus_job_enablement_v1** +> CustomJobsEnablementV1 get_custom_prometheus_job_enablement_v1(job_name) + +Get Custom Prometheus Job enablement + +Retrieve the enablement state of a custom Prometheus job by its name.\ +\ +**Required permissions:** _promcat.integrations.admin_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.custom_jobs_enablement_v1 import CustomJobsEnablementV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MetricsCollectionApi(api_client) + job_name = 'my-custom-job' # str | The custom Prometheus job name. + + try: + # Get Custom Prometheus Job enablement + api_response = api_instance.get_custom_prometheus_job_enablement_v1(job_name) + print("The response of MetricsCollectionApi->get_custom_prometheus_job_enablement_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling MetricsCollectionApi->get_custom_prometheus_job_enablement_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **job_name** | **str**| The custom Prometheus job name. | + +### Return type + +[**CustomJobsEnablementV1**](CustomJobsEnablementV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Custom Prometheus job found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_custom_prometheus_jobs_v1** +> GetCustomJobsPaginatedResponseV1 get_custom_prometheus_jobs_v1(offset=offset, limit=limit) + +List Custom Prometheus jobs + +Retrieve a paginated list of custom Prometheus jobs.\ +\ +**Required permissions:** _promcat.integrations.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_custom_jobs_paginated_response_v1 import GetCustomJobsPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MetricsCollectionApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + + try: + # List Custom Prometheus jobs + api_response = api_instance.get_custom_prometheus_jobs_v1(offset=offset, limit=limit) + print("The response of MetricsCollectionApi->get_custom_prometheus_jobs_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling MetricsCollectionApi->get_custom_prometheus_jobs_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + +### Return type + +[**GetCustomJobsPaginatedResponseV1**](GetCustomJobsPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The custom jobs page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_disabled_metrics_by_job_v1** +> ResponseListDisabledMetricsV1 get_disabled_metrics_by_job_v1(job_name=job_name, metric_name=metric_name) + +List disabled metrics collection for Jobs. + +List all disabled metrics per Job.\ +\ +**Required permissions:** Integrations Read + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.response_list_disabled_metrics_v1 import ResponseListDisabledMetricsV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MetricsCollectionApi(api_client) + job_name = 'job-name-default' # str | The name of the Prometheus Job whose excluded metrics are to be listed. (optional) + metric_name = 'apache_accesses_total' # str | The exact name of the metric to be filtered. (optional) + + try: + # List disabled metrics collection for Jobs. + api_response = api_instance.get_disabled_metrics_by_job_v1(job_name=job_name, metric_name=metric_name) + print("The response of MetricsCollectionApi->get_disabled_metrics_by_job_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling MetricsCollectionApi->get_disabled_metrics_by_job_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **job_name** | **str**| The name of the Prometheus Job whose excluded metrics are to be listed. | [optional] + **metric_name** | **str**| The exact name of the metric to be filtered. | [optional] + +### Return type + +[**ResponseListDisabledMetricsV1**](ResponseListDisabledMetricsV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of disabled metrics associated with the specified Job. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_disabled_metrics_v1** +> ResponseListDisabledMetricsV1 post_disabled_metrics_v1(request_body_disabled_metrics_v1=request_body_disabled_metrics_v1) + +Disable or re-enable metrics collection for Jobs + +Disable specific metric collection for a specified Job. \ +This API supports specifying multiple Jobs, each with its own list of metrics to be disabled. \ +Additionally, you can use the same API to re-enable metrics that were previously disabled.\ +\ +**Required permissions:** Integrations Full Access + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.request_body_disabled_metrics_v1 import RequestBodyDisabledMetricsV1 +from sysdig_client.models.response_list_disabled_metrics_v1 import ResponseListDisabledMetricsV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MetricsCollectionApi(api_client) + request_body_disabled_metrics_v1 = sysdig_client.RequestBodyDisabledMetricsV1() # RequestBodyDisabledMetricsV1 | (optional) + + try: + # Disable or re-enable metrics collection for Jobs + api_response = api_instance.post_disabled_metrics_v1(request_body_disabled_metrics_v1=request_body_disabled_metrics_v1) + print("The response of MetricsCollectionApi->post_disabled_metrics_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling MetricsCollectionApi->post_disabled_metrics_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **request_body_disabled_metrics_v1** | [**RequestBodyDisabledMetricsV1**](RequestBodyDisabledMetricsV1.md)| | [optional] + +### Return type + +[**ResponseListDisabledMetricsV1**](ResponseListDisabledMetricsV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | All Jobs and metrics have been disabled/re-enabled successfully. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**207** | Some metrics could not be disabled/re-enabled. Check the error information for further explanation. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_custom_prometheus_job_by_id_v1** +> str update_custom_prometheus_job_by_id_v1(job_name, body=body) + +Update Custom Prometheus Job + +Update a custom Prometheus job. +\ +The body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\ +\ +You can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations +\ +**CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs. +\ +**Required permissions:** _promcat.integrations.admin_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MetricsCollectionApi(api_client) + job_name = 'my-custom-job' # str | The custom Prometheus job name. + body = 'body_example' # str | The custom Prometheus job yaml content (optional) + + try: + # Update Custom Prometheus Job + api_response = api_instance.update_custom_prometheus_job_by_id_v1(job_name, body=body) + print("The response of MetricsCollectionApi->update_custom_prometheus_job_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling MetricsCollectionApi->update_custom_prometheus_job_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **job_name** | **str**| The custom Prometheus job name. | + **body** | **str**| The custom Prometheus job yaml content | [optional] + +### Return type + +**str** + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/yaml + - **Accept**: application/yaml, application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Custom Prometheus job updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_custom_prometheus_job_enablement_v1** +> CustomJobsEnablementV1 update_custom_prometheus_job_enablement_v1(job_name, custom_jobs_enablement_v1=custom_jobs_enablement_v1) + +Update Custom Prometheus Job enablement + +Update the enablement state of a custom Prometheus job by its name.\ +\ +**Required permissions:** _promcat.integrations.admin_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.custom_jobs_enablement_v1 import CustomJobsEnablementV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MetricsCollectionApi(api_client) + job_name = 'my-custom-job' # str | The custom Prometheus job name. + custom_jobs_enablement_v1 = sysdig_client.CustomJobsEnablementV1() # CustomJobsEnablementV1 | The payload required to enable the custom Prometheus job. (optional) + + try: + # Update Custom Prometheus Job enablement + api_response = api_instance.update_custom_prometheus_job_enablement_v1(job_name, custom_jobs_enablement_v1=custom_jobs_enablement_v1) + print("The response of MetricsCollectionApi->update_custom_prometheus_job_enablement_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling MetricsCollectionApi->update_custom_prometheus_job_enablement_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **job_name** | **str**| The custom Prometheus job name. | + **custom_jobs_enablement_v1** | [**CustomJobsEnablementV1**](CustomJobsEnablementV1.md)| The payload required to enable the custom Prometheus job. | [optional] + +### Return type + +[**CustomJobsEnablementV1**](CustomJobsEnablementV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Custom Prometheus job enablement updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/MicrosoftSentinelCreateConnectionInfo.md b/docs/reference/MicrosoftSentinelCreateConnectionInfo.md new file mode 100644 index 00000000..6adcf076 --- /dev/null +++ b/docs/reference/MicrosoftSentinelCreateConnectionInfo.md @@ -0,0 +1,30 @@ +# MicrosoftSentinelCreateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**workspace_id** | **str** | Log Analytics workspace ID | +**secret** | **str** | Log analytics primary key | + +## Example + +```python +from sysdig_client.models.microsoft_sentinel_create_connection_info import MicrosoftSentinelCreateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of MicrosoftSentinelCreateConnectionInfo from a JSON string +microsoft_sentinel_create_connection_info_instance = MicrosoftSentinelCreateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(MicrosoftSentinelCreateConnectionInfo.to_json()) + +# convert the object into a dict +microsoft_sentinel_create_connection_info_dict = microsoft_sentinel_create_connection_info_instance.to_dict() +# create an instance of MicrosoftSentinelCreateConnectionInfo from a dict +microsoft_sentinel_create_connection_info_from_dict = MicrosoftSentinelCreateConnectionInfo.from_dict(microsoft_sentinel_create_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MicrosoftSentinelUpdateConnectionInfo.md b/docs/reference/MicrosoftSentinelUpdateConnectionInfo.md new file mode 100644 index 00000000..cc7361d9 --- /dev/null +++ b/docs/reference/MicrosoftSentinelUpdateConnectionInfo.md @@ -0,0 +1,30 @@ +# MicrosoftSentinelUpdateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**workspace_id** | **str** | Log Analytics workspace ID | +**secret** | **str** | Log analytics primary key | [optional] + +## Example + +```python +from sysdig_client.models.microsoft_sentinel_update_connection_info import MicrosoftSentinelUpdateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of MicrosoftSentinelUpdateConnectionInfo from a JSON string +microsoft_sentinel_update_connection_info_instance = MicrosoftSentinelUpdateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(MicrosoftSentinelUpdateConnectionInfo.to_json()) + +# convert the object into a dict +microsoft_sentinel_update_connection_info_dict = microsoft_sentinel_update_connection_info_instance.to_dict() +# create an instance of MicrosoftSentinelUpdateConnectionInfo from a dict +microsoft_sentinel_update_connection_info_from_dict = MicrosoftSentinelUpdateConnectionInfo.from_dict(microsoft_sentinel_update_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MonitorEvent.md b/docs/reference/MonitorEvent.md new file mode 100644 index 00000000..d746ed96 --- /dev/null +++ b/docs/reference/MonitorEvent.md @@ -0,0 +1,30 @@ +# MonitorEvent + +Monitor Event + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | The type of the event. Current supported values are ALERT, CUSTOM. As the list of supported event types may change in the future, clients should handle unknown event types gracefully. | [optional] + +## Example + +```python +from sysdig_client.models.monitor_event import MonitorEvent + +# TODO update the JSON string below +json = "{}" +# create an instance of MonitorEvent from a JSON string +monitor_event_instance = MonitorEvent.from_json(json) +# print the JSON string representation of the object +print(MonitorEvent.to_json()) + +# convert the object into a dict +monitor_event_dict = monitor_event_instance.to_dict() +# create an instance of MonitorEvent from a dict +monitor_event_from_dict = MonitorEvent.from_dict(monitor_event_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MonitorEventsApi.md b/docs/reference/MonitorEventsApi.md new file mode 100644 index 00000000..2307a29f --- /dev/null +++ b/docs/reference/MonitorEventsApi.md @@ -0,0 +1,110 @@ +# sysdig_client.MonitorEventsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_monitor_events_v1**](MonitorEventsApi.md#get_monitor_events_v1) | **GET** /monitor/events/v1/events | Get Events + + +# **get_monitor_events_v1** +> ListMonitorEventsResponse get_monitor_events_v1(var_from=var_from, to=to, cursor=cursor, filter=filter, limit=limit) + +Get Events + +Retrieves the list of events matching the expressed search criteria. +The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. +The time criteria is required and can be specified in two different ways: +- Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. +- Using a `cursor` the events returned will be in the before or after the event, depending on the cursor type. More details are available in the `cursor` attribute in the response.\ +\ +**Required permissions:** +- _alert-events.read_ for alert events to be included in the response +- _custom-events.read_ for custom events to be included in the response + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_monitor_events_response import ListMonitorEventsResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.MonitorEventsApi(api_client) + var_from = 56 # int | (optional) + to = 56 # int | (optional) + cursor = 'cursor_example' # str | (optional) + filter = 'filter_example' # str | (optional) + limit = 25 # int | The number of items to return (optional) (default to 25) + + try: + # Get Events + api_response = api_instance.get_monitor_events_v1(var_from=var_from, to=to, cursor=cursor, filter=filter, limit=limit) + print("The response of MonitorEventsApi->get_monitor_events_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling MonitorEventsApi->get_monitor_events_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **var_from** | **int**| | [optional] + **to** | **int**| | [optional] + **cursor** | **str**| | [optional] + **filter** | **str**| | [optional] + **limit** | **int**| The number of items to return | [optional] [default to 25] + +### Return type + +[**ListMonitorEventsResponse**](ListMonitorEventsResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of events. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Bad request | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/MonitorEventsPage.md b/docs/reference/MonitorEventsPage.md new file mode 100644 index 00000000..32e1a1e6 --- /dev/null +++ b/docs/reference/MonitorEventsPage.md @@ -0,0 +1,32 @@ +# MonitorEventsPage + +Pagination information. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**total** | **int** | The number of events matching the search criteria. This number is always major or equal to the number of events returned. | +**prev** | **str** | `prev` is a string pointing to the previous page of data. Use this as the `cursor` to get the previous page of data. | [optional] +**next** | **str** | `next` is a string pointing to the next page of data. Use this as the `cursor` to scroll paginated results and get the next page of data. If not included, the current response is the last page. | [optional] + +## Example + +```python +from sysdig_client.models.monitor_events_page import MonitorEventsPage + +# TODO update the JSON string below +json = "{}" +# create an instance of MonitorEventsPage from a JSON string +monitor_events_page_instance = MonitorEventsPage.from_json(json) +# print the JSON string representation of the object +print(MonitorEventsPage.to_json()) + +# convert the object into a dict +monitor_events_page_dict = monitor_events_page_instance.to_dict() +# create an instance of MonitorEventsPage from a dict +monitor_events_page_from_dict = MonitorEventsPage.from_dict(monitor_events_page_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MonitorScopeLabel.md b/docs/reference/MonitorScopeLabel.md new file mode 100644 index 00000000..96435db9 --- /dev/null +++ b/docs/reference/MonitorScopeLabel.md @@ -0,0 +1,31 @@ +# MonitorScopeLabel + +Scope Label. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **str** | The label key. | [optional] +**value** | **List[str]** | The scope label value(s) | [optional] + +## Example + +```python +from sysdig_client.models.monitor_scope_label import MonitorScopeLabel + +# TODO update the JSON string below +json = "{}" +# create an instance of MonitorScopeLabel from a JSON string +monitor_scope_label_instance = MonitorScopeLabel.from_json(json) +# print the JSON string representation of the object +print(MonitorScopeLabel.to_json()) + +# convert the object into a dict +monitor_scope_label_dict = monitor_scope_label_instance.to_dict() +# create an instance of MonitorScopeLabel from a dict +monitor_scope_label_from_dict = MonitorScopeLabel.from_dict(monitor_scope_label_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MsTeamsNotificationChannelOptionsV1.md b/docs/reference/MsTeamsNotificationChannelOptionsV1.md new file mode 100644 index 00000000..37af3efd --- /dev/null +++ b/docs/reference/MsTeamsNotificationChannelOptionsV1.md @@ -0,0 +1,31 @@ +# MsTeamsNotificationChannelOptionsV1 + +The Microsoft Teams notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**url** | **str** | Microsoft Teams Webhook URL | + +## Example + +```python +from sysdig_client.models.ms_teams_notification_channel_options_v1 import MsTeamsNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of MsTeamsNotificationChannelOptionsV1 from a JSON string +ms_teams_notification_channel_options_v1_instance = MsTeamsNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(MsTeamsNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +ms_teams_notification_channel_options_v1_dict = ms_teams_notification_channel_options_v1_instance.to_dict() +# create an instance of MsTeamsNotificationChannelOptionsV1 from a dict +ms_teams_notification_channel_options_v1_from_dict = MsTeamsNotificationChannelOptionsV1.from_dict(ms_teams_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/MsTeamsNotificationChannelResponseV1.md b/docs/reference/MsTeamsNotificationChannelResponseV1.md new file mode 100644 index 00000000..c5093a3c --- /dev/null +++ b/docs/reference/MsTeamsNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# MsTeamsNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**MsTeamsNotificationChannelOptionsV1**](MsTeamsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.ms_teams_notification_channel_response_v1 import MsTeamsNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of MsTeamsNotificationChannelResponseV1 from a JSON string +ms_teams_notification_channel_response_v1_instance = MsTeamsNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(MsTeamsNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +ms_teams_notification_channel_response_v1_dict = ms_teams_notification_channel_response_v1_instance.to_dict() +# create an instance of MsTeamsNotificationChannelResponseV1 from a dict +ms_teams_notification_channel_response_v1_from_dict = MsTeamsNotificationChannelResponseV1.from_dict(ms_teams_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/NewRule.md b/docs/reference/NewRule.md new file mode 100644 index 00000000..0fb5a168 --- /dev/null +++ b/docs/reference/NewRule.md @@ -0,0 +1,31 @@ +# NewRule + +A Rule definition + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**rule_type** | **str** | | +**predicates** | [**List[PredicatesInner]**](PredicatesInner.md) | The Predicates defining this Rule | + +## Example + +```python +from sysdig_client.models.new_rule import NewRule + +# TODO update the JSON string below +json = "{}" +# create an instance of NewRule from a JSON string +new_rule_instance = NewRule.from_json(json) +# print the JSON string representation of the object +print(NewRule.to_json()) + +# convert the object into a dict +new_rule_dict = new_rule_instance.to_dict() +# create an instance of NewRule from a dict +new_rule_from_dict = NewRule.from_dict(new_rule_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/NewStage.md b/docs/reference/NewStage.md new file mode 100644 index 00000000..2e2ede8d --- /dev/null +++ b/docs/reference/NewStage.md @@ -0,0 +1,30 @@ +# NewStage + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | stage name. | +**configuration** | [**List[StageConfiguration]**](StageConfiguration.md) | Configurations for the stage | [optional] + +## Example + +```python +from sysdig_client.models.new_stage import NewStage + +# TODO update the JSON string below +json = "{}" +# create an instance of NewStage from a JSON string +new_stage_instance = NewStage.from_json(json) +# print the JSON string representation of the object +print(NewStage.to_json()) + +# convert the object into a dict +new_stage_dict = new_stage_instance.to_dict() +# create an instance of NewStage from a dict +new_stage_from_dict = NewStage.from_dict(new_stage_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/NotificationChannel.md b/docs/reference/NotificationChannel.md new file mode 100644 index 00000000..8cdb4b14 --- /dev/null +++ b/docs/reference/NotificationChannel.md @@ -0,0 +1,31 @@ +# NotificationChannel + +Schema for a notification channel object + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | Notification channel Id | [optional] +**type** | **str** | Notification channel type | [optional] + +## Example + +```python +from sysdig_client.models.notification_channel import NotificationChannel + +# TODO update the JSON string below +json = "{}" +# create an instance of NotificationChannel from a JSON string +notification_channel_instance = NotificationChannel.from_json(json) +# print the JSON string representation of the object +print(NotificationChannel.to_json()) + +# convert the object into a dict +notification_channel_dict = notification_channel_instance.to_dict() +# create an instance of NotificationChannel from a dict +notification_channel_from_dict = NotificationChannel.from_dict(notification_channel_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/NotificationChannelOptionsV1.md b/docs/reference/NotificationChannelOptionsV1.md new file mode 100644 index 00000000..3211655e --- /dev/null +++ b/docs/reference/NotificationChannelOptionsV1.md @@ -0,0 +1,29 @@ +# NotificationChannelOptionsV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] + +## Example + +```python +from sysdig_client.models.notification_channel_options_v1 import NotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of NotificationChannelOptionsV1 from a JSON string +notification_channel_options_v1_instance = NotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(NotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +notification_channel_options_v1_dict = notification_channel_options_v1_instance.to_dict() +# create an instance of NotificationChannelOptionsV1 from a dict +notification_channel_options_v1_from_dict = NotificationChannelOptionsV1.from_dict(notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/NotificationChannelResponseV1.md b/docs/reference/NotificationChannelResponseV1.md new file mode 100644 index 00000000..9bcf7641 --- /dev/null +++ b/docs/reference/NotificationChannelResponseV1.md @@ -0,0 +1,34 @@ +# NotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**customer_id** | **int** | ID of customer that owns the notification channel. | [optional] +**id** | **int** | Unique ID of the resource. | [optional] +**version** | **int** | The current version of the resource. | [optional] +**created_on** | **datetime** | Creation date. | [optional] +**modified_on** | **datetime** | Last modification date. | [optional] + +## Example + +```python +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of NotificationChannelResponseV1 from a JSON string +notification_channel_response_v1_instance = NotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(NotificationChannelResponseV1.to_json()) + +# convert the object into a dict +notification_channel_response_v1_dict = notification_channel_response_v1_instance.to_dict() +# create an instance of NotificationChannelResponseV1 from a dict +notification_channel_response_v1_from_dict = NotificationChannelResponseV1.from_dict(notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/NotificationChannelTypeV1.md b/docs/reference/NotificationChannelTypeV1.md new file mode 100644 index 00000000..d781d020 --- /dev/null +++ b/docs/reference/NotificationChannelTypeV1.md @@ -0,0 +1,35 @@ +# NotificationChannelTypeV1 + +The type of the notification channel + +## Enum + +* `EMAIL` (value: `'EMAIL'`) + +* `SNS` (value: `'SNS'`) + +* `SLACK` (value: `'SLACK'`) + +* `PAGER_DUTY` (value: `'PAGER_DUTY'`) + +* `VICTOROPS` (value: `'VICTOROPS'`) + +* `OPSGENIE` (value: `'OPSGENIE'`) + +* `WEBHOOK` (value: `'WEBHOOK'`) + +* `CUSTOM_WEBHOOK` (value: `'CUSTOM_WEBHOOK'`) + +* `MS_TEAMS` (value: `'MS_TEAMS'`) + +* `TEAM_EMAIL` (value: `'TEAM_EMAIL'`) + +* `IBM_EVENT_NOTIFICATIONS` (value: `'IBM_EVENT_NOTIFICATIONS'`) + +* `PROMETHEUS_ALERT_MANAGER` (value: `'PROMETHEUS_ALERT_MANAGER'`) + +* `GCHAT` (value: `'GCHAT'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/NotificationChannelV1.md b/docs/reference/NotificationChannelV1.md new file mode 100644 index 00000000..838406a4 --- /dev/null +++ b/docs/reference/NotificationChannelV1.md @@ -0,0 +1,32 @@ +# NotificationChannelV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] + +## Example + +```python +from sysdig_client.models.notification_channel_v1 import NotificationChannelV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of NotificationChannelV1 from a JSON string +notification_channel_v1_instance = NotificationChannelV1.from_json(json) +# print the JSON string representation of the object +print(NotificationChannelV1.to_json()) + +# convert the object into a dict +notification_channel_v1_dict = notification_channel_v1_instance.to_dict() +# create an instance of NotificationChannelV1 from a dict +notification_channel_v1_from_dict = NotificationChannelV1.from_dict(notification_channel_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/NotificationChannelsApi.md b/docs/reference/NotificationChannelsApi.md new file mode 100644 index 00000000..df391930 --- /dev/null +++ b/docs/reference/NotificationChannelsApi.md @@ -0,0 +1,451 @@ +# sysdig_client.NotificationChannelsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_notification_channel**](NotificationChannelsApi.md#create_notification_channel) | **POST** /platform/v1/notification-channels | Create Notification Channel +[**delete_notification_channel_by_id**](NotificationChannelsApi.md#delete_notification_channel_by_id) | **DELETE** /platform/v1/notification-channels/{notificationChannelId} | Delete Notification Channel +[**get_notification_channel_by_id**](NotificationChannelsApi.md#get_notification_channel_by_id) | **GET** /platform/v1/notification-channels/{notificationChannelId} | Get Notification Channel +[**get_notification_channels**](NotificationChannelsApi.md#get_notification_channels) | **GET** /platform/v1/notification-channels | List Notification Channels +[**update_notification_channel_by_id**](NotificationChannelsApi.md#update_notification_channel_by_id) | **PUT** /platform/v1/notification-channels/{notificationChannelId} | Update Notification Channel + + +# **create_notification_channel** +> NotificationChannelResponseV1 create_notification_channel(create_notification_channel_request_v1) + +Create Notification Channel + +Create a notification channel.\ +\ +**Required permissions:** _notification-channels.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.NotificationChannelsApi(api_client) + create_notification_channel_request_v1 = sysdig_client.CreateNotificationChannelRequestV1() # CreateNotificationChannelRequestV1 | The payload required to create a notification channel + + try: + # Create Notification Channel + api_response = api_instance.create_notification_channel(create_notification_channel_request_v1) + print("The response of NotificationChannelsApi->create_notification_channel:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling NotificationChannelsApi->create_notification_channel: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_notification_channel_request_v1** | [**CreateNotificationChannelRequestV1**](CreateNotificationChannelRequestV1.md)| The payload required to create a notification channel | + +### Return type + +[**NotificationChannelResponseV1**](NotificationChannelResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Notification Channel created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_notification_channel_by_id** +> delete_notification_channel_by_id(notification_channel_id) + +Delete Notification Channel + +Delete a notification channel by its ID.\ +\ +**Required permissions:** _notification-channels.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.NotificationChannelsApi(api_client) + notification_channel_id = 56 # int | The Notification Channel Identifier + + try: + # Delete Notification Channel + api_instance.delete_notification_channel_by_id(notification_channel_id) + except Exception as e: + print("Exception when calling NotificationChannelsApi->delete_notification_channel_by_id: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **notification_channel_id** | **int**| The Notification Channel Identifier | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Notification Channel deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_notification_channel_by_id** +> NotificationChannelResponseV1 get_notification_channel_by_id(notification_channel_id) + +Get Notification Channel + +Returns a specific notification channel by its ID.\ +\ +**Required permissions:** _notification-channels.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.NotificationChannelsApi(api_client) + notification_channel_id = 56 # int | The Notification Channel Identifier + + try: + # Get Notification Channel + api_response = api_instance.get_notification_channel_by_id(notification_channel_id) + print("The response of NotificationChannelsApi->get_notification_channel_by_id:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling NotificationChannelsApi->get_notification_channel_by_id: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **notification_channel_id** | **int**| The Notification Channel Identifier | + +### Return type + +[**NotificationChannelResponseV1**](NotificationChannelResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Notification Channel found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_notification_channels** +> GetNotificationChannelsPaginatedResponseV1 get_notification_channels(offset=offset, limit=limit) + +List Notification Channels + +Retrieve a paginated list of notification channels.\ +\ +**Required permissions:** _notification-channels.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_notification_channels_paginated_response_v1 import GetNotificationChannelsPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.NotificationChannelsApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + + try: + # List Notification Channels + api_response = api_instance.get_notification_channels(offset=offset, limit=limit) + print("The response of NotificationChannelsApi->get_notification_channels:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling NotificationChannelsApi->get_notification_channels: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + +### Return type + +[**GetNotificationChannelsPaginatedResponseV1**](GetNotificationChannelsPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A page of notification channels. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_notification_channel_by_id** +> NotificationChannelResponseV1 update_notification_channel_by_id(notification_channel_id, update_notification_channel_request_v1) + +Update Notification Channel + +Update a notification channel by its ID.\ +\ +**Required permissions:** _notification-channels.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.NotificationChannelsApi(api_client) + notification_channel_id = 56 # int | The Notification Channel Identifier + update_notification_channel_request_v1 = sysdig_client.UpdateNotificationChannelRequestV1() # UpdateNotificationChannelRequestV1 | The payload required to update the notification channel + + try: + # Update Notification Channel + api_response = api_instance.update_notification_channel_by_id(notification_channel_id, update_notification_channel_request_v1) + print("The response of NotificationChannelsApi->update_notification_channel_by_id:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling NotificationChannelsApi->update_notification_channel_by_id: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **notification_channel_id** | **int**| The Notification Channel Identifier | + **update_notification_channel_request_v1** | [**UpdateNotificationChannelRequestV1**](UpdateNotificationChannelRequestV1.md)| The payload required to update the notification channel | + +### Return type + +[**NotificationChannelResponseV1**](NotificationChannelResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Notification channel updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/OffsetPaginatedResponse.md b/docs/reference/OffsetPaginatedResponse.md new file mode 100644 index 00000000..40dd7833 --- /dev/null +++ b/docs/reference/OffsetPaginatedResponse.md @@ -0,0 +1,30 @@ +# OffsetPaginatedResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | **List[object]** | Paginated data. | [optional] + +## Example + +```python +from sysdig_client.models.offset_paginated_response import OffsetPaginatedResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of OffsetPaginatedResponse from a JSON string +offset_paginated_response_instance = OffsetPaginatedResponse.from_json(json) +# print the JSON string representation of the object +print(OffsetPaginatedResponse.to_json()) + +# convert the object into a dict +offset_paginated_response_dict = offset_paginated_response_instance.to_dict() +# create an instance of OffsetPaginatedResponse from a dict +offset_paginated_response_from_dict = OffsetPaginatedResponse.from_dict(offset_paginated_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/OffsetPaginatedResponsePage.md b/docs/reference/OffsetPaginatedResponsePage.md new file mode 100644 index 00000000..01c0d7d0 --- /dev/null +++ b/docs/reference/OffsetPaginatedResponsePage.md @@ -0,0 +1,32 @@ +# OffsetPaginatedResponsePage + +Page information. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**previous** | **str** | | [optional] +**next** | **str** | | [optional] +**total** | **int** | | [optional] + +## Example + +```python +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage + +# TODO update the JSON string below +json = "{}" +# create an instance of OffsetPaginatedResponsePage from a JSON string +offset_paginated_response_page_instance = OffsetPaginatedResponsePage.from_json(json) +# print the JSON string representation of the object +print(OffsetPaginatedResponsePage.to_json()) + +# convert the object into a dict +offset_paginated_response_page_dict = offset_paginated_response_page_instance.to_dict() +# create an instance of OffsetPaginatedResponsePage from a dict +offset_paginated_response_page_from_dict = OffsetPaginatedResponsePage.from_dict(offset_paginated_response_page_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/OpenIdBaseV1.md b/docs/reference/OpenIdBaseV1.md new file mode 100644 index 00000000..bd23936a --- /dev/null +++ b/docs/reference/OpenIdBaseV1.md @@ -0,0 +1,35 @@ +# OpenIdBaseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**issuer_url** | **str** | The issuer URL of the OpenID Connect provider. | [optional] +**client_id** | **str** | The client ID of the OpenID Connect provider. | [optional] +**is_metadata_discovery_enabled** | **bool** | Flag to indicate if the metadata discovery is enabled. | [optional] +**metadata** | [**OpenIdMetadataV1**](OpenIdMetadataV1.md) | The metadata of the OpenID Connect provider. | [optional] +**group_attribute_name** | **str** | The group attribute name of the OpenID Connect provider. | [optional] +**is_additional_scopes_check_enabled** | **bool** | Flag to indicate if the additional scopes verification on login. | [optional] +**additional_scopes** | **List[str]** | List of additional scopes to be verified on login. | [optional] + +## Example + +```python +from sysdig_client.models.open_id_base_v1 import OpenIdBaseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of OpenIdBaseV1 from a JSON string +open_id_base_v1_instance = OpenIdBaseV1.from_json(json) +# print the JSON string representation of the object +print(OpenIdBaseV1.to_json()) + +# convert the object into a dict +open_id_base_v1_dict = open_id_base_v1_instance.to_dict() +# create an instance of OpenIdBaseV1 from a dict +open_id_base_v1_from_dict = OpenIdBaseV1.from_dict(open_id_base_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/OpenIdConfigResponseV1.md b/docs/reference/OpenIdConfigResponseV1.md new file mode 100644 index 00000000..7f75244e --- /dev/null +++ b/docs/reference/OpenIdConfigResponseV1.md @@ -0,0 +1,35 @@ +# OpenIdConfigResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**issuer_url** | **str** | The issuer URL of the OpenID Connect provider. | [optional] +**client_id** | **str** | The client ID of the OpenID Connect provider. | [optional] +**is_metadata_discovery_enabled** | **bool** | Flag to indicate if the metadata discovery is enabled. | [optional] +**metadata** | [**OpenIdMetadataV1**](OpenIdMetadataV1.md) | The metadata of the OpenID Connect provider. | [optional] +**group_attribute_name** | **str** | The group attribute name of the OpenID Connect provider. | [optional] +**is_additional_scopes_check_enabled** | **bool** | Flag to indicate if the additional scopes verification on login. | [optional] +**additional_scopes** | **List[str]** | List of additional scopes to be verified on login. | [optional] + +## Example + +```python +from sysdig_client.models.open_id_config_response_v1 import OpenIdConfigResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of OpenIdConfigResponseV1 from a JSON string +open_id_config_response_v1_instance = OpenIdConfigResponseV1.from_json(json) +# print the JSON string representation of the object +print(OpenIdConfigResponseV1.to_json()) + +# convert the object into a dict +open_id_config_response_v1_dict = open_id_config_response_v1_instance.to_dict() +# create an instance of OpenIdConfigResponseV1 from a dict +open_id_config_response_v1_from_dict = OpenIdConfigResponseV1.from_dict(open_id_config_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/OpenIdCreateRequestV1.md b/docs/reference/OpenIdCreateRequestV1.md new file mode 100644 index 00000000..0958cd0f --- /dev/null +++ b/docs/reference/OpenIdCreateRequestV1.md @@ -0,0 +1,36 @@ +# OpenIdCreateRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**issuer_url** | **str** | The issuer URL of the OpenID Connect provider. | +**client_id** | **str** | The client ID of the OpenID Connect provider. | +**is_metadata_discovery_enabled** | **bool** | Flag to indicate if the metadata discovery is enabled. | [optional] +**metadata** | [**OpenIdMetadataV1**](OpenIdMetadataV1.md) | The metadata of the OpenID Connect provider. | [optional] +**group_attribute_name** | **str** | The group attribute name of the OpenID Connect provider. | [optional] +**is_additional_scopes_check_enabled** | **bool** | Flag to indicate if the additional scopes verification on login. | [optional] +**additional_scopes** | **List[str]** | List of additional scopes to be verified on login. | [optional] +**client_secret** | **str** | The client secret of the OpenID Connect provider. | + +## Example + +```python +from sysdig_client.models.open_id_create_request_v1 import OpenIdCreateRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of OpenIdCreateRequestV1 from a JSON string +open_id_create_request_v1_instance = OpenIdCreateRequestV1.from_json(json) +# print the JSON string representation of the object +print(OpenIdCreateRequestV1.to_json()) + +# convert the object into a dict +open_id_create_request_v1_dict = open_id_create_request_v1_instance.to_dict() +# create an instance of OpenIdCreateRequestV1 from a dict +open_id_create_request_v1_from_dict = OpenIdCreateRequestV1.from_dict(open_id_create_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/OpenIdMetadataV1.md b/docs/reference/OpenIdMetadataV1.md new file mode 100644 index 00000000..a603cd09 --- /dev/null +++ b/docs/reference/OpenIdMetadataV1.md @@ -0,0 +1,35 @@ +# OpenIdMetadataV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**issuer** | **str** | The base issuer URL of the OpenID Connect provider. | +**authorization_endpoint** | **str** | The authorization endpoint of the OpenID Connect provider. | +**token_endpoint** | **str** | The token endpoint of the OpenID Connect provider. | +**jwks_uri** | **str** | The JSON Web Key Set URI of the OpenID Connect provider. | +**end_session_endpoint** | **str** | Single sign-out endpoint of the OpenID Connect provider. | [optional] +**user_info_endpoint** | **str** | The user info endpoint of the OpenID Connect provider. | [optional] +**token_auth_method** | **str** | The token authentication method of the OpenID Connect provider. | + +## Example + +```python +from sysdig_client.models.open_id_metadata_v1 import OpenIdMetadataV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of OpenIdMetadataV1 from a JSON string +open_id_metadata_v1_instance = OpenIdMetadataV1.from_json(json) +# print the JSON string representation of the object +print(OpenIdMetadataV1.to_json()) + +# convert the object into a dict +open_id_metadata_v1_dict = open_id_metadata_v1_instance.to_dict() +# create an instance of OpenIdMetadataV1 from a dict +open_id_metadata_v1_from_dict = OpenIdMetadataV1.from_dict(open_id_metadata_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/OpenIdRequestBaseV1.md b/docs/reference/OpenIdRequestBaseV1.md new file mode 100644 index 00000000..b4c13e9a --- /dev/null +++ b/docs/reference/OpenIdRequestBaseV1.md @@ -0,0 +1,36 @@ +# OpenIdRequestBaseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**issuer_url** | **str** | The issuer URL of the OpenID Connect provider. | [optional] +**client_id** | **str** | The client ID of the OpenID Connect provider. | [optional] +**is_metadata_discovery_enabled** | **bool** | Flag to indicate if the metadata discovery is enabled. | [optional] +**metadata** | [**OpenIdMetadataV1**](OpenIdMetadataV1.md) | The metadata of the OpenID Connect provider. | [optional] +**group_attribute_name** | **str** | The group attribute name of the OpenID Connect provider. | [optional] +**is_additional_scopes_check_enabled** | **bool** | Flag to indicate if the additional scopes verification on login. | [optional] +**additional_scopes** | **List[str]** | List of additional scopes to be verified on login. | [optional] +**client_secret** | **str** | The client secret of the OpenID Connect provider. | [optional] + +## Example + +```python +from sysdig_client.models.open_id_request_base_v1 import OpenIdRequestBaseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of OpenIdRequestBaseV1 from a JSON string +open_id_request_base_v1_instance = OpenIdRequestBaseV1.from_json(json) +# print the JSON string representation of the object +print(OpenIdRequestBaseV1.to_json()) + +# convert the object into a dict +open_id_request_base_v1_dict = open_id_request_base_v1_instance.to_dict() +# create an instance of OpenIdRequestBaseV1 from a dict +open_id_request_base_v1_from_dict = OpenIdRequestBaseV1.from_dict(open_id_request_base_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/OpenIdUpdateRequestV1.md b/docs/reference/OpenIdUpdateRequestV1.md new file mode 100644 index 00000000..863fecbb --- /dev/null +++ b/docs/reference/OpenIdUpdateRequestV1.md @@ -0,0 +1,36 @@ +# OpenIdUpdateRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**issuer_url** | **str** | The issuer URL of the OpenID Connect provider. | +**client_id** | **str** | The client ID of the OpenID Connect provider. | +**is_metadata_discovery_enabled** | **bool** | Flag to indicate if the metadata discovery is enabled. | +**metadata** | [**OpenIdMetadataV1**](OpenIdMetadataV1.md) | The metadata of the OpenID Connect provider. | [optional] +**group_attribute_name** | **str** | The group attribute name of the OpenID Connect provider. | [optional] +**is_additional_scopes_check_enabled** | **bool** | Flag to indicate if the additional scopes verification on login. | +**additional_scopes** | **List[str]** | List of additional scopes to be verified on login. | [optional] +**client_secret** | **str** | The client secret of the OpenID Connect provider. | + +## Example + +```python +from sysdig_client.models.open_id_update_request_v1 import OpenIdUpdateRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of OpenIdUpdateRequestV1 from a JSON string +open_id_update_request_v1_instance = OpenIdUpdateRequestV1.from_json(json) +# print the JSON string representation of the object +print(OpenIdUpdateRequestV1.to_json()) + +# convert the object into a dict +open_id_update_request_v1_dict = open_id_update_request_v1_instance.to_dict() +# create an instance of OpenIdUpdateRequestV1 from a dict +open_id_update_request_v1_from_dict = OpenIdUpdateRequestV1.from_dict(open_id_update_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Operand.md b/docs/reference/Operand.md new file mode 100644 index 00000000..24a8b95e --- /dev/null +++ b/docs/reference/Operand.md @@ -0,0 +1,25 @@ +# Operand + +A supported operand for filtering events. + +## Enum + +* `EQUAL` (value: `'='`) + +* `EXCLAMATION_EQUAL` (value: `'!='`) + +* `EXISTS` (value: `'exists'`) + +* `NOT_EXISTS` (value: `'not exists'`) + +* `STARTS_WITH` (value: `'starts with'`) + +* `CONTAINS` (value: `'contains'`) + +* `IN` (value: `'in'`) + +* `NOT_IN` (value: `'not in'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/OpsgenieNotificationChannelOptionsV1.md b/docs/reference/OpsgenieNotificationChannelOptionsV1.md new file mode 100644 index 00000000..66409d30 --- /dev/null +++ b/docs/reference/OpsgenieNotificationChannelOptionsV1.md @@ -0,0 +1,32 @@ +# OpsgenieNotificationChannelOptionsV1 + +The Opsgenie notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**region** | **str** | The Opsgenie region to use | [optional] +**api_key** | **str** | The Opsgenie api key | + +## Example + +```python +from sysdig_client.models.opsgenie_notification_channel_options_v1 import OpsgenieNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of OpsgenieNotificationChannelOptionsV1 from a JSON string +opsgenie_notification_channel_options_v1_instance = OpsgenieNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(OpsgenieNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +opsgenie_notification_channel_options_v1_dict = opsgenie_notification_channel_options_v1_instance.to_dict() +# create an instance of OpsgenieNotificationChannelOptionsV1 from a dict +opsgenie_notification_channel_options_v1_from_dict = OpsgenieNotificationChannelOptionsV1.from_dict(opsgenie_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/OpsgenieNotificationChannelResponseV1.md b/docs/reference/OpsgenieNotificationChannelResponseV1.md new file mode 100644 index 00000000..d6ae0c9b --- /dev/null +++ b/docs/reference/OpsgenieNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# OpsgenieNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**OpsgenieNotificationChannelOptionsV1**](OpsgenieNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.opsgenie_notification_channel_response_v1 import OpsgenieNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of OpsgenieNotificationChannelResponseV1 from a JSON string +opsgenie_notification_channel_response_v1_instance = OpsgenieNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(OpsgenieNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +opsgenie_notification_channel_response_v1_dict = opsgenie_notification_channel_response_v1_instance.to_dict() +# create an instance of OpsgenieNotificationChannelResponseV1 from a dict +opsgenie_notification_channel_response_v1_from_dict = OpsgenieNotificationChannelResponseV1.from_dict(opsgenie_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Originator.md b/docs/reference/Originator.md new file mode 100644 index 00000000..ffff4ea9 --- /dev/null +++ b/docs/reference/Originator.md @@ -0,0 +1,17 @@ +# Originator + +Type of event: - policy - Agent-based runtime threat detection events - profilingDetection - Workload ML detections - falcocloud - Agentless threat detections - admissionController - Kubernetes admission control based posture events + +## Enum + +* `POLICY` (value: `'policy'`) + +* `PROFILINGDETECTION` (value: `'profilingDetection'`) + +* `FALCOCLOUD` (value: `'falcocloud'`) + +* `ADMISSIONCONTROLLER` (value: `'admissionController'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Package.md b/docs/reference/Package.md new file mode 100644 index 00000000..e5245e05 --- /dev/null +++ b/docs/reference/Package.md @@ -0,0 +1,39 @@ +# Package + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | scan result package type, example values are: - os - rust - java - ruby - javascript - python - php - golang - C# | +**name** | **str** | name of the package | +**is_running** | **bool** | whether the package is used by a running process | [optional] +**is_removed** | **bool** | whether the package has been removed | [optional] +**version** | **str** | version of the affected package | +**license** | **str** | license of the package | [optional] +**path** | **str** | path of the package | [optional] +**suggested_fix** | **str** | suggested fix for the package | [optional] +**layer_ref** | **str** | reference to layer | [optional] +**risk_accept_refs** | **List[str]** | Reference to the accepted risk. | [optional] +**vulnerabilities_refs** | **List[str]** | reference to vulnerabilities of the package | [optional] + +## Example + +```python +from sysdig_client.models.package import Package + +# TODO update the JSON string below +json = "{}" +# create an instance of Package from a JSON string +package_instance = Package.from_json(json) +# print the JSON string representation of the object +print(Package.to_json()) + +# convert the object into a dict +package_dict = package_instance.to_dict() +# create an instance of Package from a dict +package_from_dict = Package.from_dict(package_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PackageName.md b/docs/reference/PackageName.md new file mode 100644 index 00000000..57493e74 --- /dev/null +++ b/docs/reference/PackageName.md @@ -0,0 +1,30 @@ +# PackageName + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.package_name import PackageName + +# TODO update the JSON string below +json = "{}" +# create an instance of PackageName from a JSON string +package_name_instance = PackageName.from_json(json) +# print the JSON string representation of the object +print(PackageName.to_json()) + +# convert the object into a dict +package_name_dict = package_name_instance.to_dict() +# create an instance of PackageName from a dict +package_name_from_dict = PackageName.from_dict(package_name_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PackageNameVersion.md b/docs/reference/PackageNameVersion.md new file mode 100644 index 00000000..e21107da --- /dev/null +++ b/docs/reference/PackageNameVersion.md @@ -0,0 +1,30 @@ +# PackageNameVersion + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.package_name_version import PackageNameVersion + +# TODO update the JSON string below +json = "{}" +# create an instance of PackageNameVersion from a JSON string +package_name_version_instance = PackageNameVersion.from_json(json) +# print the JSON string representation of the object +print(PackageNameVersion.to_json()) + +# convert the object into a dict +package_name_version_dict = package_name_version_instance.to_dict() +# create an instance of PackageNameVersion from a dict +package_name_version_from_dict = PackageNameVersion.from_dict(package_name_version_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PackagePath.md b/docs/reference/PackagePath.md new file mode 100644 index 00000000..4ae9584f --- /dev/null +++ b/docs/reference/PackagePath.md @@ -0,0 +1,30 @@ +# PackagePath + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.package_path import PackagePath + +# TODO update the JSON string below +json = "{}" +# create an instance of PackagePath from a JSON string +package_path_instance = PackagePath.from_json(json) +# print the JSON string representation of the object +print(PackagePath.to_json()) + +# convert the object into a dict +package_path_dict = package_path_instance.to_dict() +# create an instance of PackagePath from a dict +package_path_from_dict = PackagePath.from_dict(package_path_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PackagePathVersion.md b/docs/reference/PackagePathVersion.md new file mode 100644 index 00000000..5e9cf58f --- /dev/null +++ b/docs/reference/PackagePathVersion.md @@ -0,0 +1,30 @@ +# PackagePathVersion + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.package_path_version import PackagePathVersion + +# TODO update the JSON string below +json = "{}" +# create an instance of PackagePathVersion from a JSON string +package_path_version_instance = PackagePathVersion.from_json(json) +# print the JSON string representation of the object +print(PackagePathVersion.to_json()) + +# convert the object into a dict +package_path_version_dict = package_path_version_instance.to_dict() +# create an instance of PackagePathVersion from a dict +package_path_version_from_dict = PackagePathVersion.from_dict(package_path_version_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PackageVersion.md b/docs/reference/PackageVersion.md new file mode 100644 index 00000000..c7daeef9 --- /dev/null +++ b/docs/reference/PackageVersion.md @@ -0,0 +1,30 @@ +# PackageVersion + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**context_type** | **str** | Matcher type to apply | [optional] +**context_value** | **str** | Value to match | [optional] + +## Example + +```python +from sysdig_client.models.package_version import PackageVersion + +# TODO update the JSON string below +json = "{}" +# create an instance of PackageVersion from a JSON string +package_version_instance = PackageVersion.from_json(json) +# print the JSON string representation of the object +print(PackageVersion.to_json()) + +# convert the object into a dict +package_version_dict = package_version_instance.to_dict() +# create an instance of PackageVersion from a dict +package_version_from_dict = PackageVersion.from_dict(package_version_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Page.md b/docs/reference/Page.md new file mode 100644 index 00000000..47f8421a --- /dev/null +++ b/docs/reference/Page.md @@ -0,0 +1,32 @@ +# Page + +Pagination information. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**total** | **int** | The number of events matching the search criteria. This number is always major or equal to the number of events returned. | +**prev** | **str** | The cursor that can be used to fetch a set of events before the first event returned in the `data` array. If this value is unset, then there are no events before the first event returned in the `data` array. By providing this value as `cursor` you will get the events preceding the first event returned in the `data` array. | [optional] +**next** | **str** | The cursor that can be used to fetch a set of events after the last event returned in the `data` array. If this value is unset, then there are no events after the last event returned in the `data` array. By providing this value as `cursor` you will get the events following last event returned in the `data` array. | [optional] + +## Example + +```python +from sysdig_client.models.page import Page + +# TODO update the JSON string below +json = "{}" +# create an instance of Page from a JSON string +page_instance = Page.from_json(json) +# print the JSON string representation of the object +print(Page.to_json()) + +# convert the object into a dict +page_dict = page_instance.to_dict() +# create an instance of Page from a dict +page_from_dict = Page.from_dict(page_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PagerDutyNotificationChannelOptionsV1.md b/docs/reference/PagerDutyNotificationChannelOptionsV1.md new file mode 100644 index 00000000..07829563 --- /dev/null +++ b/docs/reference/PagerDutyNotificationChannelOptionsV1.md @@ -0,0 +1,33 @@ +# PagerDutyNotificationChannelOptionsV1 + +The PagerDuty notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**account** | **str** | The PagerDuty account used for the integration | +**service_key** | **str** | The PagerDuty service integration key | +**service_name** | **str** | The PagerDuty service name | + +## Example + +```python +from sysdig_client.models.pager_duty_notification_channel_options_v1 import PagerDutyNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of PagerDutyNotificationChannelOptionsV1 from a JSON string +pager_duty_notification_channel_options_v1_instance = PagerDutyNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(PagerDutyNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +pager_duty_notification_channel_options_v1_dict = pager_duty_notification_channel_options_v1_instance.to_dict() +# create an instance of PagerDutyNotificationChannelOptionsV1 from a dict +pager_duty_notification_channel_options_v1_from_dict = PagerDutyNotificationChannelOptionsV1.from_dict(pager_duty_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PagerDutyNotificationChannelResponseV1.md b/docs/reference/PagerDutyNotificationChannelResponseV1.md new file mode 100644 index 00000000..ace92416 --- /dev/null +++ b/docs/reference/PagerDutyNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# PagerDutyNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**PagerDutyNotificationChannelOptionsV1**](PagerDutyNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.pager_duty_notification_channel_response_v1 import PagerDutyNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of PagerDutyNotificationChannelResponseV1 from a JSON string +pager_duty_notification_channel_response_v1_instance = PagerDutyNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(PagerDutyNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +pager_duty_notification_channel_response_v1_dict = pager_duty_notification_channel_response_v1_instance.to_dict() +# create an instance of PagerDutyNotificationChannelResponseV1 from a dict +pager_duty_notification_channel_response_v1_from_dict = PagerDutyNotificationChannelResponseV1.from_dict(pager_duty_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PaginatedIntegrationsResponseV1.md b/docs/reference/PaginatedIntegrationsResponseV1.md new file mode 100644 index 00000000..e65fae32 --- /dev/null +++ b/docs/reference/PaginatedIntegrationsResponseV1.md @@ -0,0 +1,30 @@ +# PaginatedIntegrationsResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**OffsetPaginatedResponsePage**](OffsetPaginatedResponsePage.md) | | [optional] +**data** | [**List[IntegrationResponseV1]**](IntegrationResponseV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.paginated_integrations_response_v1 import PaginatedIntegrationsResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of PaginatedIntegrationsResponseV1 from a JSON string +paginated_integrations_response_v1_instance = PaginatedIntegrationsResponseV1.from_json(json) +# print the JSON string representation of the object +print(PaginatedIntegrationsResponseV1.to_json()) + +# convert the object into a dict +paginated_integrations_response_v1_dict = paginated_integrations_response_v1_instance.to_dict() +# create an instance of PaginatedIntegrationsResponseV1 from a dict +paginated_integrations_response_v1_from_dict = PaginatedIntegrationsResponseV1.from_dict(paginated_integrations_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PermissionV1.md b/docs/reference/PermissionV1.md new file mode 100644 index 00000000..99d6e452 --- /dev/null +++ b/docs/reference/PermissionV1.md @@ -0,0 +1,33 @@ +# PermissionV1 + +Permission to perform an action on the Sysdig platform. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Permission Authority. | [optional] +**description** | **str** | Permission description. | [optional] +**products** | **List[str]** | Specifies the Sysdig product the permission applies to (Secure = SDS; Monitor = SDC). | [optional] +**dependencies** | **List[str]** | List of permissions that this permission depends on. | [optional] + +## Example + +```python +from sysdig_client.models.permission_v1 import PermissionV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of PermissionV1 from a JSON string +permission_v1_instance = PermissionV1.from_json(json) +# print the JSON string representation of the object +print(PermissionV1.to_json()) + +# convert the object into a dict +permission_v1_dict = permission_v1_instance.to_dict() +# create an instance of PermissionV1 from a dict +permission_v1_from_dict = PermissionV1.from_dict(permission_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PermissionsApi.md b/docs/reference/PermissionsApi.md new file mode 100644 index 00000000..a4bcb0cd --- /dev/null +++ b/docs/reference/PermissionsApi.md @@ -0,0 +1,94 @@ +# sysdig_client.PermissionsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_permissions_v1**](PermissionsApi.md#get_permissions_v1) | **GET** /platform/v1/permissions | Get Customer Permissions + + +# **get_permissions_v1** +> GetPermissionsResponseV1 get_permissions_v1(filter=filter) + +Get Customer Permissions + +Retrieve a list of permissions that are used in custom roles.\ +\ +**Required permissions:** _permissions.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_permissions_response_v1 import GetPermissionsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PermissionsApi(api_client) + filter = '' # str | Filter by products when getting permissions for custom roles.\\ Avaliable products are: SDS, SDC.\\ You can specify a single product or a list of products separated by commas.\\ Product names are case-sensitive.\\ If not specified, all permissions are returned. (optional) (default to '') + + try: + # Get Customer Permissions + api_response = api_instance.get_permissions_v1(filter=filter) + print("The response of PermissionsApi->get_permissions_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PermissionsApi->get_permissions_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **filter** | **str**| Filter by products when getting permissions for custom roles.\\ Avaliable products are: SDS, SDC.\\ You can specify a single product or a list of products separated by commas.\\ Product names are case-sensitive.\\ If not specified, all permissions are returned. | [optional] [default to ''] + +### Return type + +[**GetPermissionsResponseV1**](GetPermissionsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Display Permissions. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/PipelineResult.md b/docs/reference/PipelineResult.md new file mode 100644 index 00000000..1ad3b0a8 --- /dev/null +++ b/docs/reference/PipelineResult.md @@ -0,0 +1,35 @@ +# PipelineResult + +pipeline result + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**policy_evaluation_result** | [**PolicyEvaluationResult**](PolicyEvaluationResult.md) | | [optional] +**result_id** | **str** | Identifier of the scan result | [optional] +**pull_string** | **str** | image pull string | [optional] +**vuln_total_by_severity** | [**VulnTotalBySeverity**](VulnTotalBySeverity.md) | | [optional] +**image_id** | **str** | Identifier of the image (hash). | [optional] +**created_at** | **str** | datetime of creation | [optional] + +## Example + +```python +from sysdig_client.models.pipeline_result import PipelineResult + +# TODO update the JSON string below +json = "{}" +# create an instance of PipelineResult from a JSON string +pipeline_result_instance = PipelineResult.from_json(json) +# print the JSON string representation of the object +print(PipelineResult.to_json()) + +# convert the object into a dict +pipeline_result_dict = pipeline_result_instance.to_dict() +# create an instance of PipelineResult from a dict +pipeline_result_from_dict = PipelineResult.from_dict(pipeline_result_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PipelineResultsResponse.md b/docs/reference/PipelineResultsResponse.md new file mode 100644 index 00000000..95ee123b --- /dev/null +++ b/docs/reference/PipelineResultsResponse.md @@ -0,0 +1,31 @@ +# PipelineResultsResponse + +pipeline results + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**VulnerabilityManagementPage**](VulnerabilityManagementPage.md) | | [optional] +**data** | [**List[PipelineResult]**](PipelineResult.md) | | [optional] + +## Example + +```python +from sysdig_client.models.pipeline_results_response import PipelineResultsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of PipelineResultsResponse from a JSON string +pipeline_results_response_instance = PipelineResultsResponse.from_json(json) +# print the JSON string representation of the object +print(PipelineResultsResponse.to_json()) + +# convert the object into a dict +pipeline_results_response_dict = pipeline_results_response_instance.to_dict() +# create an instance of PipelineResultsResponse from a dict +pipeline_results_response_from_dict = PipelineResultsResponse.from_dict(pipeline_results_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PkgVulnFailure.md b/docs/reference/PkgVulnFailure.md new file mode 100644 index 00000000..5dd64a06 --- /dev/null +++ b/docs/reference/PkgVulnFailure.md @@ -0,0 +1,32 @@ +# PkgVulnFailure + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**description** | **str** | description of the failure | +**package_ref** | **str** | reference to the affected package | [optional] +**vulnerability_ref** | **str** | reference to the vulnerability | [optional] +**risk_accept_refs** | **List[str]** | list of accepted risks for the failure | [optional] + +## Example + +```python +from sysdig_client.models.pkg_vuln_failure import PkgVulnFailure + +# TODO update the JSON string below +json = "{}" +# create an instance of PkgVulnFailure from a JSON string +pkg_vuln_failure_instance = PkgVulnFailure.from_json(json) +# print the JSON string representation of the object +print(PkgVulnFailure.to_json()) + +# convert the object into a dict +pkg_vuln_failure_dict = pkg_vuln_failure_instance.to_dict() +# create an instance of PkgVulnFailure from a dict +pkg_vuln_failure_from_dict = PkgVulnFailure.from_dict(pkg_vuln_failure_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PlatformAuditApi.md b/docs/reference/PlatformAuditApi.md new file mode 100644 index 00000000..8b65f98c --- /dev/null +++ b/docs/reference/PlatformAuditApi.md @@ -0,0 +1,102 @@ +# sysdig_client.PlatformAuditApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_platform_audit_events_v1**](PlatformAuditApi.md#get_platform_audit_events_v1) | **GET** /platform/v1/platform-audit-events | Get Platform Audit Events + + +# **get_platform_audit_events_v1** +> ListAuditEventsResponse get_platform_audit_events_v1(var_from=var_from, to=to, cursor=cursor, filter=filter, limit=limit) + +Get Platform Audit Events + +Retrieve a paginated list of Platform Audit Events.\ +\ +**Required permissions:** _audit-trail-events.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_audit_events_response import ListAuditEventsResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PlatformAuditApi(api_client) + var_from = 56 # int | (optional) + to = 56 # int | (optional) + cursor = 'cursor_example' # str | (optional) + filter = 'filter_example' # str | (optional) + limit = 100 # int | (optional) (default to 100) + + try: + # Get Platform Audit Events + api_response = api_instance.get_platform_audit_events_v1(var_from=var_from, to=to, cursor=cursor, filter=filter, limit=limit) + print("The response of PlatformAuditApi->get_platform_audit_events_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PlatformAuditApi->get_platform_audit_events_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **var_from** | **int**| | [optional] + **to** | **int**| | [optional] + **cursor** | **str**| | [optional] + **filter** | **str**| | [optional] + **limit** | **int**| | [optional] [default to 100] + +### Return type + +[**ListAuditEventsResponse**](ListAuditEventsResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of Platform Audit Events. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/Policies.md b/docs/reference/Policies.md new file mode 100644 index 00000000..9deaa360 --- /dev/null +++ b/docs/reference/Policies.md @@ -0,0 +1,30 @@ +# Policies + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**global_evaluation** | **str** | | [optional] +**evaluations** | [**List[PolicyEvaluation]**](PolicyEvaluation.md) | | [optional] + +## Example + +```python +from sysdig_client.models.policies import Policies + +# TODO update the JSON string below +json = "{}" +# create an instance of Policies from a JSON string +policies_instance = Policies.from_json(json) +# print the JSON string representation of the object +print(Policies.to_json()) + +# convert the object into a dict +policies_dict = policies_instance.to_dict() +# create an instance of Policies from a dict +policies_from_dict = Policies.from_dict(policies_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PoliciesPage.md b/docs/reference/PoliciesPage.md new file mode 100644 index 00000000..35d33ffc --- /dev/null +++ b/docs/reference/PoliciesPage.md @@ -0,0 +1,32 @@ +# PoliciesPage + +Page details, providing both returned and total count of matched elements. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**returned** | **int** | The number returned elements: always less or equal the limit specified in the request. | +**matched** | **int** | Total count of elements matched the provided filter. | +**next** | **str** | Cursor used to retrieve the next page of results. | [optional] + +## Example + +```python +from sysdig_client.models.policies_page import PoliciesPage + +# TODO update the JSON string below +json = "{}" +# create an instance of PoliciesPage from a JSON string +policies_page_instance = PoliciesPage.from_json(json) +# print the JSON string representation of the object +print(PoliciesPage.to_json()) + +# convert the object into a dict +policies_page_dict = policies_page_instance.to_dict() +# create an instance of PoliciesPage from a dict +policies_page_from_dict = PoliciesPage.from_dict(policies_page_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PoliciesSummaryEntry.md b/docs/reference/PoliciesSummaryEntry.md new file mode 100644 index 00000000..d9d56c45 --- /dev/null +++ b/docs/reference/PoliciesSummaryEntry.md @@ -0,0 +1,32 @@ +# PoliciesSummaryEntry + +A Policy summary that indicates whether a policy failed or passed. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | Policy Id | +**name** | **str** | Policy Name | +**is_passed** | **bool** | True for passed, false for failed | + +## Example + +```python +from sysdig_client.models.policies_summary_entry import PoliciesSummaryEntry + +# TODO update the JSON string below +json = "{}" +# create an instance of PoliciesSummaryEntry from a JSON string +policies_summary_entry_instance = PoliciesSummaryEntry.from_json(json) +# print the JSON string representation of the object +print(PoliciesSummaryEntry.to_json()) + +# convert the object into a dict +policies_summary_entry_dict = policies_summary_entry_instance.to_dict() +# create an instance of PoliciesSummaryEntry from a dict +policies_summary_entry_from_dict = PoliciesSummaryEntry.from_dict(policies_summary_entry_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PolicyEvaluation.md b/docs/reference/PolicyEvaluation.md new file mode 100644 index 00000000..567e9413 --- /dev/null +++ b/docs/reference/PolicyEvaluation.md @@ -0,0 +1,35 @@ +# PolicyEvaluation + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | policy evaluation name | +**identifier** | **str** | policy evaluation id | +**description** | **str** | policy evaluation description | [optional] +**bundles** | [**List[Bundle]**](Bundle.md) | | [optional] +**evaluation** | **str** | | +**created_at** | **str** | datetime of creation | +**updated_at** | **str** | datetime of last update | + +## Example + +```python +from sysdig_client.models.policy_evaluation import PolicyEvaluation + +# TODO update the JSON string below +json = "{}" +# create an instance of PolicyEvaluation from a JSON string +policy_evaluation_instance = PolicyEvaluation.from_json(json) +# print the JSON string representation of the object +print(PolicyEvaluation.to_json()) + +# convert the object into a dict +policy_evaluation_dict = policy_evaluation_instance.to_dict() +# create an instance of PolicyEvaluation from a dict +policy_evaluation_from_dict = PolicyEvaluation.from_dict(policy_evaluation_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PolicyEvaluationResult.md b/docs/reference/PolicyEvaluationResult.md new file mode 100644 index 00000000..ed239ec2 --- /dev/null +++ b/docs/reference/PolicyEvaluationResult.md @@ -0,0 +1,19 @@ +# PolicyEvaluationResult + +Policy evaluation result + +## Enum + +* `PASSED` (value: `'passed'`) + +* `FAILED` (value: `'failed'`) + +* `ACCEPTED` (value: `'accepted'`) + +* `NOPOLICY` (value: `'noPolicy'`) + +* `NOTAPPLICABLE` (value: `'notApplicable'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PolicyOrigin.md b/docs/reference/PolicyOrigin.md new file mode 100644 index 00000000..b8e74cd7 --- /dev/null +++ b/docs/reference/PolicyOrigin.md @@ -0,0 +1,15 @@ +# PolicyOrigin + +The policy author: - `Sysdig` - default and managed policies - `Sysdig UI` - users interacting with Sysdig - `Tuner` - the automated tuner + +## Enum + +* `SYSDIG` (value: `'Sysdig'`) + +* `SECURE_UI` (value: `'Secure UI'`) + +* `TUNER` (value: `'Tuner'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PolicySummary.md b/docs/reference/PolicySummary.md new file mode 100644 index 00000000..28b11c0f --- /dev/null +++ b/docs/reference/PolicySummary.md @@ -0,0 +1,34 @@ +# PolicySummary + +Policy summary definition. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | The Policy ID | +**name** | **str** | human readable policy name. | +**identifier** | **str** | policy identifier generated from the name. | +**description** | **str** | policy description | [optional] +**stages** | **List[str]** | array of stages for the policy. An empty array means the policy is applied only when specifically requested by its identifier. It may be one of the following: - runtime - pipeline - registry | + +## Example + +```python +from sysdig_client.models.policy_summary import PolicySummary + +# TODO update the JSON string below +json = "{}" +# create an instance of PolicySummary from a JSON string +policy_summary_instance = PolicySummary.from_json(json) +# print the JSON string representation of the object +print(PolicySummary.to_json()) + +# convert the object into a dict +policy_summary_dict = policy_summary_instance.to_dict() +# create an instance of PolicySummary from a dict +policy_summary_from_dict = PolicySummary.from_dict(policy_summary_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PosturePolicySummary.md b/docs/reference/PosturePolicySummary.md new file mode 100644 index 00000000..29d93c0c --- /dev/null +++ b/docs/reference/PosturePolicySummary.md @@ -0,0 +1,31 @@ +# PosturePolicySummary + +The posture policy summary + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**pass_percentage** | **int** | Percentage of policies passing | +**policies** | [**List[PoliciesSummaryEntry]**](PoliciesSummaryEntry.md) | The policies list | + +## Example + +```python +from sysdig_client.models.posture_policy_summary import PosturePolicySummary + +# TODO update the JSON string below +json = "{}" +# create an instance of PosturePolicySummary from a JSON string +posture_policy_summary_instance = PosturePolicySummary.from_json(json) +# print the JSON string representation of the object +print(PosturePolicySummary.to_json()) + +# convert the object into a dict +posture_policy_summary_dict = posture_policy_summary_instance.to_dict() +# create an instance of PosturePolicySummary from a dict +posture_policy_summary_from_dict = PosturePolicySummary.from_dict(posture_policy_summary_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Predicate.md b/docs/reference/Predicate.md new file mode 100644 index 00000000..7a957586 --- /dev/null +++ b/docs/reference/Predicate.md @@ -0,0 +1,30 @@ +# Predicate + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | predicate type | [optional] +**extra** | **object** | | [optional] + +## Example + +```python +from sysdig_client.models.predicate import Predicate + +# TODO update the JSON string below +json = "{}" +# create an instance of Predicate from a JSON string +predicate_instance = Predicate.from_json(json) +# print the JSON string representation of the object +print(Predicate.to_json()) + +# convert the object into a dict +predicate_dict = predicate_instance.to_dict() +# create an instance of Predicate from a dict +predicate_from_dict = Predicate.from_dict(predicate_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PredicatesInner.md b/docs/reference/PredicatesInner.md new file mode 100644 index 00000000..661cfff3 --- /dev/null +++ b/docs/reference/PredicatesInner.md @@ -0,0 +1,30 @@ +# PredicatesInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**ImageConfigCreationDateWithAgeExtra**](ImageConfigCreationDateWithAgeExtra.md) | | + +## Example + +```python +from sysdig_client.models.predicates_inner import PredicatesInner + +# TODO update the JSON string below +json = "{}" +# create an instance of PredicatesInner from a JSON string +predicates_inner_instance = PredicatesInner.from_json(json) +# print the JSON string representation of the object +print(PredicatesInner.to_json()) + +# convert the object into a dict +predicates_inner_dict = predicates_inner_instance.to_dict() +# create an instance of PredicatesInner from a dict +predicates_inner_from_dict = PredicatesInner.from_dict(predicates_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PricingProjectedResponseV1.md b/docs/reference/PricingProjectedResponseV1.md new file mode 100644 index 00000000..336c830d --- /dev/null +++ b/docs/reference/PricingProjectedResponseV1.md @@ -0,0 +1,31 @@ +# PricingProjectedResponseV1 + +The monthly projected cost for a specific cluster. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cluster_name** | **str** | The name of the cluster. | [optional] +**monthly_projected_cost** | **float** | Monthly projected cost. | [optional] + +## Example + +```python +from sysdig_client.models.pricing_projected_response_v1 import PricingProjectedResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of PricingProjectedResponseV1 from a JSON string +pricing_projected_response_v1_instance = PricingProjectedResponseV1.from_json(json) +# print the JSON string representation of the object +print(PricingProjectedResponseV1.to_json()) + +# convert the object into a dict +pricing_projected_response_v1_dict = pricing_projected_response_v1_instance.to_dict() +# create an instance of PricingProjectedResponseV1 from a dict +pricing_projected_response_v1_from_dict = PricingProjectedResponseV1.from_dict(pricing_projected_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PricingResponseV1.md b/docs/reference/PricingResponseV1.md new file mode 100644 index 00000000..209a0508 --- /dev/null +++ b/docs/reference/PricingResponseV1.md @@ -0,0 +1,37 @@ +# PricingResponseV1 + +The pricing configuration used to compute costs. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**type** | [**PricingType**](PricingType.md) | | [optional] +**cluster_name** | **str** | The name of the cluster. Required when `type` is `CLUSTER`. | [optional] +**name** | **str** | The name of the pricing profile. | [optional] +**unit_pricing** | [**UnitPricingV1**](UnitPricingV1.md) | The unit pricing configuration used to compute costs. | [optional] +**spot_label** | **str** | The name of a node label that is used to identify the node as a spot node. | [optional] +**spot_label_value** | **str** | The value of the spot node label. | [optional] +**version** | **int** | The current version of the resource. | [optional] + +## Example + +```python +from sysdig_client.models.pricing_response_v1 import PricingResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of PricingResponseV1 from a JSON string +pricing_response_v1_instance = PricingResponseV1.from_json(json) +# print the JSON string representation of the object +print(PricingResponseV1.to_json()) + +# convert the object into a dict +pricing_response_v1_dict = pricing_response_v1_instance.to_dict() +# create an instance of PricingResponseV1 from a dict +pricing_response_v1_from_dict = PricingResponseV1.from_dict(pricing_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PricingType.md b/docs/reference/PricingType.md new file mode 100644 index 00000000..a03cf9a1 --- /dev/null +++ b/docs/reference/PricingType.md @@ -0,0 +1,13 @@ +# PricingType + +The type of the pricing. + +## Enum + +* `DEFAULT` (value: `'DEFAULT'`) + +* `CLUSTER` (value: `'CLUSTER'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoAmazonSqs.md b/docs/reference/PrivateConnectionInfoAmazonSqs.md new file mode 100644 index 00000000..5c3057a2 --- /dev/null +++ b/docs/reference/PrivateConnectionInfoAmazonSqs.md @@ -0,0 +1,30 @@ +# PrivateConnectionInfoAmazonSqs + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**access_key** | **str** | Access Key for authenticating on AWS to send data on the queue | [optional] +**access_secret** | **str** | Access Secret for authenticating on AWS to send data on the queue | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_amazon_sqs import PrivateConnectionInfoAmazonSqs + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoAmazonSqs from a JSON string +private_connection_info_amazon_sqs_instance = PrivateConnectionInfoAmazonSqs.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoAmazonSqs.to_json()) + +# convert the object into a dict +private_connection_info_amazon_sqs_dict = private_connection_info_amazon_sqs_instance.to_dict() +# create an instance of PrivateConnectionInfoAmazonSqs from a dict +private_connection_info_amazon_sqs_from_dict = PrivateConnectionInfoAmazonSqs.from_dict(private_connection_info_amazon_sqs_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoChronicle.md b/docs/reference/PrivateConnectionInfoChronicle.md new file mode 100644 index 00000000..3a88c5ac --- /dev/null +++ b/docs/reference/PrivateConnectionInfoChronicle.md @@ -0,0 +1,29 @@ +# PrivateConnectionInfoChronicle + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**api_key** | **str** | The Chronicle v1 API key | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_chronicle import PrivateConnectionInfoChronicle + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoChronicle from a JSON string +private_connection_info_chronicle_instance = PrivateConnectionInfoChronicle.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoChronicle.to_json()) + +# convert the object into a dict +private_connection_info_chronicle_dict = private_connection_info_chronicle_instance.to_dict() +# create an instance of PrivateConnectionInfoChronicle from a dict +private_connection_info_chronicle_from_dict = PrivateConnectionInfoChronicle.from_dict(private_connection_info_chronicle_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoChronicleV2.md b/docs/reference/PrivateConnectionInfoChronicleV2.md new file mode 100644 index 00000000..6b5ca211 --- /dev/null +++ b/docs/reference/PrivateConnectionInfoChronicleV2.md @@ -0,0 +1,29 @@ +# PrivateConnectionInfoChronicleV2 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**credentials_o_auth2** | **str** | The Chronicle v2 OAuth2 credentials | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_chronicle_v2 import PrivateConnectionInfoChronicleV2 + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoChronicleV2 from a JSON string +private_connection_info_chronicle_v2_instance = PrivateConnectionInfoChronicleV2.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoChronicleV2.to_json()) + +# convert the object into a dict +private_connection_info_chronicle_v2_dict = private_connection_info_chronicle_v2_instance.to_dict() +# create an instance of PrivateConnectionInfoChronicleV2 from a dict +private_connection_info_chronicle_v2_from_dict = PrivateConnectionInfoChronicleV2.from_dict(private_connection_info_chronicle_v2_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoElasticsearch.md b/docs/reference/PrivateConnectionInfoElasticsearch.md new file mode 100644 index 00000000..20505afd --- /dev/null +++ b/docs/reference/PrivateConnectionInfoElasticsearch.md @@ -0,0 +1,30 @@ +# PrivateConnectionInfoElasticsearch + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**auth** | **str** | Authentication method | [optional] +**secret** | **str** | Authentication secret. To be set if auth is specified | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_elasticsearch import PrivateConnectionInfoElasticsearch + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoElasticsearch from a JSON string +private_connection_info_elasticsearch_instance = PrivateConnectionInfoElasticsearch.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoElasticsearch.to_json()) + +# convert the object into a dict +private_connection_info_elasticsearch_dict = private_connection_info_elasticsearch_instance.to_dict() +# create an instance of PrivateConnectionInfoElasticsearch from a dict +private_connection_info_elasticsearch_from_dict = PrivateConnectionInfoElasticsearch.from_dict(private_connection_info_elasticsearch_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoGooglePubSub.md b/docs/reference/PrivateConnectionInfoGooglePubSub.md new file mode 100644 index 00000000..f5ab2e2e --- /dev/null +++ b/docs/reference/PrivateConnectionInfoGooglePubSub.md @@ -0,0 +1,29 @@ +# PrivateConnectionInfoGooglePubSub + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**credentials_json** | **str** | JSON credentials for the service account Sysdig will use to send data | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_google_pub_sub import PrivateConnectionInfoGooglePubSub + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoGooglePubSub from a JSON string +private_connection_info_google_pub_sub_instance = PrivateConnectionInfoGooglePubSub.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoGooglePubSub.to_json()) + +# convert the object into a dict +private_connection_info_google_pub_sub_dict = private_connection_info_google_pub_sub_instance.to_dict() +# create an instance of PrivateConnectionInfoGooglePubSub from a dict +private_connection_info_google_pub_sub_from_dict = PrivateConnectionInfoGooglePubSub.from_dict(private_connection_info_google_pub_sub_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoGoogleScc.md b/docs/reference/PrivateConnectionInfoGoogleScc.md new file mode 100644 index 00000000..65b00b07 --- /dev/null +++ b/docs/reference/PrivateConnectionInfoGoogleScc.md @@ -0,0 +1,29 @@ +# PrivateConnectionInfoGoogleScc + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**credentials_json** | **str** | JSON credentials for the service account Sysdig will use to send data | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_google_scc import PrivateConnectionInfoGoogleScc + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoGoogleScc from a JSON string +private_connection_info_google_scc_instance = PrivateConnectionInfoGoogleScc.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoGoogleScc.to_json()) + +# convert the object into a dict +private_connection_info_google_scc_dict = private_connection_info_google_scc_instance.to_dict() +# create an instance of PrivateConnectionInfoGoogleScc from a dict +private_connection_info_google_scc_from_dict = PrivateConnectionInfoGoogleScc.from_dict(private_connection_info_google_scc_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoKafka.md b/docs/reference/PrivateConnectionInfoKafka.md new file mode 100644 index 00000000..78fa0c5e --- /dev/null +++ b/docs/reference/PrivateConnectionInfoKafka.md @@ -0,0 +1,29 @@ +# PrivateConnectionInfoKafka + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**keytab** | **str** | base64 encoded Kerberos keytab | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_kafka import PrivateConnectionInfoKafka + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoKafka from a JSON string +private_connection_info_kafka_instance = PrivateConnectionInfoKafka.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoKafka.to_json()) + +# convert the object into a dict +private_connection_info_kafka_dict = private_connection_info_kafka_instance.to_dict() +# create an instance of PrivateConnectionInfoKafka from a dict +private_connection_info_kafka_from_dict = PrivateConnectionInfoKafka.from_dict(private_connection_info_kafka_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoMcm.md b/docs/reference/PrivateConnectionInfoMcm.md new file mode 100644 index 00000000..6d49487d --- /dev/null +++ b/docs/reference/PrivateConnectionInfoMcm.md @@ -0,0 +1,29 @@ +# PrivateConnectionInfoMcm + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**api_key** | **str** | IBM Cloud API Key | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_mcm import PrivateConnectionInfoMcm + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoMcm from a JSON string +private_connection_info_mcm_instance = PrivateConnectionInfoMcm.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoMcm.to_json()) + +# convert the object into a dict +private_connection_info_mcm_dict = private_connection_info_mcm_instance.to_dict() +# create an instance of PrivateConnectionInfoMcm from a dict +private_connection_info_mcm_from_dict = PrivateConnectionInfoMcm.from_dict(private_connection_info_mcm_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoMicrosoftSentinel.md b/docs/reference/PrivateConnectionInfoMicrosoftSentinel.md new file mode 100644 index 00000000..cb7d0b5e --- /dev/null +++ b/docs/reference/PrivateConnectionInfoMicrosoftSentinel.md @@ -0,0 +1,29 @@ +# PrivateConnectionInfoMicrosoftSentinel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**secret** | **str** | Log analytics primary key | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_microsoft_sentinel import PrivateConnectionInfoMicrosoftSentinel + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoMicrosoftSentinel from a JSON string +private_connection_info_microsoft_sentinel_instance = PrivateConnectionInfoMicrosoftSentinel.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoMicrosoftSentinel.to_json()) + +# convert the object into a dict +private_connection_info_microsoft_sentinel_dict = private_connection_info_microsoft_sentinel_instance.to_dict() +# create an instance of PrivateConnectionInfoMicrosoftSentinel from a dict +private_connection_info_microsoft_sentinel_from_dict = PrivateConnectionInfoMicrosoftSentinel.from_dict(private_connection_info_microsoft_sentinel_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoSplunk.md b/docs/reference/PrivateConnectionInfoSplunk.md new file mode 100644 index 00000000..7594892f --- /dev/null +++ b/docs/reference/PrivateConnectionInfoSplunk.md @@ -0,0 +1,29 @@ +# PrivateConnectionInfoSplunk + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**token** | **str** | HTTP Event Collector Token | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_splunk import PrivateConnectionInfoSplunk + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoSplunk from a JSON string +private_connection_info_splunk_instance = PrivateConnectionInfoSplunk.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoSplunk.to_json()) + +# convert the object into a dict +private_connection_info_splunk_dict = private_connection_info_splunk_instance.to_dict() +# create an instance of PrivateConnectionInfoSplunk from a dict +private_connection_info_splunk_from_dict = PrivateConnectionInfoSplunk.from_dict(private_connection_info_splunk_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrivateConnectionInfoWebhook.md b/docs/reference/PrivateConnectionInfoWebhook.md new file mode 100644 index 00000000..a74cd89e --- /dev/null +++ b/docs/reference/PrivateConnectionInfoWebhook.md @@ -0,0 +1,29 @@ +# PrivateConnectionInfoWebhook + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**secret** | **str** | Secret to use, according to the \"auth\" value. | [optional] + +## Example + +```python +from sysdig_client.models.private_connection_info_webhook import PrivateConnectionInfoWebhook + +# TODO update the JSON string below +json = "{}" +# create an instance of PrivateConnectionInfoWebhook from a JSON string +private_connection_info_webhook_instance = PrivateConnectionInfoWebhook.from_json(json) +# print the JSON string representation of the object +print(PrivateConnectionInfoWebhook.to_json()) + +# convert the object into a dict +private_connection_info_webhook_dict = private_connection_info_webhook_instance.to_dict() +# create an instance of PrivateConnectionInfoWebhook from a dict +private_connection_info_webhook_from_dict = PrivateConnectionInfoWebhook.from_dict(private_connection_info_webhook_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ProcessKilledAction.md b/docs/reference/ProcessKilledAction.md new file mode 100644 index 00000000..26093d96 --- /dev/null +++ b/docs/reference/ProcessKilledAction.md @@ -0,0 +1,32 @@ +# ProcessKilledAction + +Process kill automatic action. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ActionType**](ActionType.md) | | +**is_successful** | **bool** | Whether or not the action was completed successfully. | [optional] +**err_msg** | **str** | When `isSuccessful` is `false`, details on why the action failed. | [optional] + +## Example + +```python +from sysdig_client.models.process_killed_action import ProcessKilledAction + +# TODO update the JSON string below +json = "{}" +# create an instance of ProcessKilledAction from a JSON string +process_killed_action_instance = ProcessKilledAction.from_json(json) +# print the JSON string representation of the object +print(ProcessKilledAction.to_json()) + +# convert the object into a dict +process_killed_action_dict = process_killed_action_instance.to_dict() +# create an instance of ProcessKilledAction from a dict +process_killed_action_from_dict = ProcessKilledAction.from_dict(process_killed_action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Producer.md b/docs/reference/Producer.md new file mode 100644 index 00000000..044fba18 --- /dev/null +++ b/docs/reference/Producer.md @@ -0,0 +1,29 @@ +# Producer + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**produced_at** | **datetime** | time of result production | [optional] + +## Example + +```python +from sysdig_client.models.producer import Producer + +# TODO update the JSON string below +json = "{}" +# create an instance of Producer from a JSON string +producer_instance = Producer.from_json(json) +# print the JSON string representation of the object +print(Producer.to_json()) + +# convert the object into a dict +producer_dict = producer_instance.to_dict() +# create an instance of Producer from a dict +producer_from_dict = Producer.from_dict(producer_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Product.md b/docs/reference/Product.md new file mode 100644 index 00000000..270c2368 --- /dev/null +++ b/docs/reference/Product.md @@ -0,0 +1,13 @@ +# Product + +The Sysdig product + +## Enum + +* `MONITOR` (value: `'monitor'`) + +* `SECURE` (value: `'secure'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrometheusAlertManagerNotificationChannelOptionsV1.md b/docs/reference/PrometheusAlertManagerNotificationChannelOptionsV1.md new file mode 100644 index 00000000..4fd4cbb1 --- /dev/null +++ b/docs/reference/PrometheusAlertManagerNotificationChannelOptionsV1.md @@ -0,0 +1,33 @@ +# PrometheusAlertManagerNotificationChannelOptionsV1 + +The Prometheus Alert Manager notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**url** | **str** | The prometheus alert manager url to which the request should be posted | +**is_allows_insecure_connections** | **bool** | Specifies if the channel allows insecure connections (e.g. plain http, self-signed https) | [optional] +**additional_headers** | **Dict[str, str]** | Additional headers to send in the request to the alert manager url | [optional] + +## Example + +```python +from sysdig_client.models.prometheus_alert_manager_notification_channel_options_v1 import PrometheusAlertManagerNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of PrometheusAlertManagerNotificationChannelOptionsV1 from a JSON string +prometheus_alert_manager_notification_channel_options_v1_instance = PrometheusAlertManagerNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(PrometheusAlertManagerNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +prometheus_alert_manager_notification_channel_options_v1_dict = prometheus_alert_manager_notification_channel_options_v1_instance.to_dict() +# create an instance of PrometheusAlertManagerNotificationChannelOptionsV1 from a dict +prometheus_alert_manager_notification_channel_options_v1_from_dict = PrometheusAlertManagerNotificationChannelOptionsV1.from_dict(prometheus_alert_manager_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrometheusAlertManagerNotificationChannelResponseV1.md b/docs/reference/PrometheusAlertManagerNotificationChannelResponseV1.md new file mode 100644 index 00000000..224fecab --- /dev/null +++ b/docs/reference/PrometheusAlertManagerNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# PrometheusAlertManagerNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**PrometheusAlertManagerNotificationChannelOptionsV1**](PrometheusAlertManagerNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.prometheus_alert_manager_notification_channel_response_v1 import PrometheusAlertManagerNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of PrometheusAlertManagerNotificationChannelResponseV1 from a JSON string +prometheus_alert_manager_notification_channel_response_v1_instance = PrometheusAlertManagerNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(PrometheusAlertManagerNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +prometheus_alert_manager_notification_channel_response_v1_dict = prometheus_alert_manager_notification_channel_response_v1_instance.to_dict() +# create an instance of PrometheusAlertManagerNotificationChannelResponseV1 from a dict +prometheus_alert_manager_notification_channel_response_v1_from_dict = PrometheusAlertManagerNotificationChannelResponseV1.from_dict(prometheus_alert_manager_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PrometheusApi.md b/docs/reference/PrometheusApi.md new file mode 100644 index 00000000..f751dde1 --- /dev/null +++ b/docs/reference/PrometheusApi.md @@ -0,0 +1,2901 @@ +# sysdig_client.PrometheusApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_admin_tsdb_clean_tombstones_v1**](PrometheusApi.md#get_admin_tsdb_clean_tombstones_v1) | **POST** /prometheus/api/v1/admin/tsdb/clean_tombstones | Clean Tombstones +[**get_admin_tsdb_delete_series_v1**](PrometheusApi.md#get_admin_tsdb_delete_series_v1) | **POST** /prometheus/api/v1/admin/tsdb/delete_series | Delete Series +[**get_admin_tsdb_snapshot_v1**](PrometheusApi.md#get_admin_tsdb_snapshot_v1) | **POST** /prometheus/api/v1/admin/tsdb/snapshot | Snapshot +[**get_alert_managers_v1**](PrometheusApi.md#get_alert_managers_v1) | **GET** /prometheus/api/v1//alertmanagers | Alertmanagers +[**get_alerts_v1**](PrometheusApi.md#get_alerts_v1) | **GET** /prometheus/api/v1/alerts | Alerts +[**get_exemplars_v1**](PrometheusApi.md#get_exemplars_v1) | **GET** /prometheus/api/v1/query_exemplars | Query Exemplars +[**get_format_query_v1**](PrometheusApi.md#get_format_query_v1) | **GET** /prometheus/api/v1/format_query | Format Query +[**get_label_values_v1**](PrometheusApi.md#get_label_values_v1) | **GET** /prometheus/api/v1/label/{labelName}/values | Labels Values Query +[**get_labels_v1**](PrometheusApi.md#get_labels_v1) | **GET** /prometheus/api/v1/labels | Labels Query +[**get_live_notifications_v1**](PrometheusApi.md#get_live_notifications_v1) | **GET** /prometheus/api/v1/notifications/live | Live Notifications +[**get_metadata_v1**](PrometheusApi.md#get_metadata_v1) | **GET** /prometheus/api/v1/metadata | Querying metric metadata +[**get_notifications_v1**](PrometheusApi.md#get_notifications_v1) | **GET** /prometheus/api/v1/notifications | Active Notifications +[**get_parse_query_v1**](PrometheusApi.md#get_parse_query_v1) | **GET** /prometheus/api/v1/parse_query | Parse Query +[**get_query_range_v1**](PrometheusApi.md#get_query_range_v1) | **GET** /prometheus/api/v1/query_range | Range Query +[**get_query_v1**](PrometheusApi.md#get_query_v1) | **GET** /prometheus/api/v1/query | Instant Query +[**get_rules_v1**](PrometheusApi.md#get_rules_v1) | **GET** /prometheus/api/v1/rules | Rules +[**get_series_v1**](PrometheusApi.md#get_series_v1) | **GET** /prometheus/api/v1/series | Series Query +[**get_status_build_info_v1**](PrometheusApi.md#get_status_build_info_v1) | **GET** /prometheus/api/v1/status/buildinfo | Build Information +[**get_status_config_v1**](PrometheusApi.md#get_status_config_v1) | **GET** /prometheus/api/v1/status/config | Config +[**get_status_flags_v1**](PrometheusApi.md#get_status_flags_v1) | **GET** /prometheus/api/v1/status/flags | Flags +[**get_status_runtime_info_v1**](PrometheusApi.md#get_status_runtime_info_v1) | **GET** /prometheus/api/v1/status/runtimeinfo | Runtime Information +[**get_status_tsdb_v1**](PrometheusApi.md#get_status_tsdb_v1) | **GET** /prometheus/api/v1/status/tsdb | TSDB Stats +[**get_status_wal_replay_v1**](PrometheusApi.md#get_status_wal_replay_v1) | **GET** /prometheus/api/v1/status/walreplay | WAL Replay +[**get_targets_metadata_v1**](PrometheusApi.md#get_targets_metadata_v1) | **GET** /prometheus/api/v1/targets/metadata | Querying target metadata +[**get_targets_v1**](PrometheusApi.md#get_targets_v1) | **GET** /prometheus/api/v1/targets | Targets +[**post_admin_tsdb_clean_tombstones_v1**](PrometheusApi.md#post_admin_tsdb_clean_tombstones_v1) | **PUT** /prometheus/api/v1/admin/tsdb/clean_tombstones | Clean Tombstones +[**post_admin_tsdb_delete_series_v1**](PrometheusApi.md#post_admin_tsdb_delete_series_v1) | **PUT** /prometheus/api/v1/admin/tsdb/delete_series | Delete Series +[**post_admin_tsdb_snapshot_v1**](PrometheusApi.md#post_admin_tsdb_snapshot_v1) | **PUT** /prometheus/api/v1/admin/tsdb/snapshot | Snapshot +[**post_exemplars_v1**](PrometheusApi.md#post_exemplars_v1) | **POST** /prometheus/api/v1/query_exemplars | Query Exemplars +[**post_format_query_v1**](PrometheusApi.md#post_format_query_v1) | **POST** /prometheus/api/v1/format_query | Format Query +[**post_labels_v1**](PrometheusApi.md#post_labels_v1) | **POST** /prometheus/api/v1/labels | Labels Query +[**post_parse_query_v1**](PrometheusApi.md#post_parse_query_v1) | **POST** /prometheus/api/v1/parse_query | Parse Query +[**post_query_range_v1**](PrometheusApi.md#post_query_range_v1) | **POST** /prometheus/api/v1/query_range | Range Query +[**post_query_v1**](PrometheusApi.md#post_query_v1) | **POST** /prometheus/api/v1/query | Instant Query +[**post_series_v1**](PrometheusApi.md#post_series_v1) | **POST** /prometheus/api/v1/series | Series Query +[**remote_write_v1**](PrometheusApi.md#remote_write_v1) | **POST** /prometheus/api/v1/write | Ingest metric data (remote write) + + +# **get_admin_tsdb_clean_tombstones_v1** +> get_admin_tsdb_clean_tombstones_v1() + +Clean Tombstones + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Clean Tombstones + api_instance.get_admin_tsdb_clean_tombstones_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_admin_tsdb_clean_tombstones_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_admin_tsdb_delete_series_v1** +> get_admin_tsdb_delete_series_v1() + +Delete Series + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Delete Series + api_instance.get_admin_tsdb_delete_series_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_admin_tsdb_delete_series_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_admin_tsdb_snapshot_v1** +> get_admin_tsdb_snapshot_v1() + +Snapshot + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Snapshot + api_instance.get_admin_tsdb_snapshot_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_admin_tsdb_snapshot_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_alert_managers_v1** +> get_alert_managers_v1() + +Alertmanagers + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Alertmanagers + api_instance.get_alert_managers_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_alert_managers_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_alerts_v1** +> AlertsResponseV1 get_alerts_v1() + +Alerts + +Returns a list of active alerts that are currently firing in Prometheus. +\ +**Required permissions:** _alerts.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.alerts_response_v1 import AlertsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Alerts + api_response = api_instance.get_alerts_v1() + print("The response of PrometheusApi->get_alerts_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->get_alerts_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**AlertsResponseV1**](AlertsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of alerts. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_exemplars_v1** +> get_exemplars_v1() + +Query Exemplars + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Query Exemplars + api_instance.get_exemplars_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_exemplars_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_format_query_v1** +> get_format_query_v1() + +Format Query + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Format Query + api_instance.get_format_query_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_format_query_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_label_values_v1** +> LabelValuesResponseV1 get_label_values_v1(label_name, start=start, end=end, match=match, limit=limit) + +Labels Values Query + +The following endpoint returns a list of label names: +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.label_values_response_v1 import LabelValuesResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + label_name = 'job' # str | The name of the label to retrieve values for. + start = sysdig_client.QueryTime() # QueryTime | UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. (optional) + end = sysdig_client.QueryTime() # QueryTime | UNSUPPORTED - Sysdig does not support this parameter. (optional) + match = ['[\"{job=\\\"prometheus\\\"}\"]'] # List[str] | A repeated series selector argument that specifies the series from which to read the label values. (optional) + limit = 56 # int | The maximum number of returned labels. This is 5,000 by default. To disable the limit, set the value to 0. (optional) + + try: + # Labels Values Query + api_response = api_instance.get_label_values_v1(label_name, start=start, end=end, match=match, limit=limit) + print("The response of PrometheusApi->get_label_values_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->get_label_values_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **label_name** | **str**| The name of the label to retrieve values for. | + **start** | [**QueryTime**](.md)| <b>UNSUPPORTED</b> - This parameter is not supported due to the Sysdig's specific implementation. | [optional] + **end** | [**QueryTime**](.md)| <b>UNSUPPORTED</b> - Sysdig does not support this parameter. | [optional] + **match** | [**List[str]**](str.md)| A repeated series selector argument that specifies the series from which to read the label values. | [optional] + **limit** | **int**| The maximum number of returned labels. This is 5,000 by default. To disable the limit, set the value to 0. | [optional] + +### Return type + +[**LabelValuesResponseV1**](LabelValuesResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of labels. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_labels_v1** +> LabelsResponseV1 get_labels_v1(start=start, end=end, match=match, limit=limit) + +Labels Query + +The following endpoint returns a list of label names: +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.labels_response_v1 import LabelsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + start = sysdig_client.QueryTime() # QueryTime | UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. (optional) + end = sysdig_client.QueryTime() # QueryTime | UNSUPPORTED - Sysdig does not support this parameter. (optional) + match = ['[\"{job=\\\"prometheus\\\"}\"]'] # List[str] | A repeated series selector argument that specifies the series from which to read the label names. (optional) + limit = 56 # int | The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. (optional) + + try: + # Labels Query + api_response = api_instance.get_labels_v1(start=start, end=end, match=match, limit=limit) + print("The response of PrometheusApi->get_labels_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->get_labels_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **start** | [**QueryTime**](.md)| <b>UNSUPPORTED</b> - This parameter is not supported due to the Sysdig's specific implementation. | [optional] + **end** | [**QueryTime**](.md)| <b>UNSUPPORTED</b> - Sysdig does not support this parameter. | [optional] + **match** | [**List[str]**](str.md)| A repeated series selector argument that specifies the series from which to read the label names. | [optional] + **limit** | **int**| The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. | [optional] + +### Return type + +[**LabelsResponseV1**](LabelsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of labels. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_live_notifications_v1** +> get_live_notifications_v1() + +Live Notifications + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Live Notifications + api_instance.get_live_notifications_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_live_notifications_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_metadata_v1** +> MetadataResponseV1 get_metadata_v1(limit_per_metric=limit_per_metric, limit=limit, metric=metric) + +Querying metric metadata + +The following endpoint returns a list of label names: +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.metadata_response_v1 import MetadataResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + limit_per_metric = 56 # int | UNSUPPORTED - Sysdig does not support this parameter. (optional) + limit = 56 # int | The maximum number of metrics to return. To disable the limit, set the value to 0. (optional) + metric = 'up' # str | A specific metric name to filter metadata for. If omitted, metadata for all metrics is retrieved. (optional) + + try: + # Querying metric metadata + api_response = api_instance.get_metadata_v1(limit_per_metric=limit_per_metric, limit=limit, metric=metric) + print("The response of PrometheusApi->get_metadata_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->get_metadata_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **limit_per_metric** | **int**| <b>UNSUPPORTED</b> - Sysdig does not support this parameter. | [optional] + **limit** | **int**| The maximum number of metrics to return. To disable the limit, set the value to 0. | [optional] + **metric** | **str**| A specific metric name to filter metadata for. If omitted, metadata for all metrics is retrieved. | [optional] + +### Return type + +[**MetadataResponseV1**](MetadataResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Successful response. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_notifications_v1** +> get_notifications_v1() + +Active Notifications + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Active Notifications + api_instance.get_notifications_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_notifications_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_parse_query_v1** +> get_parse_query_v1() + +Parse Query + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Parse Query + api_instance.get_parse_query_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_parse_query_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_query_range_v1** +> QueryResponseV1 get_query_range_v1(query, start, end, step, timeout=timeout, limit=limit) + +Range Query + +This endpoint evaluates an expression query over a specified time range. +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.query_response_v1 import QueryResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + query = 'up' # str | The Prometheus expression query string. + start = sysdig_client.QueryTime() # QueryTime | The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. + end = sysdig_client.QueryTime() # QueryTime | The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. + step = sysdig_client.GetQueryRangeV1StepParameter() # GetQueryRangeV1StepParameter | The query resolution step width, specified as a duration or a floating-point number of seconds. + timeout = 'timeout_example' # str | The evaluation timeout. The default is 2 minutes. (optional) + limit = 56 # int | The maximum number of returned series. To disable the limit, set the value to 0. (optional) + + try: + # Range Query + api_response = api_instance.get_query_range_v1(query, start, end, step, timeout=timeout, limit=limit) + print("The response of PrometheusApi->get_query_range_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->get_query_range_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **str**| The Prometheus expression query string. | + **start** | [**QueryTime**](.md)| The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. | + **end** | [**QueryTime**](.md)| The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. | + **step** | [**GetQueryRangeV1StepParameter**](.md)| The query resolution step width, specified as a duration or a floating-point number of seconds. | + **timeout** | **str**| The evaluation timeout. The default is 2 minutes. | [optional] + **limit** | **int**| The maximum number of returned series. To disable the limit, set the value to 0. | [optional] + +### Return type + +[**QueryResponseV1**](QueryResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Range query result. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Operation failed due to unprocessable entity. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_query_v1** +> QueryResponseV1 get_query_v1(query, time=time, timeout=timeout, limit=limit) + +Instant Query + +This endpoint evaluates an instant query at a single point in time. +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.query_response_v1 import QueryResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + query = 'up' # str | The Prometheus expression query string. + time = sysdig_client.QueryTime() # QueryTime | The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. (optional) + timeout = 'timeout_example' # str | The evaluation timeout. The default is 2 minutes. (optional) + limit = 56 # int | The maximum number of returned series. To disable the limit, set the value to 0. (optional) + + try: + # Instant Query + api_response = api_instance.get_query_v1(query, time=time, timeout=timeout, limit=limit) + print("The response of PrometheusApi->get_query_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->get_query_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **str**| The Prometheus expression query string. | + **time** | [**QueryTime**](.md)| The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. | [optional] + **timeout** | **str**| The evaluation timeout. The default is 2 minutes. | [optional] + **limit** | **int**| The maximum number of returned series. To disable the limit, set the value to 0. | [optional] + +### Return type + +[**QueryResponseV1**](QueryResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Instant query result. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_rules_v1** +> RulesResponseV1 get_rules_v1(type=type, rule_name=rule_name, rule_group=rule_group, file=file, exclude_alerts=exclude_alerts, match=match, group_limit=group_limit, group_next_token=group_next_token) + +Rules + +The /rules API endpoint returns the list of alerting rules. It also returns the currently active alerts fired by the Prometheus instance of each alerting rule. +\ +Sysdig currently does not support recording rules. +\ +**Required permissions:** _alerts.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.rules_response_v1 import RulesResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + type = 'type_example' # str | This endpoint only returns alerting rules (`type=alert`). When absent or empty, only alerting rules are returned. (optional) + rule_name = ['rule_name_example'] # List[str] | Only return rules with the given rule name. If repeated, rules with any of the provided names are returned. (optional) + rule_group = ['rule_group_example'] # List[str] | Only return rules with the given rule group name. If repeated, rules with any of the provided group names are returned. (optional) + file = ['file_example'] # List[str] | UNSUPPORTED - Sysdig does not support this parameter. (optional) + exclude_alerts = True # bool | This endpoint supports only returning alerting rules (`exclude_alerts=true`). (optional) + match = ['match_example'] # List[str] | Only return rules with configured labels that satisfy the label selectors. (optional) + group_limit = 56 # int | Limit the number of rule groups returned in a single response. (optional) + group_next_token = 'group_next_token_example' # str | UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. (optional) + + try: + # Rules + api_response = api_instance.get_rules_v1(type=type, rule_name=rule_name, rule_group=rule_group, file=file, exclude_alerts=exclude_alerts, match=match, group_limit=group_limit, group_next_token=group_next_token) + print("The response of PrometheusApi->get_rules_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->get_rules_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **type** | **str**| This endpoint only returns alerting rules (`type=alert`). When absent or empty, only alerting rules are returned. | [optional] + **rule_name** | [**List[str]**](str.md)| Only return rules with the given rule name. If repeated, rules with any of the provided names are returned. | [optional] + **rule_group** | [**List[str]**](str.md)| Only return rules with the given rule group name. If repeated, rules with any of the provided group names are returned. | [optional] + **file** | [**List[str]**](str.md)| <b>UNSUPPORTED</b> - Sysdig does not support this parameter. | [optional] + **exclude_alerts** | **bool**| This endpoint supports only returning alerting rules (`exclude_alerts=true`). | [optional] + **match** | [**List[str]**](str.md)| Only return rules with configured labels that satisfy the label selectors. | [optional] + **group_limit** | **int**| Limit the number of rule groups returned in a single response. | [optional] + **group_next_token** | **str**| <b>UNSUPPORTED</b> - This parameter is not supported due to the Sysdig's specific implementation. | [optional] + +### Return type + +[**RulesResponseV1**](RulesResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of rules. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_series_v1** +> SeriesResponseV1 get_series_v1(match, start=start, end=end, limit=limit) + +Series Query + +The following endpoint returns the list of time series that match a specified label set. +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.series_response_v1 import SeriesResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + match = ['[\"up\",\"process_start_time_seconds{job=\\\"prometheus\\\"}\"]'] # List[str] | A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. + start = sysdig_client.QueryTime() # QueryTime | The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. (optional) + end = sysdig_client.QueryTime() # QueryTime | The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. (optional) + limit = 56 # int | The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. (optional) + + try: + # Series Query + api_response = api_instance.get_series_v1(match, start=start, end=end, limit=limit) + print("The response of PrometheusApi->get_series_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->get_series_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **match** | [**List[str]**](str.md)| A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. | + **start** | [**QueryTime**](.md)| The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. | [optional] + **end** | [**QueryTime**](.md)| The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. | [optional] + **limit** | **int**| The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. | [optional] + +### Return type + +[**SeriesResponseV1**](SeriesResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of time series. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Operation failed due to unprocessable entity. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_status_build_info_v1** +> get_status_build_info_v1() + +Build Information + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Build Information + api_instance.get_status_build_info_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_status_build_info_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_status_config_v1** +> get_status_config_v1() + +Config + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Config + api_instance.get_status_config_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_status_config_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_status_flags_v1** +> get_status_flags_v1() + +Flags + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Flags + api_instance.get_status_flags_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_status_flags_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_status_runtime_info_v1** +> get_status_runtime_info_v1() + +Runtime Information + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Runtime Information + api_instance.get_status_runtime_info_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_status_runtime_info_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_status_tsdb_v1** +> get_status_tsdb_v1() + +TSDB Stats + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # TSDB Stats + api_instance.get_status_tsdb_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_status_tsdb_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_status_wal_replay_v1** +> get_status_wal_replay_v1() + +WAL Replay + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # WAL Replay + api_instance.get_status_wal_replay_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_status_wal_replay_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_targets_metadata_v1** +> get_targets_metadata_v1() + +Querying target metadata + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Querying target metadata + api_instance.get_targets_metadata_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_targets_metadata_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_targets_v1** +> get_targets_v1() + +Targets + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Targets + api_instance.get_targets_v1() + except Exception as e: + print("Exception when calling PrometheusApi->get_targets_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_admin_tsdb_clean_tombstones_v1** +> post_admin_tsdb_clean_tombstones_v1() + +Clean Tombstones + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Clean Tombstones + api_instance.post_admin_tsdb_clean_tombstones_v1() + except Exception as e: + print("Exception when calling PrometheusApi->post_admin_tsdb_clean_tombstones_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_admin_tsdb_delete_series_v1** +> post_admin_tsdb_delete_series_v1() + +Delete Series + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Delete Series + api_instance.post_admin_tsdb_delete_series_v1() + except Exception as e: + print("Exception when calling PrometheusApi->post_admin_tsdb_delete_series_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_admin_tsdb_snapshot_v1** +> post_admin_tsdb_snapshot_v1() + +Snapshot + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Snapshot + api_instance.post_admin_tsdb_snapshot_v1() + except Exception as e: + print("Exception when calling PrometheusApi->post_admin_tsdb_snapshot_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_exemplars_v1** +> post_exemplars_v1() + +Query Exemplars + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Query Exemplars + api_instance.post_exemplars_v1() + except Exception as e: + print("Exception when calling PrometheusApi->post_exemplars_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_format_query_v1** +> post_format_query_v1() + +Format Query + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Format Query + api_instance.post_format_query_v1() + except Exception as e: + print("Exception when calling PrometheusApi->post_format_query_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_labels_v1** +> LabelsResponseV1 post_labels_v1(start=start, end=end, match=match, limit=limit) + +Labels Query + +The following endpoint returns a list of label names: +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.labels_response_v1 import LabelsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + start = sysdig_client.QueryTime() # QueryTime | UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. (optional) + end = sysdig_client.QueryTime() # QueryTime | UNSUPPORTED - Sysdig does not support this parameter. (optional) + match = ['[\"{job=\\\"prometheus\\\"}\"]'] # List[str] | A repeated series selector argument that specifies the series from which to read the label names. (optional) + limit = 56 # int | The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. (optional) + + try: + # Labels Query + api_response = api_instance.post_labels_v1(start=start, end=end, match=match, limit=limit) + print("The response of PrometheusApi->post_labels_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->post_labels_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **start** | [**QueryTime**](.md)| <b>UNSUPPORTED</b> - This parameter is not supported due to the Sysdig's specific implementation. | [optional] + **end** | [**QueryTime**](.md)| <b>UNSUPPORTED</b> - Sysdig does not support this parameter. | [optional] + **match** | [**List[str]**](str.md)| A repeated series selector argument that specifies the series from which to read the label names. | [optional] + **limit** | **int**| The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. | [optional] + +### Return type + +[**LabelsResponseV1**](LabelsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of labels. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_parse_query_v1** +> post_parse_query_v1() + +Parse Query + +This endpoint is NOT SUPPORTED. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + + try: + # Parse Query + api_instance.post_parse_query_v1() + except Exception as e: + print("Exception when calling PrometheusApi->post_parse_query_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**410** | Gone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_query_range_v1** +> QueryResponseV1 post_query_range_v1(query, start, end, step, timeout=timeout, limit=limit) + +Range Query + +This endpoint evaluates an expression query over a specified time range. +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.query_response_v1 import QueryResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + query = 'up' # str | The Prometheus expression query string. + start = sysdig_client.QueryTime() # QueryTime | The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. + end = sysdig_client.QueryTime() # QueryTime | The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. + step = sysdig_client.GetQueryRangeV1StepParameter() # GetQueryRangeV1StepParameter | The query resolution step width, specified as a duration or a floating-point number of seconds. + timeout = 'timeout_example' # str | The evaluation timeout. The default is 2 minutes. (optional) + limit = 56 # int | The maximum number of returned series. To disable the limit, set the value to 0. (optional) + + try: + # Range Query + api_response = api_instance.post_query_range_v1(query, start, end, step, timeout=timeout, limit=limit) + print("The response of PrometheusApi->post_query_range_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->post_query_range_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **str**| The Prometheus expression query string. | + **start** | [**QueryTime**](.md)| The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. | + **end** | [**QueryTime**](.md)| The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. | + **step** | [**GetQueryRangeV1StepParameter**](.md)| The query resolution step width, specified as a duration or a floating-point number of seconds. | + **timeout** | **str**| The evaluation timeout. The default is 2 minutes. | [optional] + **limit** | **int**| The maximum number of returned series. To disable the limit, set the value to 0. | [optional] + +### Return type + +[**QueryResponseV1**](QueryResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Range query result. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Operation failed due to unprocessable entity. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_query_v1** +> QueryResponseV1 post_query_v1(query, time=time, timeout=timeout, limit=limit) + +Instant Query + +This endpoint evaluates an instant query at a single point in time. +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.query_response_v1 import QueryResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + query = 'up' # str | The Prometheus expression query string. + time = sysdig_client.QueryTime() # QueryTime | The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. (optional) + timeout = 'timeout_example' # str | The evaluation timeout. The default is 2 minutes. (optional) + limit = 56 # int | The maximum number of returned series. To disable the limit, set the value to 0. (optional) + + try: + # Instant Query + api_response = api_instance.post_query_v1(query, time=time, timeout=timeout, limit=limit) + print("The response of PrometheusApi->post_query_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->post_query_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **str**| The Prometheus expression query string. | + **time** | [**QueryTime**](.md)| The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. | [optional] + **timeout** | **str**| The evaluation timeout. The default is 2 minutes. | [optional] + **limit** | **int**| The maximum number of returned series. To disable the limit, set the value to 0. | [optional] + +### Return type + +[**QueryResponseV1**](QueryResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Instant query result. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_series_v1** +> SeriesResponseV1 post_series_v1(match, start=start, end=end, limit=limit) + +Series Query + +The following endpoint returns the list of time series that match a specified label set. +\ +**Required permissions:** _metrics-data.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.series_response_v1 import SeriesResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + match = ['[\"up\",\"process_start_time_seconds{job=\\\"prometheus\\\"}\"]'] # List[str] | A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. + start = sysdig_client.QueryTime() # QueryTime | The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. (optional) + end = sysdig_client.QueryTime() # QueryTime | The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. (optional) + limit = 56 # int | The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. (optional) + + try: + # Series Query + api_response = api_instance.post_series_v1(match, start=start, end=end, limit=limit) + print("The response of PrometheusApi->post_series_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->post_series_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **match** | [**List[str]**](str.md)| A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. | + **start** | [**QueryTime**](.md)| The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. | [optional] + **end** | [**QueryTime**](.md)| The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. | [optional] + **limit** | **int**| The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. | [optional] + +### Return type + +[**SeriesResponseV1**](SeriesResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of time series. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Operation failed due to unprocessable entity. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **remote_write_v1** +> str remote_write_v1(body) + +Ingest metric data (remote write) + +Accepts a Protobuf-encoded Snappy-compressed request containing time series data. Used for remote write integrations. +\ +**Required permissions:** _ingest.prws_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.PrometheusApi(api_client) + body = None # bytearray | + + try: + # Ingest metric data (remote write) + api_response = api_instance.remote_write_v1(body) + print("The response of PrometheusApi->remote_write_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling PrometheusApi->remote_write_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **bytearray**| | + +### Return type + +**str** + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/x-protobuf + - **Accept**: text/plain, application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Confirmation message. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/PrometheusError.md b/docs/reference/PrometheusError.md new file mode 100644 index 00000000..edeee4f2 --- /dev/null +++ b/docs/reference/PrometheusError.md @@ -0,0 +1,31 @@ +# PrometheusError + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | Indicates an error response. | [optional] +**error_type** | **str** | Type of error encountered. | [optional] +**error** | **str** | Error message describing the issue. | [optional] + +## Example + +```python +from sysdig_client.models.prometheus_error import PrometheusError + +# TODO update the JSON string below +json = "{}" +# create an instance of PrometheusError from a JSON string +prometheus_error_instance = PrometheusError.from_json(json) +# print the JSON string representation of the object +print(PrometheusError.to_json()) + +# convert the object into a dict +prometheus_error_dict = prometheus_error_instance.to_dict() +# create an instance of PrometheusError from a dict +prometheus_error_from_dict = PrometheusError.from_dict(prometheus_error_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/PromqlMatcher.md b/docs/reference/PromqlMatcher.md new file mode 100644 index 00000000..311a48c2 --- /dev/null +++ b/docs/reference/PromqlMatcher.md @@ -0,0 +1,32 @@ +# PromqlMatcher + +A PromQL-style filter that narrows the dataset to resources matching specific labels. If not provided, no additional filtering is applied. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**label** | **str** | A valid Prometheus label name. Must match ^[a-zA-Z_][a-zA-Z0-9_]*$ | +**operator** | **str** | The operator to use in the filter: - `EQUAL` (`=`): Exact match - `NOT_EQUAL` (`!=`): Exclude exact match - `REGEX_MATCH` (`=~`): Regular expression match - `REGEX_NOT_MATCH` (`!~`): Regular expression mismatch | +**value** | **str** | The value to match against. | + +## Example + +```python +from sysdig_client.models.promql_matcher import PromqlMatcher + +# TODO update the JSON string below +json = "{}" +# create an instance of PromqlMatcher from a JSON string +promql_matcher_instance = PromqlMatcher.from_json(json) +# print the JSON string representation of the object +print(PromqlMatcher.to_json()) + +# convert the object into a dict +promql_matcher_dict = promql_matcher_instance.to_dict() +# create an instance of PromqlMatcher from a dict +promql_matcher_from_dict = PromqlMatcher.from_dict(promql_matcher_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QueryResponse.md b/docs/reference/QueryResponse.md new file mode 100644 index 00000000..a8ec433b --- /dev/null +++ b/docs/reference/QueryResponse.md @@ -0,0 +1,33 @@ +# QueryResponse + +Response object containing query results and metadata. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**entities** | [**QueryResponseEntities**](QueryResponseEntities.md) | | +**items** | **List[Dict[str, object]]** | Array of query results based on the query fields. | +**id** | **str** | Unique identifier for the query execution. | +**summary** | [**QuerySummary**](QuerySummary.md) | | + +## Example + +```python +from sysdig_client.models.query_response import QueryResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of QueryResponse from a JSON string +query_response_instance = QueryResponse.from_json(json) +# print the JSON string representation of the object +print(QueryResponse.to_json()) + +# convert the object into a dict +query_response_dict = query_response_instance.to_dict() +# create an instance of QueryResponse from a dict +query_response_from_dict = QueryResponse.from_dict(query_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QueryResponseEntities.md b/docs/reference/QueryResponseEntities.md new file mode 100644 index 00000000..68441283 --- /dev/null +++ b/docs/reference/QueryResponseEntities.md @@ -0,0 +1,30 @@ +# QueryResponseEntities + +Metadata about the returned fields. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**fields** | [**EntityDefinition**](EntityDefinition.md) | | [optional] + +## Example + +```python +from sysdig_client.models.query_response_entities import QueryResponseEntities + +# TODO update the JSON string below +json = "{}" +# create an instance of QueryResponseEntities from a JSON string +query_response_entities_instance = QueryResponseEntities.from_json(json) +# print the JSON string representation of the object +print(QueryResponseEntities.to_json()) + +# convert the object into a dict +query_response_entities_dict = query_response_entities_instance.to_dict() +# create an instance of QueryResponseEntities from a dict +query_response_entities_from_dict = QueryResponseEntities.from_dict(query_response_entities_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QueryResponseV1.md b/docs/reference/QueryResponseV1.md new file mode 100644 index 00000000..a4bee03c --- /dev/null +++ b/docs/reference/QueryResponseV1.md @@ -0,0 +1,32 @@ +# QueryResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | Query status. | [optional] +**data** | [**QueryResponseV1Data**](QueryResponseV1Data.md) | | [optional] +**warnings** | **List[str]** | A set of warning messages attached to the response. | [optional] +**infos** | **List[str]** | A set of information messages attached to the response. | [optional] + +## Example + +```python +from sysdig_client.models.query_response_v1 import QueryResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of QueryResponseV1 from a JSON string +query_response_v1_instance = QueryResponseV1.from_json(json) +# print the JSON string representation of the object +print(QueryResponseV1.to_json()) + +# convert the object into a dict +query_response_v1_dict = query_response_v1_instance.to_dict() +# create an instance of QueryResponseV1 from a dict +query_response_v1_from_dict = QueryResponseV1.from_dict(query_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QueryResponseV1Data.md b/docs/reference/QueryResponseV1Data.md new file mode 100644 index 00000000..8261fc0c --- /dev/null +++ b/docs/reference/QueryResponseV1Data.md @@ -0,0 +1,31 @@ +# QueryResponseV1Data + +The result of the query. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result_type** | **str** | Type of the result set. | [optional] +**result** | [**QueryResponseV1DataResult**](QueryResponseV1DataResult.md) | | [optional] + +## Example + +```python +from sysdig_client.models.query_response_v1_data import QueryResponseV1Data + +# TODO update the JSON string below +json = "{}" +# create an instance of QueryResponseV1Data from a JSON string +query_response_v1_data_instance = QueryResponseV1Data.from_json(json) +# print the JSON string representation of the object +print(QueryResponseV1Data.to_json()) + +# convert the object into a dict +query_response_v1_data_dict = query_response_v1_data_instance.to_dict() +# create an instance of QueryResponseV1Data from a dict +query_response_v1_data_from_dict = QueryResponseV1Data.from_dict(query_response_v1_data_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QueryResponseV1DataResult.md b/docs/reference/QueryResponseV1DataResult.md new file mode 100644 index 00000000..8c5f4326 --- /dev/null +++ b/docs/reference/QueryResponseV1DataResult.md @@ -0,0 +1,28 @@ +# QueryResponseV1DataResult + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.query_response_v1_data_result import QueryResponseV1DataResult + +# TODO update the JSON string below +json = "{}" +# create an instance of QueryResponseV1DataResult from a JSON string +query_response_v1_data_result_instance = QueryResponseV1DataResult.from_json(json) +# print the JSON string representation of the object +print(QueryResponseV1DataResult.to_json()) + +# convert the object into a dict +query_response_v1_data_result_dict = query_response_v1_data_result_instance.to_dict() +# create an instance of QueryResponseV1DataResult from a dict +query_response_v1_data_result_from_dict = QueryResponseV1DataResult.from_dict(query_response_v1_data_result_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QueryResponseV1DataResultAnyOfInner.md b/docs/reference/QueryResponseV1DataResultAnyOfInner.md new file mode 100644 index 00000000..fe83d5a4 --- /dev/null +++ b/docs/reference/QueryResponseV1DataResultAnyOfInner.md @@ -0,0 +1,28 @@ +# QueryResponseV1DataResultAnyOfInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.query_response_v1_data_result_any_of_inner import QueryResponseV1DataResultAnyOfInner + +# TODO update the JSON string below +json = "{}" +# create an instance of QueryResponseV1DataResultAnyOfInner from a JSON string +query_response_v1_data_result_any_of_inner_instance = QueryResponseV1DataResultAnyOfInner.from_json(json) +# print the JSON string representation of the object +print(QueryResponseV1DataResultAnyOfInner.to_json()) + +# convert the object into a dict +query_response_v1_data_result_any_of_inner_dict = query_response_v1_data_result_any_of_inner_instance.to_dict() +# create an instance of QueryResponseV1DataResultAnyOfInner from a dict +query_response_v1_data_result_any_of_inner_from_dict = QueryResponseV1DataResultAnyOfInner.from_dict(query_response_v1_data_result_any_of_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QueryResponseV1DataResultAnyOfInner1.md b/docs/reference/QueryResponseV1DataResultAnyOfInner1.md new file mode 100644 index 00000000..d7c1e121 --- /dev/null +++ b/docs/reference/QueryResponseV1DataResultAnyOfInner1.md @@ -0,0 +1,30 @@ +# QueryResponseV1DataResultAnyOfInner1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metric** | **Dict[str, str]** | | +**value** | **List[str]** | | + +## Example + +```python +from sysdig_client.models.query_response_v1_data_result_any_of_inner1 import QueryResponseV1DataResultAnyOfInner1 + +# TODO update the JSON string below +json = "{}" +# create an instance of QueryResponseV1DataResultAnyOfInner1 from a JSON string +query_response_v1_data_result_any_of_inner1_instance = QueryResponseV1DataResultAnyOfInner1.from_json(json) +# print the JSON string representation of the object +print(QueryResponseV1DataResultAnyOfInner1.to_json()) + +# convert the object into a dict +query_response_v1_data_result_any_of_inner1_dict = query_response_v1_data_result_any_of_inner1_instance.to_dict() +# create an instance of QueryResponseV1DataResultAnyOfInner1 from a dict +query_response_v1_data_result_any_of_inner1_from_dict = QueryResponseV1DataResultAnyOfInner1.from_dict(query_response_v1_data_result_any_of_inner1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QueryResponseV1DataResultAnyOfInner2.md b/docs/reference/QueryResponseV1DataResultAnyOfInner2.md new file mode 100644 index 00000000..0f5c7dc4 --- /dev/null +++ b/docs/reference/QueryResponseV1DataResultAnyOfInner2.md @@ -0,0 +1,30 @@ +# QueryResponseV1DataResultAnyOfInner2 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metric** | **Dict[str, str]** | | +**values** | **List[List[str]]** | | + +## Example + +```python +from sysdig_client.models.query_response_v1_data_result_any_of_inner2 import QueryResponseV1DataResultAnyOfInner2 + +# TODO update the JSON string below +json = "{}" +# create an instance of QueryResponseV1DataResultAnyOfInner2 from a JSON string +query_response_v1_data_result_any_of_inner2_instance = QueryResponseV1DataResultAnyOfInner2.from_json(json) +# print the JSON string representation of the object +print(QueryResponseV1DataResultAnyOfInner2.to_json()) + +# convert the object into a dict +query_response_v1_data_result_any_of_inner2_dict = query_response_v1_data_result_any_of_inner2_instance.to_dict() +# create an instance of QueryResponseV1DataResultAnyOfInner2 from a dict +query_response_v1_data_result_any_of_inner2_from_dict = QueryResponseV1DataResultAnyOfInner2.from_dict(query_response_v1_data_result_any_of_inner2_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QuerySummary.md b/docs/reference/QuerySummary.md new file mode 100644 index 00000000..379df86e --- /dev/null +++ b/docs/reference/QuerySummary.md @@ -0,0 +1,32 @@ +# QuerySummary + +Summary of query execution metrics and timing information. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**available_after** | **int** | Time taken for results to become available in milliseconds. | +**consumed_after** | **int** | Time taken to consume results in milliseconds. | +**total_time** | **int** | Total query execution time in milliseconds. | + +## Example + +```python +from sysdig_client.models.query_summary import QuerySummary + +# TODO update the JSON string below +json = "{}" +# create an instance of QuerySummary from a JSON string +query_summary_instance = QuerySummary.from_json(json) +# print the JSON string representation of the object +print(QuerySummary.to_json()) + +# convert the object into a dict +query_summary_dict = query_summary_instance.to_dict() +# create an instance of QuerySummary from a dict +query_summary_from_dict = QuerySummary.from_dict(query_summary_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QuerySysqlPostRequest.md b/docs/reference/QuerySysqlPostRequest.md new file mode 100644 index 00000000..bcece576 --- /dev/null +++ b/docs/reference/QuerySysqlPostRequest.md @@ -0,0 +1,32 @@ +# QuerySysqlPostRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**q** | **str** | The SysQL statement. | +**limit** | **int** | The limit parameter defines the maximum number of items returned in the result set, specifically within the items array in the response. This parameter is optional. The recommended approach is to define the limit directly in the SysQL statement using the LIMIT clause. If specified in the request body, it will override the limit set in the statement. If not specified, a default limit of 50 will be applied. | [optional] [default to 50] +**offset** | **int** | The offset parameter specifies how many result set objects to skip in a MATCH statement. Use it when you want to ignore the first few items in the result set. This parameter is optional. The recommended approach is to set the offset directly in the SysQL statement using the OFFSET clause. If specified in the request body, it will override the offset in the statement. If not specified, a default offset of 0 will be applied. Use limit and offset together in SysQL to paginate results, splitting them into pages with a defined number of items for display. | [optional] [default to 0] +**deterministic_order** | **bool** | The deterministic_order parameter controls whether consistent ordering is enforced in the result set. Ordering is implicitly applied when pagination options, such as limit and offset, are specified in the request. This is an optional parameter. | [optional] [default to False] + +## Example + +```python +from sysdig_client.models.query_sysql_post_request import QuerySysqlPostRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of QuerySysqlPostRequest from a JSON string +query_sysql_post_request_instance = QuerySysqlPostRequest.from_json(json) +# print the JSON string representation of the object +print(QuerySysqlPostRequest.to_json()) + +# convert the object into a dict +query_sysql_post_request_dict = query_sysql_post_request_instance.to_dict() +# create an instance of QuerySysqlPostRequest from a dict +query_sysql_post_request_from_dict = QuerySysqlPostRequest.from_dict(query_sysql_post_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/QueryTime.md b/docs/reference/QueryTime.md new file mode 100644 index 00000000..3c2e54f6 --- /dev/null +++ b/docs/reference/QueryTime.md @@ -0,0 +1,29 @@ +# QueryTime + +Time defined as RFC3339 or a unix timestamp + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.query_time import QueryTime + +# TODO update the JSON string below +json = "{}" +# create an instance of QueryTime from a JSON string +query_time_instance = QueryTime.from_json(json) +# print the JSON string representation of the object +print(QueryTime.to_json()) + +# convert the object into a dict +query_time_dict = query_time_instance.to_dict() +# create an instance of QueryTime from a dict +query_time_from_dict = QueryTime.from_dict(query_time_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RegistryResult.md b/docs/reference/RegistryResult.md new file mode 100644 index 00000000..fbbfd097 --- /dev/null +++ b/docs/reference/RegistryResult.md @@ -0,0 +1,35 @@ +# RegistryResult + +Registry result + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result_id** | **str** | Identifier of the scan result | [optional] +**image_id** | **str** | Identifier of the image (hash). | [optional] +**vendor** | **str** | Identifier the vendor of the image | [optional] +**pull_string** | **str** | Name of the scanned asset | [optional] +**vuln_total_by_severity** | [**VulnTotalBySeverity**](VulnTotalBySeverity.md) | | [optional] +**created_at** | **str** | datetime of creation | [optional] + +## Example + +```python +from sysdig_client.models.registry_result import RegistryResult + +# TODO update the JSON string below +json = "{}" +# create an instance of RegistryResult from a JSON string +registry_result_instance = RegistryResult.from_json(json) +# print the JSON string representation of the object +print(RegistryResult.to_json()) + +# convert the object into a dict +registry_result_dict = registry_result_instance.to_dict() +# create an instance of RegistryResult from a dict +registry_result_from_dict = RegistryResult.from_dict(registry_result_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RegistryResultsResponse.md b/docs/reference/RegistryResultsResponse.md new file mode 100644 index 00000000..829c8bb0 --- /dev/null +++ b/docs/reference/RegistryResultsResponse.md @@ -0,0 +1,31 @@ +# RegistryResultsResponse + +registry results response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**VulnerabilityManagementPage**](VulnerabilityManagementPage.md) | | [optional] +**data** | [**List[RegistryResult]**](RegistryResult.md) | | [optional] + +## Example + +```python +from sysdig_client.models.registry_results_response import RegistryResultsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of RegistryResultsResponse from a JSON string +registry_results_response_instance = RegistryResultsResponse.from_json(json) +# print the JSON string representation of the object +print(RegistryResultsResponse.to_json()) + +# convert the object into a dict +registry_results_response_dict = registry_results_response_instance.to_dict() +# create an instance of RegistryResultsResponse from a dict +registry_results_response_from_dict = RegistryResultsResponse.from_dict(registry_results_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ReportingApi.md b/docs/reference/ReportingApi.md new file mode 100644 index 00000000..b91799e3 --- /dev/null +++ b/docs/reference/ReportingApi.md @@ -0,0 +1,194 @@ +# sysdig_client.ReportingApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**list_jobs_v1**](ReportingApi.md#list_jobs_v1) | **GET** /platform/reporting/v1/jobs | List Report Job Runs +[**list_schedules_v1**](ReportingApi.md#list_schedules_v1) | **GET** /platform/reporting/v1/schedules | List Report Schedules + + +# **list_jobs_v1** +> ListJobs list_jobs_v1(schedule_id, report_id=report_id, is_report_template=is_report_template, completed_on=completed_on, job_type=job_type, status=status, kind=kind, policies=policies, zones=zones) + +List Report Job Runs + +Retrieve a list of Report Job runs.\ +\ +**Required permissions:** platform.reporting.report-downloads.read + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_jobs import ListJobs +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ReportingApi(api_client) + schedule_id = '2pUnGeLvrOo5qoWuvXg5H9nEH2g' # str | ID of the Schedule + report_id = 1 # int | ID of the Report (optional) + is_report_template = 'true' # str | Indicates whether the report is a template. (optional) + completed_on = 56 # int | Date the job was completed in epoch milliseconds. (optional) + job_type = 'SCHEDULED' # str | Type of the job. (optional) + status = 'COMPLETED' # str | Status of the job. (optional) + kind = 'compliance_readiness' # str | Kind of the report. (optional) + policies = '[1,2,3]' # str | List of policy IDs in string format. (optional) + zones = '[1,2,3]' # str | List of zone IDs in string format. (optional) + + try: + # List Report Job Runs + api_response = api_instance.list_jobs_v1(schedule_id, report_id=report_id, is_report_template=is_report_template, completed_on=completed_on, job_type=job_type, status=status, kind=kind, policies=policies, zones=zones) + print("The response of ReportingApi->list_jobs_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ReportingApi->list_jobs_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **schedule_id** | **str**| ID of the Schedule | + **report_id** | **int**| ID of the Report | [optional] + **is_report_template** | **str**| Indicates whether the report is a template. | [optional] + **completed_on** | **int**| Date the job was completed in epoch milliseconds. | [optional] + **job_type** | **str**| Type of the job. | [optional] + **status** | **str**| Status of the job. | [optional] + **kind** | **str**| Kind of the report. | [optional] + **policies** | **str**| List of policy IDs in string format. | [optional] + **zones** | **str**| List of zone IDs in string format. | [optional] + +### Return type + +[**ListJobs**](ListJobs.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of Report job runs. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **list_schedules_v1** +> ListSchedules list_schedules_v1() + +List Report Schedules + +Retrieve a paginated list of Report Schedules.\ +\ +**Required permissions:** platform.reporting.schedules.read + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_schedules import ListSchedules +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ReportingApi(api_client) + + try: + # List Report Schedules + api_response = api_instance.list_schedules_v1() + print("The response of ReportingApi->list_schedules_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ReportingApi->list_schedules_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**ListSchedules**](ListSchedules.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of Report schedules | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/RequestBodyDisabledMetricsV1.md b/docs/reference/RequestBodyDisabledMetricsV1.md new file mode 100644 index 00000000..cf75b3e1 --- /dev/null +++ b/docs/reference/RequestBodyDisabledMetricsV1.md @@ -0,0 +1,30 @@ +# RequestBodyDisabledMetricsV1 + +Change Disabled Metrics per JobName + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[DisableJobsAndMetricsV1]**](DisableJobsAndMetricsV1.md) | | + +## Example + +```python +from sysdig_client.models.request_body_disabled_metrics_v1 import RequestBodyDisabledMetricsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of RequestBodyDisabledMetricsV1 from a JSON string +request_body_disabled_metrics_v1_instance = RequestBodyDisabledMetricsV1.from_json(json) +# print the JSON string representation of the object +print(RequestBodyDisabledMetricsV1.to_json()) + +# convert the object into a dict +request_body_disabled_metrics_v1_dict = request_body_disabled_metrics_v1_instance.to_dict() +# create an instance of RequestBodyDisabledMetricsV1 from a dict +request_body_disabled_metrics_v1_from_dict = RequestBodyDisabledMetricsV1.from_dict(request_body_disabled_metrics_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ResponderType.md b/docs/reference/ResponderType.md new file mode 100644 index 00000000..35f5b1c9 --- /dev/null +++ b/docs/reference/ResponderType.md @@ -0,0 +1,15 @@ +# ResponderType + +The type of Responder executing an action. + +## Enum + +* `HOST` (value: `'HOST'`) + +* `CLUSTER` (value: `'CLUSTER'`) + +* `CLOUD` (value: `'CLOUD'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ResponseAction.md b/docs/reference/ResponseAction.md new file mode 100644 index 00000000..aa709a63 --- /dev/null +++ b/docs/reference/ResponseAction.md @@ -0,0 +1,35 @@ +# ResponseAction + +The action metadata + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | The name of the Response Action to execute. It may be one of the following: - KILL_PROCESS - KILL_CONTAINER - STOP_CONTAINER - PAUSE_CONTAINER - FILE_QUARANTINE - FILE_ACQUIRE - UNPAUSE_CONTAINER - FILE_UNQUARANTINE - START_CONTAINER - DELETE_POD - ROLLOUT_RESTART - KUBERNETES_VOLUME_SNAPSHOT - KUBERNETES_DELETE_VOLUME_SNAPSHOT - GET_LOGS - ISOLATE_NETWORK - DELETE_NETWORK_POLICY The following actions serve as the undo for previous actions: - START_CONTAINER: undo for STOP_CONTAINER\\ - UNPAUSE_CONTAINER: undo for PAUSE_CONTAINER\\ - FILE_UNQUARANTINE: undo for FILE_QUARANTINE\\ - KUBERNETES_DELETE_VOLUME_SNAPSHOT: undo for KUBERNETES_VOLUME_SNAPSHOT\\ - DELETE_NETWORK_POLICY: undo for ISOLATE_NETWORK\\ Do not use undo actions in [submitActionExecutionv1](#tag/Response-actions/operation/submitActionExecutionv1). You can execute an undo actions using the service [undoActionExecutionV1](#tag/Response-actions/operation/undoActionExecutionV1). | +**responder_type** | [**ResponderType**](ResponderType.md) | | +**parameters** | [**List[ActionParameterMetadata]**](ActionParameterMetadata.md) | the list of parameters that the action supports | +**outputs** | [**List[ActionOutputsMetadata]**](ActionOutputsMetadata.md) | | [optional] +**description** | **str** | The description of the action. | +**is_undoable** | **bool** | Whether the action is undoable. | + +## Example + +```python +from sysdig_client.models.response_action import ResponseAction + +# TODO update the JSON string below +json = "{}" +# create an instance of ResponseAction from a JSON string +response_action_instance = ResponseAction.from_json(json) +# print the JSON string representation of the object +print(ResponseAction.to_json()) + +# convert the object into a dict +response_action_dict = response_action_instance.to_dict() +# create an instance of ResponseAction from a dict +response_action_from_dict = ResponseAction.from_dict(response_action_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ResponseActionsApi.md b/docs/reference/ResponseActionsApi.md new file mode 100644 index 00000000..e9d37781 --- /dev/null +++ b/docs/reference/ResponseActionsApi.md @@ -0,0 +1,542 @@ +# sysdig_client.ResponseActionsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_action_execution_file_acquire_v1**](ResponseActionsApi.md#get_action_execution_file_acquire_v1) | **GET** /secure/response-actions/v1alpha1/action-executions/{actionExecutionId}/acquired-file | Get Acquired File +[**get_action_execution_v1**](ResponseActionsApi.md#get_action_execution_v1) | **GET** /secure/response-actions/v1alpha1/action-executions/{actionExecutionId} | Get Action Execution +[**get_action_executionsv1**](ResponseActionsApi.md#get_action_executionsv1) | **GET** /secure/response-actions/v1alpha1/action-executions | Returns the list of Response Actions executions. You can filter them with the available query parameters. +[**get_actions_v1**](ResponseActionsApi.md#get_actions_v1) | **GET** /secure/response-actions/v1alpha1/actions | Get All Response Actions +[**submit_action_executionv1**](ResponseActionsApi.md#submit_action_executionv1) | **POST** /secure/response-actions/v1alpha1/action-executions | Submit the execution of an action +[**undo_action_execution_v1**](ResponseActionsApi.md#undo_action_execution_v1) | **DELETE** /secure/response-actions/v1alpha1/action-executions/{actionExecutionId} | Undoes an Action Execution + + +# **get_action_execution_file_acquire_v1** +> bytearray get_action_execution_file_acquire_v1(action_execution_id) + +Get Acquired File + +Download a Capture file created by an executed "File Acquire" Response Action.\ +\ +**Required permissions:** _data-gathering-response-actions.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ResponseActionsApi(api_client) + action_execution_id = '1234567890123456789012345678901234567890123456789012345678901234' # str | ID of the action execution + + try: + # Get Acquired File + api_response = api_instance.get_action_execution_file_acquire_v1(action_execution_id) + print("The response of ResponseActionsApi->get_action_execution_file_acquire_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ResponseActionsApi->get_action_execution_file_acquire_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **action_execution_id** | **str**| ID of the action execution | + +### Return type + +**bytearray** + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/octet-stream, application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The content of the capture file created by a \"File Acquire\" response action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_action_execution_v1** +> ActionExecution get_action_execution_v1(action_execution_id) + +Get Action Execution + +Get an action execution.\ +\ +**Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. Results will include the executions of the Response Actions you are allowed to see. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.action_execution import ActionExecution +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ResponseActionsApi(api_client) + action_execution_id = '1234567890123456789012345678901234567890123456789012345678901234' # str | ID of the action execution + + try: + # Get Action Execution + api_response = api_instance.get_action_execution_v1(action_execution_id) + print("The response of ResponseActionsApi->get_action_execution_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ResponseActionsApi->get_action_execution_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **action_execution_id** | **str**| ID of the action execution | + +### Return type + +[**ActionExecution**](ActionExecution.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The action execution. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_action_executionsv1** +> ActionExecutions get_action_executionsv1(caller_id=caller_id, filter=filter, limit=limit, offset=offset, var_from=var_from, to=to) + +Returns the list of Response Actions executions. You can filter them with the available query parameters. + +Returns a list of action executions. +**Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.action_executions import ActionExecutions +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ResponseActionsApi(api_client) + caller_id = 'caller_id_example' # str | (optional) + filter = 'filter_example' # str | (optional) + limit = 25 # int | The number of items to return (optional) (default to 25) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + var_from = 56 # int | (optional) + to = 56 # int | (optional) + + try: + # Returns the list of Response Actions executions. You can filter them with the available query parameters. + api_response = api_instance.get_action_executionsv1(caller_id=caller_id, filter=filter, limit=limit, offset=offset, var_from=var_from, to=to) + print("The response of ResponseActionsApi->get_action_executionsv1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ResponseActionsApi->get_action_executionsv1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **caller_id** | **str**| | [optional] + **filter** | **str**| | [optional] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **var_from** | **int**| | [optional] + **to** | **int**| | [optional] + +### Return type + +[**ActionExecutions**](ActionExecutions.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The executions list has been returned correctly. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid or inconsistent parameters. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_actions_v1** +> Actions get_actions_v1(context=context) + +Get All Response Actions + +Get the list of available executable Response Actions.\ +\ +**Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.actions import Actions +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ResponseActionsApi(api_client) + context = {'key': 'context_example'} # Dict[str, str] | (optional) + + try: + # Get All Response Actions + api_response = api_instance.get_actions_v1(context=context) + print("The response of ResponseActionsApi->get_actions_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ResponseActionsApi->get_actions_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **context** | [**Dict[str, str]**](str.md)| | [optional] + +### Return type + +[**Actions**](Actions.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The action execution. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **submit_action_executionv1** +> ActionExecution submit_action_executionv1(submit_action_execution_request) + +Submit the execution of an action + +Submits the execution of an action. The action will be executed asynchronously and the response will contain the action execution ID.\ +**Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.action_execution import ActionExecution +from sysdig_client.models.submit_action_execution_request import SubmitActionExecutionRequest +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ResponseActionsApi(api_client) + submit_action_execution_request = sysdig_client.SubmitActionExecutionRequest() # SubmitActionExecutionRequest | Configuration for the new integration + + try: + # Submit the execution of an action + api_response = api_instance.submit_action_executionv1(submit_action_execution_request) + print("The response of ResponseActionsApi->submit_action_executionv1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ResponseActionsApi->submit_action_executionv1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **submit_action_execution_request** | [**SubmitActionExecutionRequest**](SubmitActionExecutionRequest.md)| Configuration for the new integration | + +### Return type + +[**ActionExecution**](ActionExecution.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | The Response Action execution request has been submitted correctly. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid or inconsistent parameters | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **undo_action_execution_v1** +> ActionExecution undo_action_execution_v1(action_execution_id, caller_id=caller_id) + +Undoes an Action Execution + +Undoes an action execution.\ +\ +**Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.action_execution import ActionExecution +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ResponseActionsApi(api_client) + action_execution_id = '1234567890123456789012345678901234567890123456789012345678901234' # str | ID of the action execution + caller_id = 'caller_id_example' # str | (optional) + + try: + # Undoes an Action Execution + api_response = api_instance.undo_action_execution_v1(action_execution_id, caller_id=caller_id) + print("The response of ResponseActionsApi->undo_action_execution_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ResponseActionsApi->undo_action_execution_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **action_execution_id** | **str**| ID of the action execution | + **caller_id** | **str**| | [optional] + +### Return type + +[**ActionExecution**](ActionExecution.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The undo action execution. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/ResponseListDisabledMetricsAndErrorV1.md b/docs/reference/ResponseListDisabledMetricsAndErrorV1.md new file mode 100644 index 00000000..2f1cfa9f --- /dev/null +++ b/docs/reference/ResponseListDisabledMetricsAndErrorV1.md @@ -0,0 +1,31 @@ +# ResponseListDisabledMetricsAndErrorV1 + +Get Disabled Metrics by Job name Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[ListJobAndDisabledMetricsV1]**](ListJobAndDisabledMetricsV1.md) | | +**errors** | [**List[MetricErrorV1]**](MetricErrorV1.md) | | + +## Example + +```python +from sysdig_client.models.response_list_disabled_metrics_and_error_v1 import ResponseListDisabledMetricsAndErrorV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of ResponseListDisabledMetricsAndErrorV1 from a JSON string +response_list_disabled_metrics_and_error_v1_instance = ResponseListDisabledMetricsAndErrorV1.from_json(json) +# print the JSON string representation of the object +print(ResponseListDisabledMetricsAndErrorV1.to_json()) + +# convert the object into a dict +response_list_disabled_metrics_and_error_v1_dict = response_list_disabled_metrics_and_error_v1_instance.to_dict() +# create an instance of ResponseListDisabledMetricsAndErrorV1 from a dict +response_list_disabled_metrics_and_error_v1_from_dict = ResponseListDisabledMetricsAndErrorV1.from_dict(response_list_disabled_metrics_and_error_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ResponseListDisabledMetricsV1.md b/docs/reference/ResponseListDisabledMetricsV1.md new file mode 100644 index 00000000..d8cbce63 --- /dev/null +++ b/docs/reference/ResponseListDisabledMetricsV1.md @@ -0,0 +1,31 @@ +# ResponseListDisabledMetricsV1 + +Get Disabled Metrics by Job name Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[ListJobAndDisabledMetricsV1]**](ListJobAndDisabledMetricsV1.md) | | +**errors** | [**List[MetricErrorV1]**](MetricErrorV1.md) | | [optional] + +## Example + +```python +from sysdig_client.models.response_list_disabled_metrics_v1 import ResponseListDisabledMetricsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of ResponseListDisabledMetricsV1 from a JSON string +response_list_disabled_metrics_v1_instance = ResponseListDisabledMetricsV1.from_json(json) +# print the JSON string representation of the object +print(ResponseListDisabledMetricsV1.to_json()) + +# convert the object into a dict +response_list_disabled_metrics_v1_dict = response_list_disabled_metrics_v1_instance.to_dict() +# create an instance of ResponseListDisabledMetricsV1 from a dict +response_list_disabled_metrics_v1_from_dict = ResponseListDisabledMetricsV1.from_dict(response_list_disabled_metrics_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RiskAcceptanceDefinition.md b/docs/reference/RiskAcceptanceDefinition.md new file mode 100644 index 00000000..1d4fb834 --- /dev/null +++ b/docs/reference/RiskAcceptanceDefinition.md @@ -0,0 +1,38 @@ +# RiskAcceptanceDefinition + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | id of the risk acceptance | +**entity_type** | **str** | entity type for the risk | +**entity_value** | **str** | entity value relative to the the entity type | +**context** | [**List[Context]**](Context.md) | | +**status** | **str** | | +**reason** | **str** | risk acceptance reason | [optional] +**description** | **str** | risk acceptance description | [optional] +**expiration_date** | **date** | | +**created_at** | **str** | datetime of creation | +**updated_at** | **str** | datetime of last update | + +## Example + +```python +from sysdig_client.models.risk_acceptance_definition import RiskAcceptanceDefinition + +# TODO update the JSON string below +json = "{}" +# create an instance of RiskAcceptanceDefinition from a JSON string +risk_acceptance_definition_instance = RiskAcceptanceDefinition.from_json(json) +# print the JSON string representation of the object +print(RiskAcceptanceDefinition.to_json()) + +# convert the object into a dict +risk_acceptance_definition_dict = risk_acceptance_definition_instance.to_dict() +# create an instance of RiskAcceptanceDefinition from a dict +risk_acceptance_definition_from_dict = RiskAcceptanceDefinition.from_dict(risk_acceptance_definition_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RiskAcceptedResponse.md b/docs/reference/RiskAcceptedResponse.md new file mode 100644 index 00000000..f0732864 --- /dev/null +++ b/docs/reference/RiskAcceptedResponse.md @@ -0,0 +1,41 @@ +# RiskAcceptedResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The Accepted Risk ID | +**expiration_date** | **date** | Date when the accepted risk will expire (in YYYY-MM-DD format) | [optional] +**created_at** | **datetime** | Date when the Accepted Risk was created | [optional] +**updated_at** | **datetime** | Date when the Accepted Risk was updated | [optional] +**status** | **str** | Specifies whether the Accepted Risk is enabled or expired | +**created_by** | **str** | User who created the risk acceptance | [optional] +**updated_by** | **str** | User who last updated the risk acceptance | [optional] +**entity_value** | **str** | A value to match with the entityType | +**reason** | **str** | Reason for acceptance | +**description** | **str** | Description of why the accepted risk was created | +**stages** | **List[str]** | List of stages where the risk acceptance is applied, empty list enables risk acceptance for all the stages | [optional] +**entity_type** | **str** | The entity where the Accepted Risk will be applied. | +**context** | [**RiskAcceptedResponseAllOfContext**](RiskAcceptedResponseAllOfContext.md) | | + +## Example + +```python +from sysdig_client.models.risk_accepted_response import RiskAcceptedResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of RiskAcceptedResponse from a JSON string +risk_accepted_response_instance = RiskAcceptedResponse.from_json(json) +# print the JSON string representation of the object +print(RiskAcceptedResponse.to_json()) + +# convert the object into a dict +risk_accepted_response_dict = risk_accepted_response_instance.to_dict() +# create an instance of RiskAcceptedResponse from a dict +risk_accepted_response_from_dict = RiskAcceptedResponse.from_dict(risk_accepted_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RiskAcceptedResponseAllOfContext.md b/docs/reference/RiskAcceptedResponseAllOfContext.md new file mode 100644 index 00000000..120f55fe --- /dev/null +++ b/docs/reference/RiskAcceptedResponseAllOfContext.md @@ -0,0 +1,29 @@ +# RiskAcceptedResponseAllOfContext + +If entityType is not `vulnerability`, `policyRule` or `package`, you should use `Empty Matcher` in the context. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.risk_accepted_response_all_of_context import RiskAcceptedResponseAllOfContext + +# TODO update the JSON string below +json = "{}" +# create an instance of RiskAcceptedResponseAllOfContext from a JSON string +risk_accepted_response_all_of_context_instance = RiskAcceptedResponseAllOfContext.from_json(json) +# print the JSON string representation of the object +print(RiskAcceptedResponseAllOfContext.to_json()) + +# convert the object into a dict +risk_accepted_response_all_of_context_dict = risk_accepted_response_all_of_context_instance.to_dict() +# create an instance of RiskAcceptedResponseAllOfContext from a dict +risk_accepted_response_all_of_context_from_dict = RiskAcceptedResponseAllOfContext.from_dict(risk_accepted_response_all_of_context_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RoleRequestV1.md b/docs/reference/RoleRequestV1.md new file mode 100644 index 00000000..679fc5e7 --- /dev/null +++ b/docs/reference/RoleRequestV1.md @@ -0,0 +1,33 @@ +# RoleRequestV1 + +Create or update role request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**description** | **str** | Describes the role | [optional] +**monitor_permissions** | **List[str]** | Set of Monitor permissions assigned to the role. Check GET /platform/v1/permissions to obtain the list of available values. | [optional] +**secure_permissions** | **List[str]** | Set of Secure permissions assigned to the role. Check GET /platform/v1/permissions to obtain the list of available values. | [optional] +**name** | **str** | The display name of the role | + +## Example + +```python +from sysdig_client.models.role_request_v1 import RoleRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of RoleRequestV1 from a JSON string +role_request_v1_instance = RoleRequestV1.from_json(json) +# print the JSON string representation of the object +print(RoleRequestV1.to_json()) + +# convert the object into a dict +role_request_v1_dict = role_request_v1_instance.to_dict() +# create an instance of RoleRequestV1 from a dict +role_request_v1_from_dict = RoleRequestV1.from_dict(role_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RoleResponseV1.md b/docs/reference/RoleResponseV1.md new file mode 100644 index 00000000..1592476b --- /dev/null +++ b/docs/reference/RoleResponseV1.md @@ -0,0 +1,34 @@ +# RoleResponseV1 + +Create role response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**description** | **str** | Describes the role | [optional] +**monitor_permissions** | **List[str]** | Set of Monitor permissions assigned to the role. Check GET /platform/v1/permissions to obtain the list of available values. | [optional] +**secure_permissions** | **List[str]** | Set of Secure permissions assigned to the role. Check GET /platform/v1/permissions to obtain the list of available values. | [optional] +**name** | **str** | The display name of the role | [optional] + +## Example + +```python +from sysdig_client.models.role_response_v1 import RoleResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of RoleResponseV1 from a JSON string +role_response_v1_instance = RoleResponseV1.from_json(json) +# print the JSON string representation of the object +print(RoleResponseV1.to_json()) + +# convert the object into a dict +role_response_v1_dict = role_response_v1_instance.to_dict() +# create an instance of RoleResponseV1 from a dict +role_response_v1_from_dict = RoleResponseV1.from_dict(role_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RolesApi.md b/docs/reference/RolesApi.md new file mode 100644 index 00000000..5ddc04d4 --- /dev/null +++ b/docs/reference/RolesApi.md @@ -0,0 +1,458 @@ +# sysdig_client.RolesApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_role_v1**](RolesApi.md#create_role_v1) | **POST** /platform/v1/roles | Create Role +[**delete_role_by_id_v1**](RolesApi.md#delete_role_by_id_v1) | **DELETE** /platform/v1/roles/{roleId} | Delete Role +[**get_role_by_id_v1**](RolesApi.md#get_role_by_id_v1) | **GET** /platform/v1/roles/{roleId} | Get Role +[**get_roles_v1**](RolesApi.md#get_roles_v1) | **GET** /platform/v1/roles | List Roles +[**update_role_by_id_v1**](RolesApi.md#update_role_by_id_v1) | **PUT** /platform/v1/roles/{roleId} | Update Role + + +# **create_role_v1** +> RoleResponseV1 create_role_v1(role_request_v1=role_request_v1) + +Create Role + +Create a new role.\ +\ +**Required permissions:** _roles.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.role_request_v1 import RoleRequestV1 +from sysdig_client.models.role_response_v1 import RoleResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.RolesApi(api_client) + role_request_v1 = sysdig_client.RoleRequestV1() # RoleRequestV1 | (optional) + + try: + # Create Role + api_response = api_instance.create_role_v1(role_request_v1=role_request_v1) + print("The response of RolesApi->create_role_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling RolesApi->create_role_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **role_request_v1** | [**RoleRequestV1**](RoleRequestV1.md)| | [optional] + +### Return type + +[**RoleResponseV1**](RoleResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Role created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_role_by_id_v1** +> delete_role_by_id_v1(role_id) + +Delete Role + +Delete a role by its ID.\ +\ +**Required permissions:** _roles.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.RolesApi(api_client) + role_id = 56 # int | The role id. + + try: + # Delete Role + api_instance.delete_role_by_id_v1(role_id) + except Exception as e: + print("Exception when calling RolesApi->delete_role_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **role_id** | **int**| The role id. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Role deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_role_by_id_v1** +> RoleResponseV1 get_role_by_id_v1(role_id) + +Get Role + +Return a role by its ID.\ +\ +**Required permissions:** _roles.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.role_response_v1 import RoleResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.RolesApi(api_client) + role_id = 56 # int | The role id. + + try: + # Get Role + api_response = api_instance.get_role_by_id_v1(role_id) + print("The response of RolesApi->get_role_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling RolesApi->get_role_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **role_id** | **int**| The role id. | + +### Return type + +[**RoleResponseV1**](RoleResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Role found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_roles_v1** +> GetRolesPaginatedResponseV1 get_roles_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + +List Roles + +Retrieve a paginated list of roles.\ +\ +**Required permissions:** _roles.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_roles_paginated_response_v1 import GetRolesPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.RolesApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + orderby = '' # str | The order by field separated by a colon for the direction (optional) (default to '') + filter = '' # str | The filter by field separated by a colon for the filter value (optional) (default to '') + + try: + # List Roles + api_response = api_instance.get_roles_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + print("The response of RolesApi->get_roles_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling RolesApi->get_roles_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **orderby** | **str**| The order by field separated by a colon for the direction | [optional] [default to ''] + **filter** | **str**| The filter by field separated by a colon for the filter value | [optional] [default to ''] + +### Return type + +[**GetRolesPaginatedResponseV1**](GetRolesPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The roles page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_role_by_id_v1** +> RoleResponseV1 update_role_by_id_v1(role_id, role_request_v1=role_request_v1) + +Update Role + +Update a role by its ID.\ +\ +**Required permissions:** _roles.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.role_request_v1 import RoleRequestV1 +from sysdig_client.models.role_response_v1 import RoleResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.RolesApi(api_client) + role_id = 56 # int | The role id. + role_request_v1 = sysdig_client.RoleRequestV1() # RoleRequestV1 | (optional) + + try: + # Update Role + api_response = api_instance.update_role_by_id_v1(role_id, role_request_v1=role_request_v1) + print("The response of RolesApi->update_role_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling RolesApi->update_role_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **role_id** | **int**| The role id. | + **role_request_v1** | [**RoleRequestV1**](RoleRequestV1.md)| | [optional] + +### Return type + +[**RoleResponseV1**](RoleResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Role updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/Rule.md b/docs/reference/Rule.md new file mode 100644 index 00000000..404e76ab --- /dev/null +++ b/docs/reference/Rule.md @@ -0,0 +1,35 @@ +# Rule + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**rule_id** | **str** | rule's id | [optional] +**rule_type** | **str** | rule type | +**evaluation_result** | **str** | result of rule evaluation | [optional] +**predicates** | [**List[Predicate]**](Predicate.md) | list of rule's predicates | [optional] +**failure_type** | **str** | rule failure type | +**description** | **str** | rule description | +**failures** | [**List[RuleFailuresInner]**](RuleFailuresInner.md) | list of rule failures | [optional] + +## Example + +```python +from sysdig_client.models.rule import Rule + +# TODO update the JSON string below +json = "{}" +# create an instance of Rule from a JSON string +rule_instance = Rule.from_json(json) +# print the JSON string representation of the object +print(Rule.to_json()) + +# convert the object into a dict +rule_dict = rule_instance.to_dict() +# create an instance of Rule from a dict +rule_from_dict = Rule.from_dict(rule_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RuleFailuresInner.md b/docs/reference/RuleFailuresInner.md new file mode 100644 index 00000000..fd451813 --- /dev/null +++ b/docs/reference/RuleFailuresInner.md @@ -0,0 +1,34 @@ +# RuleFailuresInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**description** | **str** | description of the failure | +**remediation** | **str** | image configuration failure remediation | +**arguments** | **object** | | +**package_ref** | **str** | reference to the affected package | [optional] +**vulnerability_ref** | **str** | reference to the vulnerability | [optional] +**risk_accept_refs** | **List[str]** | list of accepted risks for the failure | [optional] + +## Example + +```python +from sysdig_client.models.rule_failures_inner import RuleFailuresInner + +# TODO update the JSON string below +json = "{}" +# create an instance of RuleFailuresInner from a JSON string +rule_failures_inner_instance = RuleFailuresInner.from_json(json) +# print the JSON string representation of the object +print(RuleFailuresInner.to_json()) + +# convert the object into a dict +rule_failures_inner_dict = rule_failures_inner_instance.to_dict() +# create an instance of RuleFailuresInner from a dict +rule_failures_inner_from_dict = RuleFailuresInner.from_dict(rule_failures_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RulesResponseV1.md b/docs/reference/RulesResponseV1.md new file mode 100644 index 00000000..a5c6cfb7 --- /dev/null +++ b/docs/reference/RulesResponseV1.md @@ -0,0 +1,32 @@ +# RulesResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | Request status. | [optional] +**data** | [**RulesResponseV1Data**](RulesResponseV1Data.md) | | [optional] +**warnings** | **List[str]** | A set of warning messages attached to the response. | [optional] +**infos** | **List[str]** | A set of information messages attached to the response. | [optional] + +## Example + +```python +from sysdig_client.models.rules_response_v1 import RulesResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of RulesResponseV1 from a JSON string +rules_response_v1_instance = RulesResponseV1.from_json(json) +# print the JSON string representation of the object +print(RulesResponseV1.to_json()) + +# convert the object into a dict +rules_response_v1_dict = rules_response_v1_instance.to_dict() +# create an instance of RulesResponseV1 from a dict +rules_response_v1_from_dict = RulesResponseV1.from_dict(rules_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RulesResponseV1Data.md b/docs/reference/RulesResponseV1Data.md new file mode 100644 index 00000000..f1bbd144 --- /dev/null +++ b/docs/reference/RulesResponseV1Data.md @@ -0,0 +1,30 @@ +# RulesResponseV1Data + +Response payload containing rule groups. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**groups** | [**List[RulesResponseV1DataGroupsInner]**](RulesResponseV1DataGroupsInner.md) | List of rule groups. | [optional] + +## Example + +```python +from sysdig_client.models.rules_response_v1_data import RulesResponseV1Data + +# TODO update the JSON string below +json = "{}" +# create an instance of RulesResponseV1Data from a JSON string +rules_response_v1_data_instance = RulesResponseV1Data.from_json(json) +# print the JSON string representation of the object +print(RulesResponseV1Data.to_json()) + +# convert the object into a dict +rules_response_v1_data_dict = rules_response_v1_data_instance.to_dict() +# create an instance of RulesResponseV1Data from a dict +rules_response_v1_data_from_dict = RulesResponseV1Data.from_dict(rules_response_v1_data_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RulesResponseV1DataGroupsInner.md b/docs/reference/RulesResponseV1DataGroupsInner.md new file mode 100644 index 00000000..351f609e --- /dev/null +++ b/docs/reference/RulesResponseV1DataGroupsInner.md @@ -0,0 +1,31 @@ +# RulesResponseV1DataGroupsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | Name of the rule group. | +**interval** | **str** | Evaluation interval of the rule group. | +**rules** | [**List[RulesResponseV1DataGroupsInnerRulesInner]**](RulesResponseV1DataGroupsInnerRulesInner.md) | List of rules in the group. | + +## Example + +```python +from sysdig_client.models.rules_response_v1_data_groups_inner import RulesResponseV1DataGroupsInner + +# TODO update the JSON string below +json = "{}" +# create an instance of RulesResponseV1DataGroupsInner from a JSON string +rules_response_v1_data_groups_inner_instance = RulesResponseV1DataGroupsInner.from_json(json) +# print the JSON string representation of the object +print(RulesResponseV1DataGroupsInner.to_json()) + +# convert the object into a dict +rules_response_v1_data_groups_inner_dict = rules_response_v1_data_groups_inner_instance.to_dict() +# create an instance of RulesResponseV1DataGroupsInner from a dict +rules_response_v1_data_groups_inner_from_dict = RulesResponseV1DataGroupsInner.from_dict(rules_response_v1_data_groups_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RulesResponseV1DataGroupsInnerRulesInner.md b/docs/reference/RulesResponseV1DataGroupsInnerRulesInner.md new file mode 100644 index 00000000..8e535b17 --- /dev/null +++ b/docs/reference/RulesResponseV1DataGroupsInnerRulesInner.md @@ -0,0 +1,35 @@ +# RulesResponseV1DataGroupsInnerRulesInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | Type of rule (alerting or recording). | +**name** | **str** | Name of the rule. | +**query** | **str** | PromQL query associated with the rule. | +**duration** | **str** | Duration for which the rule must be active before triggering. | [optional] +**labels** | **Dict[str, str]** | Labels assigned to the rule. | [optional] +**annotations** | **Dict[str, str]** | Annotations providing additional information about the rule. | [optional] +**alerts** | [**List[RulesResponseV1DataGroupsInnerRulesInnerAlertsInner]**](RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.md) | List of active alerts for this rule (only for alerting rules). | [optional] + +## Example + +```python +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner import RulesResponseV1DataGroupsInnerRulesInner + +# TODO update the JSON string below +json = "{}" +# create an instance of RulesResponseV1DataGroupsInnerRulesInner from a JSON string +rules_response_v1_data_groups_inner_rules_inner_instance = RulesResponseV1DataGroupsInnerRulesInner.from_json(json) +# print the JSON string representation of the object +print(RulesResponseV1DataGroupsInnerRulesInner.to_json()) + +# convert the object into a dict +rules_response_v1_data_groups_inner_rules_inner_dict = rules_response_v1_data_groups_inner_rules_inner_instance.to_dict() +# create an instance of RulesResponseV1DataGroupsInnerRulesInner from a dict +rules_response_v1_data_groups_inner_rules_inner_from_dict = RulesResponseV1DataGroupsInnerRulesInner.from_dict(rules_response_v1_data_groups_inner_rules_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.md b/docs/reference/RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.md new file mode 100644 index 00000000..a3bd4d97 --- /dev/null +++ b/docs/reference/RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.md @@ -0,0 +1,31 @@ +# RulesResponseV1DataGroupsInnerRulesInnerAlertsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**state** | **str** | Current state of the alert. | +**active_at** | **datetime** | Timestamp when the alert became active. | +**value** | **str** | The numerical value that triggered the alert. | + +## Example + +```python +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner import RulesResponseV1DataGroupsInnerRulesInnerAlertsInner + +# TODO update the JSON string below +json = "{}" +# create an instance of RulesResponseV1DataGroupsInnerRulesInnerAlertsInner from a JSON string +rules_response_v1_data_groups_inner_rules_inner_alerts_inner_instance = RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.from_json(json) +# print the JSON string representation of the object +print(RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.to_json()) + +# convert the object into a dict +rules_response_v1_data_groups_inner_rules_inner_alerts_inner_dict = rules_response_v1_data_groups_inner_rules_inner_alerts_inner_instance.to_dict() +# create an instance of RulesResponseV1DataGroupsInnerRulesInnerAlertsInner from a dict +rules_response_v1_data_groups_inner_rules_inner_alerts_inner_from_dict = RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.from_dict(rules_response_v1_data_groups_inner_rules_inner_alerts_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RuntimeResult.md b/docs/reference/RuntimeResult.md new file mode 100644 index 00000000..1908281f --- /dev/null +++ b/docs/reference/RuntimeResult.md @@ -0,0 +1,38 @@ +# RuntimeResult + +Runtime result + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**scope** | **object** | Scope labels that define the asset | [optional] +**result_id** | **str** | Identifier of the scan result | [optional] +**resource_id** | **str** | Identifier of the scanned resource: it will be the image ID for container images or the host ID for hosts. | [optional] +**sbom_id** | **str** | Identifier of the sbom | [optional] +**main_asset_name** | **str** | Name of the scanned asset | [optional] +**running_vuln_total_by_severity** | [**VulnTotalBySeverity**](VulnTotalBySeverity.md) | | [optional] +**vuln_total_by_severity** | [**VulnTotalBySeverity**](VulnTotalBySeverity.md) | | [optional] +**policy_evaluation_result** | [**PolicyEvaluationResult**](PolicyEvaluationResult.md) | | [optional] +**is_risk_spotlight_enabled** | **bool** | Whether risk spotlight is enabled or not | [optional] + +## Example + +```python +from sysdig_client.models.runtime_result import RuntimeResult + +# TODO update the JSON string below +json = "{}" +# create an instance of RuntimeResult from a JSON string +runtime_result_instance = RuntimeResult.from_json(json) +# print the JSON string representation of the object +print(RuntimeResult.to_json()) + +# convert the object into a dict +runtime_result_dict = runtime_result_instance.to_dict() +# create an instance of RuntimeResult from a dict +runtime_result_from_dict = RuntimeResult.from_dict(runtime_result_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/RuntimeResultsResponse.md b/docs/reference/RuntimeResultsResponse.md new file mode 100644 index 00000000..31431d86 --- /dev/null +++ b/docs/reference/RuntimeResultsResponse.md @@ -0,0 +1,31 @@ +# RuntimeResultsResponse + +runtime results response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**page** | [**VulnerabilityManagementPage**](VulnerabilityManagementPage.md) | | [optional] +**data** | [**List[RuntimeResult]**](RuntimeResult.md) | | [optional] + +## Example + +```python +from sysdig_client.models.runtime_results_response import RuntimeResultsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of RuntimeResultsResponse from a JSON string +runtime_results_response_instance = RuntimeResultsResponse.from_json(json) +# print the JSON string representation of the object +print(RuntimeResultsResponse.to_json()) + +# convert the object into a dict +runtime_results_response_dict = runtime_results_response_instance.to_dict() +# create an instance of RuntimeResultsResponse from a dict +runtime_results_response_from_dict = RuntimeResultsResponse.from_dict(runtime_results_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SBOMApi.md b/docs/reference/SBOMApi.md new file mode 100644 index 00000000..f72915e4 --- /dev/null +++ b/docs/reference/SBOMApi.md @@ -0,0 +1,98 @@ +# sysdig_client.SBOMApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_sbomv1beta1**](SBOMApi.md#get_sbomv1beta1) | **GET** /secure/vulnerability/v1beta1/sboms | Get SBOM + + +# **get_sbomv1beta1** +> SbomResultResponse get_sbomv1beta1(asset_id=asset_id, asset_type=asset_type, bom_identifier=bom_identifier) + +Get SBOM + +Retrieve a SBOM (Software Bill Of Material) in CycloneDX format. + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.sbom_result_response import SbomResultResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SBOMApi(api_client) + asset_id = 'sha256:6147d53c2a3a4d99b8343665430e5d420eb7ee65cb89995b6bea1af2595be53a' # str | The ID of the asset for which we want to retrieve the SBOM. It's the imageId for container-image and the hostId for hosts Provide this with assetType if not providing bomIdentifier (optional) + asset_type = 'asset_type_example' # str | The type of the asset for which we want to retrieve the SBOM. Provide this with assetId if not providing bomIdentifier (optional) + bom_identifier = 'urn:uuid:6536eeee-b8f2-4865-b996-adc991c28202' # str | The ID of a single SBOM. Either provide this or both assetId and assetType (optional) + + try: + # Get SBOM + api_response = api_instance.get_sbomv1beta1(asset_id=asset_id, asset_type=asset_type, bom_identifier=bom_identifier) + print("The response of SBOMApi->get_sbomv1beta1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SBOMApi->get_sbomv1beta1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **asset_id** | **str**| The ID of the asset for which we want to retrieve the SBOM. It's the imageId for container-image and the hostId for hosts Provide this with assetType if not providing bomIdentifier | [optional] + **asset_type** | **str**| The type of the asset for which we want to retrieve the SBOM. Provide this with assetId if not providing bomIdentifier | [optional] + **bom_identifier** | **str**| The ID of a single SBOM. Either provide this or both assetId and assetType | [optional] + +### Return type + +[**SbomResultResponse**](SbomResultResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A successful response, contains the requested SBOM. | * Content-Type -
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**406** | Server can't produce a response in the content-type requested by the client | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/SSOSettingsApi.md b/docs/reference/SSOSettingsApi.md new file mode 100644 index 00000000..f53ee41c --- /dev/null +++ b/docs/reference/SSOSettingsApi.md @@ -0,0 +1,622 @@ +# sysdig_client.SSOSettingsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_sso_settings_v1**](SSOSettingsApi.md#create_sso_settings_v1) | **POST** /platform/v1/sso-settings | Create SSO Settings +[**delete_sso_settings_by_id_v1**](SSOSettingsApi.md#delete_sso_settings_by_id_v1) | **DELETE** /platform/v1/sso-settings/{ssoSettingsId} | Delete SSO Settings +[**get_globa_sso_settings_v1**](SSOSettingsApi.md#get_globa_sso_settings_v1) | **GET** /platform/v1/global-sso-settings/{ssoProductId} | Get Global SSO Settings +[**get_sso_settings_by_id_v1**](SSOSettingsApi.md#get_sso_settings_by_id_v1) | **GET** /platform/v1/sso-settings/{ssoSettingsId} | Get SSO Settings +[**get_sso_settings_v1**](SSOSettingsApi.md#get_sso_settings_v1) | **GET** /platform/v1/sso-settings | List SSO Settings +[**update_global_sso_settings_v1**](SSOSettingsApi.md#update_global_sso_settings_v1) | **PUT** /platform/v1/global-sso-settings/{ssoProductId} | Update Global SSO Settings +[**update_sso_settings_by_id_v1**](SSOSettingsApi.md#update_sso_settings_by_id_v1) | **PUT** /platform/v1/sso-settings/{ssoSettingsId} | Update SSO Settings + + +# **create_sso_settings_v1** +> SsoSettingsResponseV1 create_sso_settings_v1(create_sso_settings_request_v1=create_sso_settings_request_v1) + +Create SSO Settings + +Create a new SSO settings.\ +\ +**Required permissions:** _sso-setting.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_sso_settings_request_v1 import CreateSsoSettingsRequestV1 +from sysdig_client.models.sso_settings_response_v1 import SsoSettingsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SSOSettingsApi(api_client) + create_sso_settings_request_v1 = sysdig_client.CreateSsoSettingsRequestV1() # CreateSsoSettingsRequestV1 | The payload required to create SSO settings. (optional) + + try: + # Create SSO Settings + api_response = api_instance.create_sso_settings_v1(create_sso_settings_request_v1=create_sso_settings_request_v1) + print("The response of SSOSettingsApi->create_sso_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SSOSettingsApi->create_sso_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_sso_settings_request_v1** | [**CreateSsoSettingsRequestV1**](CreateSsoSettingsRequestV1.md)| The payload required to create SSO settings. | [optional] + +### Return type + +[**SsoSettingsResponseV1**](SsoSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | SSO settings created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_sso_settings_by_id_v1** +> delete_sso_settings_by_id_v1(sso_settings_id) + +Delete SSO Settings + +Delete SSO settings by its ID.\ +\ +**Required permissions:** _sso-settings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SSOSettingsApi(api_client) + sso_settings_id = 56 # int | SSO settings ID. + + try: + # Delete SSO Settings + api_instance.delete_sso_settings_by_id_v1(sso_settings_id) + except Exception as e: + print("Exception when calling SSOSettingsApi->delete_sso_settings_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **sso_settings_id** | **int**| SSO settings ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | SSO settings deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_globa_sso_settings_v1** +> GlobalSsoSettingsResponseV1 get_globa_sso_settings_v1(sso_product_id) + +Get Global SSO Settings + +Get Global SSO Settings.\ +\ +**Required permissions:** _sso-settings.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.global_sso_settings_response_v1 import GlobalSsoSettingsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SSOSettingsApi(api_client) + sso_product_id = 'secure' # str | Sysdig Product. + + try: + # Get Global SSO Settings + api_response = api_instance.get_globa_sso_settings_v1(sso_product_id) + print("The response of SSOSettingsApi->get_globa_sso_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SSOSettingsApi->get_globa_sso_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **sso_product_id** | **str**| Sysdig Product. | + +### Return type + +[**GlobalSsoSettingsResponseV1**](GlobalSsoSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Global SSO Settings. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_sso_settings_by_id_v1** +> SsoSettingsResponseV1 get_sso_settings_by_id_v1(sso_settings_id) + +Get SSO Settings + +Return SSO settings by ID.\ +\ +**Required permissions:** _sso-settings.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.sso_settings_response_v1 import SsoSettingsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SSOSettingsApi(api_client) + sso_settings_id = 56 # int | SSO settings ID. + + try: + # Get SSO Settings + api_response = api_instance.get_sso_settings_by_id_v1(sso_settings_id) + print("The response of SSOSettingsApi->get_sso_settings_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SSOSettingsApi->get_sso_settings_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **sso_settings_id** | **int**| SSO settings ID. | + +### Return type + +[**SsoSettingsResponseV1**](SsoSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | SSO settings found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_sso_settings_v1** +> AllSsoSettingsResponseV1 get_sso_settings_v1(filter=filter) + +List SSO Settings + +Retrieve a paginated list of SSO settings.\ +\ +**Required permissions:** _sso-settings.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.all_sso_settings_response_v1 import AllSsoSettingsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SSOSettingsApi(api_client) + filter = '' # str | The filter by field separated by a colon for the filter value (optional) (default to '') + + try: + # List SSO Settings + api_response = api_instance.get_sso_settings_v1(filter=filter) + print("The response of SSOSettingsApi->get_sso_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SSOSettingsApi->get_sso_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **filter** | **str**| The filter by field separated by a colon for the filter value | [optional] [default to ''] + +### Return type + +[**AllSsoSettingsResponseV1**](AllSsoSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List all SSO settings response. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_global_sso_settings_v1** +> GlobalSsoSettingsResponseV1 update_global_sso_settings_v1(sso_product_id, global_sso_settings_request_v1) + +Update Global SSO Settings + +Update Global SSO Settings.\ +\ +**Required permissions:** _sso-setting.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.global_sso_settings_request_v1 import GlobalSsoSettingsRequestV1 +from sysdig_client.models.global_sso_settings_response_v1 import GlobalSsoSettingsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SSOSettingsApi(api_client) + sso_product_id = 'secure' # str | Sysdig Product. + global_sso_settings_request_v1 = sysdig_client.GlobalSsoSettingsRequestV1() # GlobalSsoSettingsRequestV1 | The payload required to update the Global SSO Settigs. + + try: + # Update Global SSO Settings + api_response = api_instance.update_global_sso_settings_v1(sso_product_id, global_sso_settings_request_v1) + print("The response of SSOSettingsApi->update_global_sso_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SSOSettingsApi->update_global_sso_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **sso_product_id** | **str**| Sysdig Product. | + **global_sso_settings_request_v1** | [**GlobalSsoSettingsRequestV1**](GlobalSsoSettingsRequestV1.md)| The payload required to update the Global SSO Settigs. | + +### Return type + +[**GlobalSsoSettingsResponseV1**](GlobalSsoSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Global SSO Settings updated successfully. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_sso_settings_by_id_v1** +> SsoSettingsResponseV1 update_sso_settings_by_id_v1(sso_settings_id, update_sso_settings_request_v1=update_sso_settings_request_v1) + +Update SSO Settings + +Update SSO settings by its ID.\ +\ +**Required permissions:** _sso-settings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.sso_settings_response_v1 import SsoSettingsResponseV1 +from sysdig_client.models.update_sso_settings_request_v1 import UpdateSsoSettingsRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SSOSettingsApi(api_client) + sso_settings_id = 56 # int | SSO settings ID. + update_sso_settings_request_v1 = sysdig_client.UpdateSsoSettingsRequestV1() # UpdateSsoSettingsRequestV1 | (optional) + + try: + # Update SSO Settings + api_response = api_instance.update_sso_settings_by_id_v1(sso_settings_id, update_sso_settings_request_v1=update_sso_settings_request_v1) + print("The response of SSOSettingsApi->update_sso_settings_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SSOSettingsApi->update_sso_settings_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **sso_settings_id** | **int**| SSO settings ID. | + **update_sso_settings_request_v1** | [**UpdateSsoSettingsRequestV1**](UpdateSsoSettingsRequestV1.md)| | [optional] + +### Return type + +[**SsoSettingsResponseV1**](SsoSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | SSO setting updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/SamlBaseV1.md b/docs/reference/SamlBaseV1.md new file mode 100644 index 00000000..0911d03e --- /dev/null +++ b/docs/reference/SamlBaseV1.md @@ -0,0 +1,35 @@ +# SamlBaseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metadata_url** | **str** | The metadata URL of the SAML provider. **Mutually exclusive with metadata* | [optional] +**metadata_xml** | **str** | The metadata XML of the SAML provider. **Mutually exclusive with metadataUrl* | [optional] +**email_parameter** | **str** | The email parameter of the SAML provider. | [optional] +**is_signature_validation_enabled** | **bool** | Flag that indicates if the signature validation is enabled. | [optional] [default to True] +**is_signed_assertion_enabled** | **bool** | Flag that indicates if the signed assertion is enabled. | [optional] [default to True] +**is_destination_verification_enabled** | **bool** | Flag that indicates if the destination verification is enabled. | [optional] +**is_encryption_support_enabled** | **bool** | Flag that indicates if the encryption support is enabled. | [optional] + +## Example + +```python +from sysdig_client.models.saml_base_v1 import SamlBaseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SamlBaseV1 from a JSON string +saml_base_v1_instance = SamlBaseV1.from_json(json) +# print the JSON string representation of the object +print(SamlBaseV1.to_json()) + +# convert the object into a dict +saml_base_v1_dict = saml_base_v1_instance.to_dict() +# create an instance of SamlBaseV1 from a dict +saml_base_v1_from_dict = SamlBaseV1.from_dict(saml_base_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SamlCreateRequestV1.md b/docs/reference/SamlCreateRequestV1.md new file mode 100644 index 00000000..bfa80aad --- /dev/null +++ b/docs/reference/SamlCreateRequestV1.md @@ -0,0 +1,35 @@ +# SamlCreateRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metadata_url** | **str** | The metadata URL of the SAML provider. **Mutually exclusive with metadata* | [optional] +**metadata_xml** | **str** | The metadata XML of the SAML provider. **Mutually exclusive with metadataUrl* | [optional] +**email_parameter** | **str** | The email parameter of the SAML provider. | +**is_signature_validation_enabled** | **bool** | Flag that indicates if the signature validation is enabled. | [optional] [default to True] +**is_signed_assertion_enabled** | **bool** | Flag that indicates if the signed assertion is enabled. | [optional] [default to True] +**is_destination_verification_enabled** | **bool** | Flag that indicates if the destination verification is enabled. | [optional] +**is_encryption_support_enabled** | **bool** | Flag that indicates if the encryption support is enabled. | [optional] + +## Example + +```python +from sysdig_client.models.saml_create_request_v1 import SamlCreateRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SamlCreateRequestV1 from a JSON string +saml_create_request_v1_instance = SamlCreateRequestV1.from_json(json) +# print the JSON string representation of the object +print(SamlCreateRequestV1.to_json()) + +# convert the object into a dict +saml_create_request_v1_dict = saml_create_request_v1_instance.to_dict() +# create an instance of SamlCreateRequestV1 from a dict +saml_create_request_v1_from_dict = SamlCreateRequestV1.from_dict(saml_create_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SamlResponseV1.md b/docs/reference/SamlResponseV1.md new file mode 100644 index 00000000..97a44f05 --- /dev/null +++ b/docs/reference/SamlResponseV1.md @@ -0,0 +1,35 @@ +# SamlResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metadata_url** | **str** | The metadata URL of the SAML provider. **Mutually exclusive with metadata* | [optional] +**metadata_xml** | **str** | The metadata XML of the SAML provider. **Mutually exclusive with metadataUrl* | [optional] +**email_parameter** | **str** | The email parameter of the SAML provider. | [optional] +**is_signature_validation_enabled** | **bool** | Flag that indicates if the signature validation is enabled. | [optional] [default to True] +**is_signed_assertion_enabled** | **bool** | Flag that indicates if the signed assertion is enabled. | [optional] [default to True] +**is_destination_verification_enabled** | **bool** | Flag that indicates if the destination verification is enabled. | [optional] +**is_encryption_support_enabled** | **bool** | Flag that indicates if the encryption support is enabled. | [optional] + +## Example + +```python +from sysdig_client.models.saml_response_v1 import SamlResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SamlResponseV1 from a JSON string +saml_response_v1_instance = SamlResponseV1.from_json(json) +# print the JSON string representation of the object +print(SamlResponseV1.to_json()) + +# convert the object into a dict +saml_response_v1_dict = saml_response_v1_instance.to_dict() +# create an instance of SamlResponseV1 from a dict +saml_response_v1_from_dict = SamlResponseV1.from_dict(saml_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SamlUpdateRequestV1.md b/docs/reference/SamlUpdateRequestV1.md new file mode 100644 index 00000000..10ebebc2 --- /dev/null +++ b/docs/reference/SamlUpdateRequestV1.md @@ -0,0 +1,35 @@ +# SamlUpdateRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metadata_url** | **str** | The metadata URL of the SAML provider. **Mutually exclusive with metadata* | [optional] +**metadata_xml** | **str** | The metadata XML of the SAML provider. **Mutually exclusive with metadataUrl* | [optional] +**email_parameter** | **str** | The email parameter of the SAML provider. | +**is_signature_validation_enabled** | **bool** | Flag that indicates if the signature validation is enabled. | [default to True] +**is_signed_assertion_enabled** | **bool** | Flag that indicates if the signed assertion is enabled. | [default to True] +**is_destination_verification_enabled** | **bool** | Flag that indicates if the destination verification is enabled. | +**is_encryption_support_enabled** | **bool** | Flag that indicates if the encryption support is enabled. | + +## Example + +```python +from sysdig_client.models.saml_update_request_v1 import SamlUpdateRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SamlUpdateRequestV1 from a JSON string +saml_update_request_v1_instance = SamlUpdateRequestV1.from_json(json) +# print the JSON string representation of the object +print(SamlUpdateRequestV1.to_json()) + +# convert the object into a dict +saml_update_request_v1_dict = saml_update_request_v1_instance.to_dict() +# create an instance of SamlUpdateRequestV1 from a dict +saml_update_request_v1_from_dict = SamlUpdateRequestV1.from_dict(saml_update_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SaveCaptureStorageConfigurationRequestV1.md b/docs/reference/SaveCaptureStorageConfigurationRequestV1.md new file mode 100644 index 00000000..bf9e2aa8 --- /dev/null +++ b/docs/reference/SaveCaptureStorageConfigurationRequestV1.md @@ -0,0 +1,32 @@ +# SaveCaptureStorageConfigurationRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_enabled** | **bool** | Specifies if capture storage is enabled. | +**is_encryption_with_provided_key_enabled** | **bool** | Specifies if server-side encryption with provided encryption key (SSE-C) is enabled. | [optional] [default to False] +**encryption_key** | **str** | AES-256 encryption key to be used for server-side encryption (base64 encoded). | [optional] +**buckets** | [**List[BucketConfigurationV1]**](BucketConfigurationV1.md) | The list of buckets where the captures are stored. Currently only one bucket is supported. | [optional] + +## Example + +```python +from sysdig_client.models.save_capture_storage_configuration_request_v1 import SaveCaptureStorageConfigurationRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SaveCaptureStorageConfigurationRequestV1 from a JSON string +save_capture_storage_configuration_request_v1_instance = SaveCaptureStorageConfigurationRequestV1.from_json(json) +# print the JSON string representation of the object +print(SaveCaptureStorageConfigurationRequestV1.to_json()) + +# convert the object into a dict +save_capture_storage_configuration_request_v1_dict = save_capture_storage_configuration_request_v1_instance.to_dict() +# create an instance of SaveCaptureStorageConfigurationRequestV1 from a dict +save_capture_storage_configuration_request_v1_from_dict = SaveCaptureStorageConfigurationRequestV1.from_dict(save_capture_storage_configuration_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SaveTeamUserRequestV1.md b/docs/reference/SaveTeamUserRequestV1.md new file mode 100644 index 00000000..4cccfb77 --- /dev/null +++ b/docs/reference/SaveTeamUserRequestV1.md @@ -0,0 +1,30 @@ +# SaveTeamUserRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**standard_team_role** | [**TeamRoleV1**](TeamRoleV1.md) | The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**.\\ \\ *ROLE_TEAM_SERVICE_MANAGER is only supported in Secure.* | [optional] +**custom_team_role_id** | **int** | The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. | [optional] + +## Example + +```python +from sysdig_client.models.save_team_user_request_v1 import SaveTeamUserRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SaveTeamUserRequestV1 from a JSON string +save_team_user_request_v1_instance = SaveTeamUserRequestV1.from_json(json) +# print the JSON string representation of the object +print(SaveTeamUserRequestV1.to_json()) + +# convert the object into a dict +save_team_user_request_v1_dict = save_team_user_request_v1_instance.to_dict() +# create an instance of SaveTeamUserRequestV1 from a dict +save_team_user_request_v1_from_dict = SaveTeamUserRequestV1.from_dict(save_team_user_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SbomComponent.md b/docs/reference/SbomComponent.md new file mode 100644 index 00000000..9b51903b --- /dev/null +++ b/docs/reference/SbomComponent.md @@ -0,0 +1,34 @@ +# SbomComponent + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | Specifies the type of component. For software components, classify as application if no more specific appropriate classification is available or cannot be determined for the component. Types include: * __application__ = A software application. Refer to [https://en.wikipedia.org/wiki/Application_software](https://en.wikipedia.org/wiki/Application_software) for information about applications. * __framework__ = A software framework. Refer to [https://en.wikipedia.org/wiki/Software_framework](https://en.wikipedia.org/wiki/Software_framework) for information on how frameworks vary slightly from libraries. * __library__ = A software library. Refer to [https://en.wikipedia.org/wiki/Library_(computing)](https://en.wikipedia.org/wiki/Library_(computing)) for information about libraries. All third-party and open source reusable components will likely be a library. If the library also has key features of a framework, then it should be classified as a framework. If not, or is unknown, then specifying library is RECOMMENDED. * __container__ = A packaging and/or runtime format, not specific to any particular technology, which isolates software inside the container from software outside of a container through virtualization technology. Refer to [https://en.wikipedia.org/wiki/OS-level_virtualization](https://en.wikipedia.org/wiki/OS-level_virtualization) * __platform__ = A runtime environment which interprets or executes software. This may include runtimes such as those that execute bytecode or low-code/no-code application platforms. * __operating-system__ = A software operating system without regard to deployment model (i.e. installed on physical hardware, virtual machine, image, etc) Refer to [https://en.wikipedia.org/wiki/Operating_system](https://en.wikipedia.org/wiki/Operating_system) * __device__ = A hardware device such as a processor, or chip-set. A hardware device containing firmware SHOULD include a component for the physical hardware itself, and another component of type 'firmware' or 'operating-system' (whichever is relevant), describing information about the software running on the device. See also the list of [known device properties](https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/device.md). * __device-driver__ = A special type of software that operates or controls a particular type of device. Refer to [https://en.wikipedia.org/wiki/Device_driver](https://en.wikipedia.org/wiki/Device_driver) * __firmware__ = A special type of software that provides low-level control over a devices hardware. Refer to [https://en.wikipedia.org/wiki/Firmware](https://en.wikipedia.org/wiki/Firmware) * __file__ = A computer file. Refer to [https://en.wikipedia.org/wiki/Computer_file](https://en.wikipedia.org/wiki/Computer_file) for information about files. * __machine-learning-model__ = A model based on training data that can make predictions or decisions without being explicitly programmed to do so. * __data__ = A collection of discrete values that convey information. | +**name** | **str** | The name of the component. This will often be a shortened, single name of the component. Examples: commons-lang3 and jquery | +**bom_ref** | **str** | An optional identifier which can be used to reference the component elsewhere in the BOM. Every bom-ref MUST be unique within the BOM. | [optional] +**version** | **str** | The component version. The version should ideally comply with semantic versioning but is not enforced. | [optional] +**group** | **str** | The grouping name or identifier. This will often be a shortened, single name of the company or project that produced the component, or the source package or domain name. Whitespace and special characters should be avoided. Examples include: apache, org.apache.commons, and apache.org. | [optional] +**purl** | **str** | Specifies the package-url (purl). The purl, if specified, MUST be valid and conform to the specification defined at: [https://github.com/package-url/purl-spec](https://github.com/package-url/purl-spec) | [optional] + +## Example + +```python +from sysdig_client.models.sbom_component import SbomComponent + +# TODO update the JSON string below +json = "{}" +# create an instance of SbomComponent from a JSON string +sbom_component_instance = SbomComponent.from_json(json) +# print the JSON string representation of the object +print(SbomComponent.to_json()) + +# convert the object into a dict +sbom_component_dict = sbom_component_instance.to_dict() +# create an instance of SbomComponent from a dict +sbom_component_from_dict = SbomComponent.from_dict(sbom_component_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SbomResultResponse.md b/docs/reference/SbomResultResponse.md new file mode 100644 index 00000000..2ca4d3a4 --- /dev/null +++ b/docs/reference/SbomResultResponse.md @@ -0,0 +1,37 @@ +# SbomResultResponse + +SBOM of the requested asset + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**bom_format** | **str** | Specifies the format of the BOM. This helps to identify the file as CycloneDX since BOMs do not have a filename convention nor does JSON schema support namespaces. This value MUST be \"CycloneDX\". | +**spec_version** | **str** | The version of the CycloneDX specification a BOM conforms to (starting at version 1.2). | +**serial_number** | **str** | Every BOM generated SHOULD have a unique serial number, even if the contents of the BOM have not changed over time. If specified, the serial number MUST conform to RFC-4122. Use of serial numbers are RECOMMENDED. | [optional] +**version** | **int** | Whenever an existing BOM is modified, either manually or through automated processes, the version of the BOM SHOULD be incremented by 1. When a system is presented with multiple BOMs with identical serial numbers, the system SHOULD use the most recent version of the BOM. The default version is '1'. | [optional] [default to 1] +**metadata** | [**BOMMetadata**](BOMMetadata.md) | | [optional] +**components** | [**List[SbomComponent]**](SbomComponent.md) | A list of software and hardware components. | [optional] +**dependencies** | [**List[Dependency]**](Dependency.md) | Provides the ability to document dependency relationships. | [optional] +**compositions** | [**List[CompositionsInner]**](CompositionsInner.md) | Compositions describe constituent parts (including components, services, and dependency relationships) and their completeness. The completeness of vulnerabilities expressed in a BOM may also be described. | [optional] + +## Example + +```python +from sysdig_client.models.sbom_result_response import SbomResultResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of SbomResultResponse from a JSON string +sbom_result_response_instance = SbomResultResponse.from_json(json) +# print the JSON string representation of the object +print(SbomResultResponse.to_json()) + +# convert the object into a dict +sbom_result_response_dict = sbom_result_response_instance.to_dict() +# create an instance of SbomResultResponse from a dict +sbom_result_response_from_dict = SbomResultResponse.from_dict(sbom_result_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ScanResultResponse.md b/docs/reference/ScanResultResponse.md new file mode 100644 index 00000000..b0699807 --- /dev/null +++ b/docs/reference/ScanResultResponse.md @@ -0,0 +1,38 @@ +# ScanResultResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**asset_type** | **str** | scan result asset type | +**stage** | **str** | scan result stage | +**metadata** | [**ScanResultResponseMetadata**](ScanResultResponseMetadata.md) | | +**packages** | [**Dict[str, Package]**](Package.md) | | +**vulnerabilities** | [**Dict[str, Vulnerability]**](Vulnerability.md) | | [optional] +**layers** | [**Dict[str, Layer]**](Layer.md) | | [optional] +**base_images** | [**Dict[str, BaseImage]**](BaseImage.md) | | [optional] +**policies** | [**Policies**](Policies.md) | | [optional] +**risk_accepts** | [**Dict[str, RiskAcceptanceDefinition]**](RiskAcceptanceDefinition.md) | | [optional] +**producer** | [**Producer**](Producer.md) | | [optional] + +## Example + +```python +from sysdig_client.models.scan_result_response import ScanResultResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ScanResultResponse from a JSON string +scan_result_response_instance = ScanResultResponse.from_json(json) +# print the JSON string representation of the object +print(ScanResultResponse.to_json()) + +# convert the object into a dict +scan_result_response_dict = scan_result_response_instance.to_dict() +# create an instance of ScanResultResponse from a dict +scan_result_response_from_dict = ScanResultResponse.from_dict(scan_result_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ScanResultResponseMetadata.md b/docs/reference/ScanResultResponseMetadata.md new file mode 100644 index 00000000..0ba6f6c8 --- /dev/null +++ b/docs/reference/ScanResultResponseMetadata.md @@ -0,0 +1,41 @@ +# ScanResultResponseMetadata + +metadata of the scan result + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**pull_string** | **str** | image pull string | +**image_id** | **str** | image id | +**digest** | **str** | image digest | [optional] +**base_os** | **str** | image base os | +**size** | **int** | image size in bytes | +**os** | **str** | host os | +**architecture** | **str** | host architecture | [optional] +**labels** | **object** | image labels | [optional] +**author** | **str** | image author | [optional] +**created_at** | **str** | datetime of creation | +**host_id** | **str** | host id | +**host_name** | **str** | host name | + +## Example + +```python +from sysdig_client.models.scan_result_response_metadata import ScanResultResponseMetadata + +# TODO update the JSON string below +json = "{}" +# create an instance of ScanResultResponseMetadata from a JSON string +scan_result_response_metadata_instance = ScanResultResponseMetadata.from_json(json) +# print the JSON string representation of the object +print(ScanResultResponseMetadata.to_json()) + +# convert the object into a dict +scan_result_response_metadata_dict = scan_result_response_metadata_instance.to_dict() +# create an instance of ScanResultResponseMetadata from a dict +scan_result_response_metadata_from_dict = ScanResultResponseMetadata.from_dict(scan_result_response_metadata_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ScheduleResponse.md b/docs/reference/ScheduleResponse.md new file mode 100644 index 00000000..d6f57c56 --- /dev/null +++ b/docs/reference/ScheduleResponse.md @@ -0,0 +1,55 @@ +# ScheduleResponse + +Schema for a scheduled report + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Unique identifier for the schedule | +**user_id** | **int** | ID of the user who created the schedule | +**team_id** | **int** | ID of the team associated with the schedule | +**customer_id** | **int** | ID of the customer associated with the schedule | +**name** | **str** | Name of the schedule | [optional] +**description** | **str** | Description of the schedule | [optional] +**report_id** | **int** | ID of the report | +**report_name** | **str** | Name of the report | [optional] +**is_report_template** | **bool** | Indicates if the report is a template | +**report_format** | **str** | Format of the report | +**zones** | **List[int]** | List of zone IDs | +**policies** | **List[int]** | List of policy IDs | [optional] +**timezone** | **str** | Timezone for the schedule | [optional] +**schedule** | **str** | Cron expression for the schedule | +**enabled** | **bool** | Indicates if the schedule is enabled | +**notification_channels** | [**List[NotificationChannel]**](NotificationChannel.md) | List of notification channels | [optional] +**iac_task_id** | **int** | ID of the IaC task | [optional] +**password_enabled** | **bool** | Indicates if password protection is enabled | [optional] +**compression** | **str** | Compression format | [optional] +**created_by** | **str** | Email of the user who created the schedule | +**updated_by** | **str** | Email of the user who last updated the schedule | [optional] +**created_on** | **datetime** | Timestamp when the schedule was created | +**modified_on** | **datetime** | Timestamp when the schedule was last modified | [optional] +**last_scheduled_on** | **datetime** | Timestamp when the schedule was last run | [optional] +**last_started_on** | **datetime** | Timestamp when the schedule was last started | [optional] +**last_completed_on** | **datetime** | Timestamp when the schedule was last completed | [optional] + +## Example + +```python +from sysdig_client.models.schedule_response import ScheduleResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ScheduleResponse from a JSON string +schedule_response_instance = ScheduleResponse.from_json(json) +# print the JSON string representation of the object +print(ScheduleResponse.to_json()) + +# convert the object into a dict +schedule_response_dict = schedule_response_instance.to_dict() +# create an instance of ScheduleResponse from a dict +schedule_response_from_dict = ScheduleResponse.from_dict(schedule_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ScopeTypeV1.md b/docs/reference/ScopeTypeV1.md new file mode 100644 index 00000000..56a2b0b5 --- /dev/null +++ b/docs/reference/ScopeTypeV1.md @@ -0,0 +1,18 @@ +# ScopeTypeV1 + + +## Enum + +* `AGENT` (value: `'AGENT'`) + +* `AWS_CLOUD_WATCH` (value: `'AWS_CLOUD_WATCH'`) + +* `HOST_CONTAINER` (value: `'HOST_CONTAINER'`) + +* `IBM_PLATFORM_METRICS` (value: `'IBM_PLATFORM_METRICS'`) + +* `PROMETHEUS_REMOTE_WRITE` (value: `'PROMETHEUS_REMOTE_WRITE'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ScopeV1.md b/docs/reference/ScopeV1.md new file mode 100644 index 00000000..7beba440 --- /dev/null +++ b/docs/reference/ScopeV1.md @@ -0,0 +1,30 @@ +# ScopeV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**ScopeTypeV1**](ScopeTypeV1.md) | | +**expression** | **str** | | + +## Example + +```python +from sysdig_client.models.scope_v1 import ScopeV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of ScopeV1 from a JSON string +scope_v1_instance = ScopeV1.from_json(json) +# print the JSON string representation of the object +print(ScopeV1.to_json()) + +# convert the object into a dict +scope_v1_dict = scope_v1_instance.to_dict() +# create an instance of ScopeV1 from a dict +scope_v1_from_dict = ScopeV1.from_dict(scope_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SecureEventsApi.md b/docs/reference/SecureEventsApi.md new file mode 100644 index 00000000..108cc19e --- /dev/null +++ b/docs/reference/SecureEventsApi.md @@ -0,0 +1,277 @@ +# sysdig_client.SecureEventsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_event_v1**](SecureEventsApi.md#get_event_v1) | **GET** /secure/events/v1/events/{eventId} | Get event +[**get_events_supported_filters_v1**](SecureEventsApi.md#get_events_supported_filters_v1) | **GET** /secure/events/v1/supported-filters | Get available filters +[**get_events_v1**](SecureEventsApi.md#get_events_v1) | **GET** /secure/events/v1/events | List events + + +# **get_event_v1** +> Event get_event_v1(event_id) + +Get event + +Retrieves an event given its id. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.event import Event +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SecureEventsApi(api_client) + event_id = '179854fbe16a1279f2ebeb558f1ebe99' # str | The event id. + + try: + # Get event + api_response = api_instance.get_event_v1(event_id) + print("The response of SecureEventsApi->get_event_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SecureEventsApi->get_event_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **event_id** | **str**| The event id. | + +### Return type + +[**Event**](Event.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The secure event. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Bad request | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_events_supported_filters_v1** +> SupportedFiltersResponse get_events_supported_filters_v1() + +Get available filters + +Events can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.supported_filters_response import SupportedFiltersResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SecureEventsApi(api_client) + + try: + # Get available filters + api_response = api_instance.get_events_supported_filters_v1() + print("The response of SecureEventsApi->get_events_supported_filters_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SecureEventsApi->get_events_supported_filters_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**SupportedFiltersResponse**](SupportedFiltersResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of supported attributes for filtering events. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Bad request | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_events_v1** +> ListEventsResponse get_events_v1(var_from=var_from, to=to, cursor=cursor, zones=zones, filter=filter, limit=limit) + +List events + +Retrieves the list of events matching the expressed search criteria. +The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. +The time criteria is required and can be specified in two different ways: +- Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. +- Using a `cursor` the events returned will be in the before, after or around the event, depending on the event the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. +The event content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_events_response import ListEventsResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SecureEventsApi(api_client) + var_from = 56 # int | (optional) + to = 56 # int | (optional) + cursor = 'cursor_example' # str | (optional) + zones = [56] # List[int] | (optional) + filter = 'filter_example' # str | (optional) + limit = 25 # int | (optional) (default to 25) + + try: + # List events + api_response = api_instance.get_events_v1(var_from=var_from, to=to, cursor=cursor, zones=zones, filter=filter, limit=limit) + print("The response of SecureEventsApi->get_events_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SecureEventsApi->get_events_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **var_from** | **int**| | [optional] + **to** | **int**| | [optional] + **cursor** | **str**| | [optional] + **zones** | [**List[int]**](int.md)| | [optional] + **filter** | **str**| | [optional] + **limit** | **int**| | [optional] [default to 25] + +### Return type + +[**ListEventsResponse**](ListEventsResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of events. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Bad request | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/SequenceInner.md b/docs/reference/SequenceInner.md new file mode 100644 index 00000000..67193e08 --- /dev/null +++ b/docs/reference/SequenceInner.md @@ -0,0 +1,36 @@ +# SequenceInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**event_id** | **str** | The unique identifier of the log event. | +**event_name** | **str** | The name of the event. | +**event_time** | **datetime** | The time when the event occurred. | +**ingestion_id** | **str** | The unique identifier of the ingestion. | +**region** | **str** | The region where the event occurred. | +**source** | **str** | The source of the event. | +**source_ip_address** | **str** | The IP address of the source. | +**sub_ingestion_id** | **str** | The unique identifier of the sub ingestion. | + +## Example + +```python +from sysdig_client.models.sequence_inner import SequenceInner + +# TODO update the JSON string below +json = "{}" +# create an instance of SequenceInner from a JSON string +sequence_inner_instance = SequenceInner.from_json(json) +# print the JSON string representation of the object +print(SequenceInner.to_json()) + +# convert the object into a dict +sequence_inner_dict = sequence_inner_instance.to_dict() +# create an instance of SequenceInner from a dict +sequence_inner_from_dict = SequenceInner.from_dict(sequence_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SeriesResponseV1.md b/docs/reference/SeriesResponseV1.md new file mode 100644 index 00000000..17f0b50a --- /dev/null +++ b/docs/reference/SeriesResponseV1.md @@ -0,0 +1,32 @@ +# SeriesResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | Query status. | [optional] +**data** | **List[object]** | List of matching time series, each represented as a set of labels. | [optional] +**warnings** | **List[str]** | A set of warning messages attached to the response. | [optional] +**infos** | **List[str]** | A set of information messages attached to the response. | [optional] + +## Example + +```python +from sysdig_client.models.series_response_v1 import SeriesResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SeriesResponseV1 from a JSON string +series_response_v1_instance = SeriesResponseV1.from_json(json) +# print the JSON string representation of the object +print(SeriesResponseV1.to_json()) + +# convert the object into a dict +series_response_v1_dict = series_response_v1_instance.to_dict() +# create an instance of SeriesResponseV1 from a dict +series_response_v1_from_dict = SeriesResponseV1.from_dict(series_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ServiceAccountResponseV1.md b/docs/reference/ServiceAccountResponseV1.md new file mode 100644 index 00000000..6e816ac3 --- /dev/null +++ b/docs/reference/ServiceAccountResponseV1.md @@ -0,0 +1,37 @@ +# ServiceAccountResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**name** | **str** | Service Account display name. | [optional] +**date_created** | **datetime** | Date and time when the Service Account was created. | [optional] +**last_updated** | **datetime** | Date and time when the Service Account was last updated. | [optional] +**last_used** | **datetime** | Date and time when the Service Account API key was last used. | [optional] +**expiration_date** | **datetime** | Date and time when the Service Account API key expires. | [optional] +**team_id** | **int** | Team ID of the team the service account is associated with. | [optional] +**team_role** | **str** | The predefined team role for a Service Account, or an ID of a custom role. | [optional] +**system_roles** | **List[str]** | Array of System roles assigned to the global service account. | [optional] + +## Example + +```python +from sysdig_client.models.service_account_response_v1 import ServiceAccountResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of ServiceAccountResponseV1 from a JSON string +service_account_response_v1_instance = ServiceAccountResponseV1.from_json(json) +# print the JSON string representation of the object +print(ServiceAccountResponseV1.to_json()) + +# convert the object into a dict +service_account_response_v1_dict = service_account_response_v1_instance.to_dict() +# create an instance of ServiceAccountResponseV1 from a dict +service_account_response_v1_from_dict = ServiceAccountResponseV1.from_dict(service_account_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ServiceAccountWithKeyResponseV1.md b/docs/reference/ServiceAccountWithKeyResponseV1.md new file mode 100644 index 00000000..00261ca2 --- /dev/null +++ b/docs/reference/ServiceAccountWithKeyResponseV1.md @@ -0,0 +1,38 @@ +# ServiceAccountWithKeyResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**name** | **str** | Service Account display name. | [optional] +**date_created** | **datetime** | Date and time when the Service Account was created. | [optional] +**last_updated** | **datetime** | Date and time when the Service Account was last updated. | [optional] +**last_used** | **datetime** | Date and time when the Service Account API key was last used. | [optional] +**expiration_date** | **datetime** | Date and time when the Service Account API key expires. | [optional] +**team_id** | **int** | Team ID of the team the service account is associated with. | [optional] +**team_role** | **str** | The predefined team role for a Service Account, or an ID of a custom role. | [optional] +**system_roles** | **List[str]** | Array of System roles assigned to the global service account. | [optional] +**api_key** | **str** | Service Account API key | [optional] + +## Example + +```python +from sysdig_client.models.service_account_with_key_response_v1 import ServiceAccountWithKeyResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of ServiceAccountWithKeyResponseV1 from a JSON string +service_account_with_key_response_v1_instance = ServiceAccountWithKeyResponseV1.from_json(json) +# print the JSON string representation of the object +print(ServiceAccountWithKeyResponseV1.to_json()) + +# convert the object into a dict +service_account_with_key_response_v1_dict = service_account_with_key_response_v1_instance.to_dict() +# create an instance of ServiceAccountWithKeyResponseV1 from a dict +service_account_with_key_response_v1_from_dict = ServiceAccountWithKeyResponseV1.from_dict(service_account_with_key_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ServiceAccountsApi.md b/docs/reference/ServiceAccountsApi.md new file mode 100644 index 00000000..5ab63835 --- /dev/null +++ b/docs/reference/ServiceAccountsApi.md @@ -0,0 +1,726 @@ +# sysdig_client.ServiceAccountsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_global_service_account_v1**](ServiceAccountsApi.md#create_global_service_account_v1) | **POST** /platform/v1/service-accounts | Create a Global Service Account +[**create_team_service_account_v1**](ServiceAccountsApi.md#create_team_service_account_v1) | **POST** /platform/v1/teams/{teamId}/service-accounts | Create a Team Service Account +[**delete_global_service_account_by_id_v1**](ServiceAccountsApi.md#delete_global_service_account_by_id_v1) | **DELETE** /platform/v1/service-accounts/{serviceAccountId} | Delete a Global Service Account +[**delete_team_service_account_by_id_v1**](ServiceAccountsApi.md#delete_team_service_account_by_id_v1) | **DELETE** /platform/v1/teams/{teamId}/service-accounts/{serviceAccountId} | Delete a Team Service Account +[**get_global_service_account_by_id_v1**](ServiceAccountsApi.md#get_global_service_account_by_id_v1) | **GET** /platform/v1/service-accounts/{serviceAccountId} | Get a Global Service Account +[**get_global_service_accounts_v1**](ServiceAccountsApi.md#get_global_service_accounts_v1) | **GET** /platform/v1/service-accounts | List Global Service Accounts +[**get_team_service_account_by_id_v1**](ServiceAccountsApi.md#get_team_service_account_by_id_v1) | **GET** /platform/v1/teams/{teamId}/service-accounts/{serviceAccountId} | Get a Team Service Account +[**get_team_service_accounts_v1**](ServiceAccountsApi.md#get_team_service_accounts_v1) | **GET** /platform/v1/teams/{teamId}/service-accounts | List Team Service Accounts + + +# **create_global_service_account_v1** +> ServiceAccountWithKeyResponseV1 create_global_service_account_v1(create_global_service_account_request_v1=create_global_service_account_request_v1) + +Create a Global Service Account + +Create a new global service account.\ +\ +**Required permissions:** _global-service-accounts.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_global_service_account_request_v1 import CreateGlobalServiceAccountRequestV1 +from sysdig_client.models.service_account_with_key_response_v1 import ServiceAccountWithKeyResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsApi(api_client) + create_global_service_account_request_v1 = sysdig_client.CreateGlobalServiceAccountRequestV1() # CreateGlobalServiceAccountRequestV1 | The payload required to create a new global service account. (optional) + + try: + # Create a Global Service Account + api_response = api_instance.create_global_service_account_v1(create_global_service_account_request_v1=create_global_service_account_request_v1) + print("The response of ServiceAccountsApi->create_global_service_account_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsApi->create_global_service_account_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_global_service_account_request_v1** | [**CreateGlobalServiceAccountRequestV1**](CreateGlobalServiceAccountRequestV1.md)| The payload required to create a new global service account. | [optional] + +### Return type + +[**ServiceAccountWithKeyResponseV1**](ServiceAccountWithKeyResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Global service account created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **create_team_service_account_v1** +> ServiceAccountWithKeyResponseV1 create_team_service_account_v1(team_id, create_team_service_account_request_v1=create_team_service_account_request_v1) + +Create a Team Service Account + +Create a new team service account.\ +\ +**Required permissions:** _team-service-accounts.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_team_service_account_request_v1 import CreateTeamServiceAccountRequestV1 +from sysdig_client.models.service_account_with_key_response_v1 import ServiceAccountWithKeyResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsApi(api_client) + team_id = 56 # int | The team ID. + create_team_service_account_request_v1 = sysdig_client.CreateTeamServiceAccountRequestV1() # CreateTeamServiceAccountRequestV1 | The payload required to create a new team service account. (optional) + + try: + # Create a Team Service Account + api_response = api_instance.create_team_service_account_v1(team_id, create_team_service_account_request_v1=create_team_service_account_request_v1) + print("The response of ServiceAccountsApi->create_team_service_account_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsApi->create_team_service_account_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **create_team_service_account_request_v1** | [**CreateTeamServiceAccountRequestV1**](CreateTeamServiceAccountRequestV1.md)| The payload required to create a new team service account. | [optional] + +### Return type + +[**ServiceAccountWithKeyResponseV1**](ServiceAccountWithKeyResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Team service account created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_global_service_account_by_id_v1** +> delete_global_service_account_by_id_v1(service_account_id) + +Delete a Global Service Account + +Delete a global service account by ID.\ +\ +**Required permissions:** _global-service-accounts.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsApi(api_client) + service_account_id = 56 # int | The service account ID. + + try: + # Delete a Global Service Account + api_instance.delete_global_service_account_by_id_v1(service_account_id) + except Exception as e: + print("Exception when calling ServiceAccountsApi->delete_global_service_account_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **service_account_id** | **int**| The service account ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Global service account deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_team_service_account_by_id_v1** +> delete_team_service_account_by_id_v1(team_id, service_account_id) + +Delete a Team Service Account + +Delete a team service account by ID.\ +\ +**Required permissions:** _team-service-accounts.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsApi(api_client) + team_id = 56 # int | The team ID. + service_account_id = 56 # int | The service account ID. + + try: + # Delete a Team Service Account + api_instance.delete_team_service_account_by_id_v1(team_id, service_account_id) + except Exception as e: + print("Exception when calling ServiceAccountsApi->delete_team_service_account_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **service_account_id** | **int**| The service account ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Team service account deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_global_service_account_by_id_v1** +> ServiceAccountResponseV1 get_global_service_account_by_id_v1(service_account_id) + +Get a Global Service Account + +Return a global service account by ID.\ +\ +**Required permissions:** _global-service-accounts.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.service_account_response_v1 import ServiceAccountResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsApi(api_client) + service_account_id = 56 # int | The service account ID. + + try: + # Get a Global Service Account + api_response = api_instance.get_global_service_account_by_id_v1(service_account_id) + print("The response of ServiceAccountsApi->get_global_service_account_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsApi->get_global_service_account_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **service_account_id** | **int**| The service account ID. | + +### Return type + +[**ServiceAccountResponseV1**](ServiceAccountResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Global service account found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_global_service_accounts_v1** +> GetServiceAccountsPaginatedResponseV1 get_global_service_accounts_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + +List Global Service Accounts + +Retrieve a paginated list of all service accounts.\ +\ +**Required permissions:** _global-service-accounts.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_service_accounts_paginated_response_v1 import GetServiceAccountsPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + orderby = '' # str | The order by field separated by a colon for the direction (optional) (default to '') + filter = [] # List[str] | Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` (optional) (default to []) + + try: + # List Global Service Accounts + api_response = api_instance.get_global_service_accounts_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + print("The response of ServiceAccountsApi->get_global_service_accounts_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsApi->get_global_service_accounts_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **orderby** | **str**| The order by field separated by a colon for the direction | [optional] [default to ''] + **filter** | [**List[str]**](str.md)| Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` | [optional] [default to []] + +### Return type + +[**GetServiceAccountsPaginatedResponseV1**](GetServiceAccountsPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Service accounts page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_team_service_account_by_id_v1** +> ServiceAccountResponseV1 get_team_service_account_by_id_v1(team_id, service_account_id) + +Get a Team Service Account + +Return a team service account by ID.\ +\ +**Required permissions:** _team-service-accounts.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.service_account_response_v1 import ServiceAccountResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsApi(api_client) + team_id = 56 # int | The team ID. + service_account_id = 56 # int | The service account ID. + + try: + # Get a Team Service Account + api_response = api_instance.get_team_service_account_by_id_v1(team_id, service_account_id) + print("The response of ServiceAccountsApi->get_team_service_account_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsApi->get_team_service_account_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **service_account_id** | **int**| The service account ID. | + +### Return type + +[**ServiceAccountResponseV1**](ServiceAccountResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Team service account found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_team_service_accounts_v1** +> GetServiceAccountsPaginatedResponseV1 get_team_service_accounts_v1(team_id, offset=offset, limit=limit, orderby=orderby, filter=filter) + +List Team Service Accounts + +Retrieve a paginated list of team service accounts.\ +\ +**Required permissions:** _team-service-accounts.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_service_accounts_paginated_response_v1 import GetServiceAccountsPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsApi(api_client) + team_id = 56 # int | The team ID. + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + orderby = '' # str | The order by field separated by a colon for the direction (optional) (default to '') + filter = [] # List[str] | Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` (optional) (default to []) + + try: + # List Team Service Accounts + api_response = api_instance.get_team_service_accounts_v1(team_id, offset=offset, limit=limit, orderby=orderby, filter=filter) + print("The response of ServiceAccountsApi->get_team_service_accounts_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsApi->get_team_service_accounts_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **orderby** | **str**| The order by field separated by a colon for the direction | [optional] [default to ''] + **filter** | [**List[str]**](str.md)| Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` | [optional] [default to []] + +### Return type + +[**GetServiceAccountsPaginatedResponseV1**](GetServiceAccountsPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The team service accounts page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/ServiceAccountsNotificationSettingsApi.md b/docs/reference/ServiceAccountsNotificationSettingsApi.md new file mode 100644 index 00000000..8622d7d7 --- /dev/null +++ b/docs/reference/ServiceAccountsNotificationSettingsApi.md @@ -0,0 +1,708 @@ +# sysdig_client.ServiceAccountsNotificationSettingsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_global_service_accounts_notification_settings_v1**](ServiceAccountsNotificationSettingsApi.md#create_global_service_accounts_notification_settings_v1) | **POST** /platform/v1/service-accounts/notification-settings | Create Global Service Accounts Notification Settings +[**create_service_accounts_notification_settings_v1**](ServiceAccountsNotificationSettingsApi.md#create_service_accounts_notification_settings_v1) | **POST** /platform/v1/teams/{teamId}/service-accounts/notification-settings | Create Service Accounts Notification Settings +[**delete_global_service_accounts_notification_settings_v1**](ServiceAccountsNotificationSettingsApi.md#delete_global_service_accounts_notification_settings_v1) | **DELETE** /platform/v1/service-accounts/notification-settings | Delete Global Service Accounts Notification Settings +[**delete_service_accounts_notification_settings_v1**](ServiceAccountsNotificationSettingsApi.md#delete_service_accounts_notification_settings_v1) | **DELETE** /platform/v1/teams/{teamId}/service-accounts/notification-settings | Delete Service Accounts Notification Settings +[**get_global_service_accounts_notification_settings_v1**](ServiceAccountsNotificationSettingsApi.md#get_global_service_accounts_notification_settings_v1) | **GET** /platform/v1/service-accounts/notification-settings | Get Global Service Accounts Notification Settings +[**get_service_accounts_notification_settings_v1**](ServiceAccountsNotificationSettingsApi.md#get_service_accounts_notification_settings_v1) | **GET** /platform/v1/teams/{teamId}/service-accounts/notification-settings | Get Service Accounts Notification Settings +[**update_global_service_accounts_notification_settings_v1**](ServiceAccountsNotificationSettingsApi.md#update_global_service_accounts_notification_settings_v1) | **PUT** /platform/v1/service-accounts/notification-settings | Update Global Service Accounts Notification Settings +[**update_service_accounts_notification_settings_v1**](ServiceAccountsNotificationSettingsApi.md#update_service_accounts_notification_settings_v1) | **PUT** /platform/v1/teams/{teamId}/service-accounts/notification-settings | Update Service Accounts Notification Settings + + +# **create_global_service_accounts_notification_settings_v1** +> ServiceAccountsNotificationSettingsResponseV1 create_global_service_accounts_notification_settings_v1(create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1) + +Create Global Service Accounts Notification Settings + +Create a new Notification Settings for Global Service Accounts.\ +\ +**Required permissions:** _global-service-accounts-notification-settings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_service_accounts_notification_settings_request_v1 import CreateServiceAccountsNotificationSettingsRequestV1 +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsNotificationSettingsApi(api_client) + create_service_accounts_notification_settings_request_v1 = sysdig_client.CreateServiceAccountsNotificationSettingsRequestV1() # CreateServiceAccountsNotificationSettingsRequestV1 | The payload required to create Service Accounts Notification Settings. (optional) + + try: + # Create Global Service Accounts Notification Settings + api_response = api_instance.create_global_service_accounts_notification_settings_v1(create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1) + print("The response of ServiceAccountsNotificationSettingsApi->create_global_service_accounts_notification_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsNotificationSettingsApi->create_global_service_accounts_notification_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_service_accounts_notification_settings_request_v1** | [**CreateServiceAccountsNotificationSettingsRequestV1**](CreateServiceAccountsNotificationSettingsRequestV1.md)| The payload required to create Service Accounts Notification Settings. | [optional] + +### Return type + +[**ServiceAccountsNotificationSettingsResponseV1**](ServiceAccountsNotificationSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Service Accounts Notification Settings created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **create_service_accounts_notification_settings_v1** +> ServiceAccountsNotificationSettingsResponseV1 create_service_accounts_notification_settings_v1(team_id, create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1) + +Create Service Accounts Notification Settings + +Create a new Notification Settings for Service Accounts which belong to a specific team.\ +\ +**Required permissions:** _service-accounts-notification-settings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_service_accounts_notification_settings_request_v1 import CreateServiceAccountsNotificationSettingsRequestV1 +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsNotificationSettingsApi(api_client) + team_id = 56 # int | The team ID. + create_service_accounts_notification_settings_request_v1 = sysdig_client.CreateServiceAccountsNotificationSettingsRequestV1() # CreateServiceAccountsNotificationSettingsRequestV1 | The payload required to create Service Accounts Notification Settings. (optional) + + try: + # Create Service Accounts Notification Settings + api_response = api_instance.create_service_accounts_notification_settings_v1(team_id, create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1) + print("The response of ServiceAccountsNotificationSettingsApi->create_service_accounts_notification_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsNotificationSettingsApi->create_service_accounts_notification_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **create_service_accounts_notification_settings_request_v1** | [**CreateServiceAccountsNotificationSettingsRequestV1**](CreateServiceAccountsNotificationSettingsRequestV1.md)| The payload required to create Service Accounts Notification Settings. | [optional] + +### Return type + +[**ServiceAccountsNotificationSettingsResponseV1**](ServiceAccountsNotificationSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Service Accounts Notification Settings created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_global_service_accounts_notification_settings_v1** +> delete_global_service_accounts_notification_settings_v1() + +Delete Global Service Accounts Notification Settings + +Delete Notification Settings for Global Service Accounts.\ +\ +**Required permissions:** _global-service-accounts-notification-settings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsNotificationSettingsApi(api_client) + + try: + # Delete Global Service Accounts Notification Settings + api_instance.delete_global_service_accounts_notification_settings_v1() + except Exception as e: + print("Exception when calling ServiceAccountsNotificationSettingsApi->delete_global_service_accounts_notification_settings_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Service Accounts Notification Settings deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_service_accounts_notification_settings_v1** +> delete_service_accounts_notification_settings_v1(team_id) + +Delete Service Accounts Notification Settings + +Delete Service Accounts Notification Settings for a given team.\ +\ +**Required permissions:** _service-accounts-notification-settings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsNotificationSettingsApi(api_client) + team_id = 56 # int | The team ID. + + try: + # Delete Service Accounts Notification Settings + api_instance.delete_service_accounts_notification_settings_v1(team_id) + except Exception as e: + print("Exception when calling ServiceAccountsNotificationSettingsApi->delete_service_accounts_notification_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Service Accounts Notification Settings deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_global_service_accounts_notification_settings_v1** +> ServiceAccountsNotificationSettingsResponseV1 get_global_service_accounts_notification_settings_v1() + +Get Global Service Accounts Notification Settings + +Return Notification Settings for Global Service Accounts.\ +\ +**Required permissions:** _global-service-accounts-notification-settings.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsNotificationSettingsApi(api_client) + + try: + # Get Global Service Accounts Notification Settings + api_response = api_instance.get_global_service_accounts_notification_settings_v1() + print("The response of ServiceAccountsNotificationSettingsApi->get_global_service_accounts_notification_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsNotificationSettingsApi->get_global_service_accounts_notification_settings_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**ServiceAccountsNotificationSettingsResponseV1**](ServiceAccountsNotificationSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Service Accounts Notification Settings found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_service_accounts_notification_settings_v1** +> ServiceAccountsNotificationSettingsResponseV1 get_service_accounts_notification_settings_v1(team_id) + +Get Service Accounts Notification Settings + +Return Service Accounts Notification Settings for a given team.\ +\ +**Required permissions:** _service-accounts-notification-settings.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsNotificationSettingsApi(api_client) + team_id = 56 # int | The team ID. + + try: + # Get Service Accounts Notification Settings + api_response = api_instance.get_service_accounts_notification_settings_v1(team_id) + print("The response of ServiceAccountsNotificationSettingsApi->get_service_accounts_notification_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsNotificationSettingsApi->get_service_accounts_notification_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + +### Return type + +[**ServiceAccountsNotificationSettingsResponseV1**](ServiceAccountsNotificationSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Service Accounts Notification Settings found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_global_service_accounts_notification_settings_v1** +> ServiceAccountsNotificationSettingsResponseV1 update_global_service_accounts_notification_settings_v1(update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1) + +Update Global Service Accounts Notification Settings + +Update Notification Settings for Global Service Accounts.\ +\ +**Required permissions:** _global-service-accounts-notification-settings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 +from sysdig_client.models.update_service_accounts_notification_settings_request_v1 import UpdateServiceAccountsNotificationSettingsRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsNotificationSettingsApi(api_client) + update_service_accounts_notification_settings_request_v1 = sysdig_client.UpdateServiceAccountsNotificationSettingsRequestV1() # UpdateServiceAccountsNotificationSettingsRequestV1 | (optional) + + try: + # Update Global Service Accounts Notification Settings + api_response = api_instance.update_global_service_accounts_notification_settings_v1(update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1) + print("The response of ServiceAccountsNotificationSettingsApi->update_global_service_accounts_notification_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsNotificationSettingsApi->update_global_service_accounts_notification_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **update_service_accounts_notification_settings_request_v1** | [**UpdateServiceAccountsNotificationSettingsRequestV1**](UpdateServiceAccountsNotificationSettingsRequestV1.md)| | [optional] + +### Return type + +[**ServiceAccountsNotificationSettingsResponseV1**](ServiceAccountsNotificationSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Service Accounts Notification Settings updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_service_accounts_notification_settings_v1** +> ServiceAccountsNotificationSettingsResponseV1 update_service_accounts_notification_settings_v1(team_id, update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1) + +Update Service Accounts Notification Settings + +Update Service Accounts Notification Settings for a given team.\ +\ +**Required permissions:** _service-accounts-notification-settings.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 +from sysdig_client.models.update_service_accounts_notification_settings_request_v1 import UpdateServiceAccountsNotificationSettingsRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ServiceAccountsNotificationSettingsApi(api_client) + team_id = 56 # int | The team ID. + update_service_accounts_notification_settings_request_v1 = sysdig_client.UpdateServiceAccountsNotificationSettingsRequestV1() # UpdateServiceAccountsNotificationSettingsRequestV1 | (optional) + + try: + # Update Service Accounts Notification Settings + api_response = api_instance.update_service_accounts_notification_settings_v1(team_id, update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1) + print("The response of ServiceAccountsNotificationSettingsApi->update_service_accounts_notification_settings_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ServiceAccountsNotificationSettingsApi->update_service_accounts_notification_settings_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **update_service_accounts_notification_settings_request_v1** | [**UpdateServiceAccountsNotificationSettingsRequestV1**](UpdateServiceAccountsNotificationSettingsRequestV1.md)| | [optional] + +### Return type + +[**ServiceAccountsNotificationSettingsResponseV1**](ServiceAccountsNotificationSettingsResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Service Accounts Notification Settings updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/ServiceAccountsNotificationSettingsResponseV1.md b/docs/reference/ServiceAccountsNotificationSettingsResponseV1.md new file mode 100644 index 00000000..3eaf0315 --- /dev/null +++ b/docs/reference/ServiceAccountsNotificationSettingsResponseV1.md @@ -0,0 +1,31 @@ +# ServiceAccountsNotificationSettingsResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_enabled** | **bool** | Whether the notification settings are enabled or not. | [optional] +**notification_channel_ids** | **List[int]** | The list of notification channel IDs to which the notifications are to be sent.\\ \\ Supported types are **EMAIL** and **SLACK**. | [optional] +**days_before_expiry** | **List[int]** | The number of days before the expiry of the service account when the notifications are to be sent. | [optional] [default to [30, 7, 1]] + +## Example + +```python +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of ServiceAccountsNotificationSettingsResponseV1 from a JSON string +service_accounts_notification_settings_response_v1_instance = ServiceAccountsNotificationSettingsResponseV1.from_json(json) +# print the JSON string representation of the object +print(ServiceAccountsNotificationSettingsResponseV1.to_json()) + +# convert the object into a dict +service_accounts_notification_settings_response_v1_dict = service_accounts_notification_settings_response_v1_instance.to_dict() +# create an instance of ServiceAccountsNotificationSettingsResponseV1 from a dict +service_accounts_notification_settings_response_v1_from_dict = ServiceAccountsNotificationSettingsResponseV1.from_dict(service_accounts_notification_settings_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ServiceAccountsNotificationSettinsBase.md b/docs/reference/ServiceAccountsNotificationSettinsBase.md new file mode 100644 index 00000000..7ed923b2 --- /dev/null +++ b/docs/reference/ServiceAccountsNotificationSettinsBase.md @@ -0,0 +1,32 @@ +# ServiceAccountsNotificationSettinsBase + +The base schema for the service accounts notification settings. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_enabled** | **bool** | Whether the notification settings are enabled or not. | [optional] +**notification_channel_ids** | **List[int]** | The list of notification channel IDs to which the notifications are to be sent.\\ \\ Supported types are **EMAIL** and **SLACK**. | [optional] +**days_before_expiry** | **List[int]** | The number of days before the expiry of the service account when the notifications are to be sent. | [optional] [default to [30,7,1]] + +## Example + +```python +from sysdig_client.models.service_accounts_notification_settins_base import ServiceAccountsNotificationSettinsBase + +# TODO update the JSON string below +json = "{}" +# create an instance of ServiceAccountsNotificationSettinsBase from a JSON string +service_accounts_notification_settins_base_instance = ServiceAccountsNotificationSettinsBase.from_json(json) +# print the JSON string representation of the object +print(ServiceAccountsNotificationSettinsBase.to_json()) + +# convert the object into a dict +service_accounts_notification_settins_base_dict = service_accounts_notification_settins_base_instance.to_dict() +# create an instance of ServiceAccountsNotificationSettinsBase from a dict +service_accounts_notification_settins_base_from_dict = ServiceAccountsNotificationSettinsBase.from_dict(service_accounts_notification_settins_base_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Services.md b/docs/reference/Services.md new file mode 100644 index 00000000..48eb7839 --- /dev/null +++ b/docs/reference/Services.md @@ -0,0 +1,33 @@ +# Services + +Certificate registrations + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**certificate_id** | **int** | The certificate ID. | +**service_type** | **str** | The service type. | +**registered_at** | **datetime** | The timestamp the service was configured to use this certificate. | +**service_id** | **str** | The integration ID for the service owning the integration that uses the certificate. | + +## Example + +```python +from sysdig_client.models.services import Services + +# TODO update the JSON string below +json = "{}" +# create an instance of Services from a JSON string +services_instance = Services.from_json(json) +# print the JSON string representation of the object +print(Services.to_json()) + +# convert the object into a dict +services_dict = services_instance.to_dict() +# create an instance of Services from a dict +services_from_dict = Services.from_dict(services_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ServicesResponse.md b/docs/reference/ServicesResponse.md new file mode 100644 index 00000000..5aa5216d --- /dev/null +++ b/docs/reference/ServicesResponse.md @@ -0,0 +1,30 @@ +# ServicesResponse + +LedgersResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[Services]**](Services.md) | | + +## Example + +```python +from sysdig_client.models.services_response import ServicesResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ServicesResponse from a JSON string +services_response_instance = ServicesResponse.from_json(json) +# print the JSON string representation of the object +print(ServicesResponse.to_json()) + +# convert the object into a dict +services_response_dict = services_response_instance.to_dict() +# create an instance of ServicesResponse from a dict +services_response_from_dict = ServicesResponse.from_dict(services_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SlackBaseNotificationChannelOptionsV1.md b/docs/reference/SlackBaseNotificationChannelOptionsV1.md new file mode 100644 index 00000000..8b0fd24b --- /dev/null +++ b/docs/reference/SlackBaseNotificationChannelOptionsV1.md @@ -0,0 +1,31 @@ +# SlackBaseNotificationChannelOptionsV1 + +The Slack base notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**channel** | **str** | The name of the Slack channel the user selected as a destination for messages. | [optional] +**url** | **str** | The Slack webhook URL | + +## Example + +```python +from sysdig_client.models.slack_base_notification_channel_options_v1 import SlackBaseNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SlackBaseNotificationChannelOptionsV1 from a JSON string +slack_base_notification_channel_options_v1_instance = SlackBaseNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(SlackBaseNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +slack_base_notification_channel_options_v1_dict = slack_base_notification_channel_options_v1_instance.to_dict() +# create an instance of SlackBaseNotificationChannelOptionsV1 from a dict +slack_base_notification_channel_options_v1_from_dict = SlackBaseNotificationChannelOptionsV1.from_dict(slack_base_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SlackCreateNotificationChannelOptionsV1.md b/docs/reference/SlackCreateNotificationChannelOptionsV1.md new file mode 100644 index 00000000..f4979c59 --- /dev/null +++ b/docs/reference/SlackCreateNotificationChannelOptionsV1.md @@ -0,0 +1,34 @@ +# SlackCreateNotificationChannelOptionsV1 + +The Slack create notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**channel** | **str** | The name of the Slack channel the user selected as a destination for messages. | [optional] +**url** | **str** | The Slack webhook URL | +**is_private_channel** | **bool** | Whether the Slack channel is private or not | [optional] +**private_channel_url** | **str** | The channel URL, if channel is private | [optional] + +## Example + +```python +from sysdig_client.models.slack_create_notification_channel_options_v1 import SlackCreateNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SlackCreateNotificationChannelOptionsV1 from a JSON string +slack_create_notification_channel_options_v1_instance = SlackCreateNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(SlackCreateNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +slack_create_notification_channel_options_v1_dict = slack_create_notification_channel_options_v1_instance.to_dict() +# create an instance of SlackCreateNotificationChannelOptionsV1 from a dict +slack_create_notification_channel_options_v1_from_dict = SlackCreateNotificationChannelOptionsV1.from_dict(slack_create_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SlackNotificationChannelResponseV1.md b/docs/reference/SlackNotificationChannelResponseV1.md new file mode 100644 index 00000000..6695905b --- /dev/null +++ b/docs/reference/SlackNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# SlackNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**SlackReadNotificationChannelOptionsV1**](SlackReadNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.slack_notification_channel_response_v1 import SlackNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SlackNotificationChannelResponseV1 from a JSON string +slack_notification_channel_response_v1_instance = SlackNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(SlackNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +slack_notification_channel_response_v1_dict = slack_notification_channel_response_v1_instance.to_dict() +# create an instance of SlackNotificationChannelResponseV1 from a dict +slack_notification_channel_response_v1_from_dict = SlackNotificationChannelResponseV1.from_dict(slack_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SlackReadNotificationChannelOptionsV1.md b/docs/reference/SlackReadNotificationChannelOptionsV1.md new file mode 100644 index 00000000..0dea1dd1 --- /dev/null +++ b/docs/reference/SlackReadNotificationChannelOptionsV1.md @@ -0,0 +1,35 @@ +# SlackReadNotificationChannelOptionsV1 + +The Slack read notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**channel** | **str** | The name of the Slack channel the user selected as a destination for messages. | [optional] +**url** | **str** | The Slack webhook URL | +**is_private_channel** | **bool** | Whether the Slack channel is private or not | [optional] +**private_channel_url** | **str** | The channel URL, if channel is private | [optional] +**channel_creator_user_id** | **int** | The ID of the user that created the channel. | [optional] + +## Example + +```python +from sysdig_client.models.slack_read_notification_channel_options_v1 import SlackReadNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SlackReadNotificationChannelOptionsV1 from a JSON string +slack_read_notification_channel_options_v1_instance = SlackReadNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(SlackReadNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +slack_read_notification_channel_options_v1_dict = slack_read_notification_channel_options_v1_instance.to_dict() +# create an instance of SlackReadNotificationChannelOptionsV1 from a dict +slack_read_notification_channel_options_v1_from_dict = SlackReadNotificationChannelOptionsV1.from_dict(slack_read_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SlackUpdateNotificationChannelOptionsV1.md b/docs/reference/SlackUpdateNotificationChannelOptionsV1.md new file mode 100644 index 00000000..cfca5970 --- /dev/null +++ b/docs/reference/SlackUpdateNotificationChannelOptionsV1.md @@ -0,0 +1,32 @@ +# SlackUpdateNotificationChannelOptionsV1 + +The Slack update notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**channel** | **str** | The name of the Slack channel the user selected as a destination for messages. | [optional] +**url** | **str** | The Slack webhook URL | + +## Example + +```python +from sysdig_client.models.slack_update_notification_channel_options_v1 import SlackUpdateNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SlackUpdateNotificationChannelOptionsV1 from a JSON string +slack_update_notification_channel_options_v1_instance = SlackUpdateNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(SlackUpdateNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +slack_update_notification_channel_options_v1_dict = slack_update_notification_channel_options_v1_instance.to_dict() +# create an instance of SlackUpdateNotificationChannelOptionsV1 from a dict +slack_update_notification_channel_options_v1_from_dict = SlackUpdateNotificationChannelOptionsV1.from_dict(slack_update_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SnsNotificationChannelOptionsV1.md b/docs/reference/SnsNotificationChannelOptionsV1.md new file mode 100644 index 00000000..9a4174ad --- /dev/null +++ b/docs/reference/SnsNotificationChannelOptionsV1.md @@ -0,0 +1,31 @@ +# SnsNotificationChannelOptionsV1 + +The Amazon SNS notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**sns_topic_arns** | **List[str]** | List of sns topic ARNs (Amazon Resource Names) to which notifications should be sent | [optional] + +## Example + +```python +from sysdig_client.models.sns_notification_channel_options_v1 import SnsNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SnsNotificationChannelOptionsV1 from a JSON string +sns_notification_channel_options_v1_instance = SnsNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(SnsNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +sns_notification_channel_options_v1_dict = sns_notification_channel_options_v1_instance.to_dict() +# create an instance of SnsNotificationChannelOptionsV1 from a dict +sns_notification_channel_options_v1_from_dict = SnsNotificationChannelOptionsV1.from_dict(sns_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SnsNotificationChannelResponseV1.md b/docs/reference/SnsNotificationChannelResponseV1.md new file mode 100644 index 00000000..6ae57748 --- /dev/null +++ b/docs/reference/SnsNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# SnsNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**SnsNotificationChannelOptionsV1**](SnsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.sns_notification_channel_response_v1 import SnsNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SnsNotificationChannelResponseV1 from a JSON string +sns_notification_channel_response_v1_instance = SnsNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(SnsNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +sns_notification_channel_response_v1_dict = sns_notification_channel_response_v1_instance.to_dict() +# create an instance of SnsNotificationChannelResponseV1 from a dict +sns_notification_channel_response_v1_from_dict = SnsNotificationChannelResponseV1.from_dict(sns_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Source.md b/docs/reference/Source.md new file mode 100644 index 00000000..4561cd09 --- /dev/null +++ b/docs/reference/Source.md @@ -0,0 +1,35 @@ +# Source + +Source of the event: - `syscall` - a syscall within a workload - `windows` - Windows event log - `profiling` - ML workload threat detections - `K8SAdmissionController` - Admission control request coming from the Kubernetes admission controller - `k8s_audit` - Kubernetes audit logs, if the category is `runtime`, otherwise Admission control request - `aws_cloudtrail` - AWS CloudTrail log, from CloudConnector - `awscloudtrail` - AWS CloudTrail log, agentless only - `agentless-aws-ml` - ML threat detections for AWS - `gcp_auditlog` - GCP Audit log - `azure_platformlogs` - Azure platform logs - `okta` - Okta System Logs - `agentless-okta-ml` - ML threat detections for Okta - `github` - Github organization logs + +## Enum + +* `SYSCALL` (value: `'syscall'`) + +* `WINDOWS` (value: `'windows'`) + +* `PROFILING` (value: `'profiling'`) + +* `K8SADMISSIONCONTROLLER` (value: `'K8SAdmissionController'`) + +* `K8S_AUDIT` (value: `'k8s_audit'`) + +* `AWS_CLOUDTRAIL` (value: `'aws_cloudtrail'`) + +* `AWSCLOUDTRAIL` (value: `'awscloudtrail'`) + +* `AGENTLESS_MINUS_AWS_MINUS_ML` (value: `'agentless-aws-ml'`) + +* `GCP_AUDITLOG` (value: `'gcp_auditlog'`) + +* `AZURE_PLATFORMLOGS` (value: `'azure_platformlogs'`) + +* `OKTA` (value: `'okta'`) + +* `AGENTLESS_MINUS_OKTA_MINUS_ML` (value: `'agentless-okta-ml'`) + +* `GITHUB` (value: `'github'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SourceDetails.md b/docs/reference/SourceDetails.md new file mode 100644 index 00000000..788755b5 --- /dev/null +++ b/docs/reference/SourceDetails.md @@ -0,0 +1,31 @@ +# SourceDetails + +Additional details related to the Event source. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | The type of component that generated the raw event: - `cloud` - Cloud platform - `git` - Git platform - `iam` - Identity and Access Management platform - `kubernetes` - Kubernetes control plane - `workload` - Workload (from bare metal to *aaS compute) | +**sub_type** | **str** | A deeper particularization for the type of component that generated the raw event: - `auditlogs` - Audit logs of platforms/apps - `auditWebhooks` - Kubernetes Audit - `caas` - Container As A Service workload - `dynamicAdmissionControl` - Dynamic admission control - `host` - Non-containerized host - `container` - Container - `workforce` - Workforce type IAM | [optional] + +## Example + +```python +from sysdig_client.models.source_details import SourceDetails + +# TODO update the JSON string below +json = "{}" +# create an instance of SourceDetails from a JSON string +source_details_instance = SourceDetails.from_json(json) +# print the JSON string representation of the object +print(SourceDetails.to_json()) + +# convert the object into a dict +source_details_dict = source_details_instance.to_dict() +# create an instance of SourceDetails from a dict +source_details_from_dict = SourceDetails.from_dict(source_details_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SplunkCreateConnectionInfo.md b/docs/reference/SplunkCreateConnectionInfo.md new file mode 100644 index 00000000..8bbffd0a --- /dev/null +++ b/docs/reference/SplunkCreateConnectionInfo.md @@ -0,0 +1,34 @@ +# SplunkCreateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | URL of the Splunk instance | +**source_type** | **str** | Source type to override [Sysdig standard data type to source type mapping](https://docs.sysdig.com/en/forward-splunk#reference-data-categories-mapped-to-source-types) | [optional] +**index** | **str** | index to send data to. If unspecified, it will be used the index specified on the HTTP Event Collector configuration on Splunk | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] +**certificate_id** | **int** | ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field | [optional] +**token** | **str** | HTTP Event Collector Token | + +## Example + +```python +from sysdig_client.models.splunk_create_connection_info import SplunkCreateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of SplunkCreateConnectionInfo from a JSON string +splunk_create_connection_info_instance = SplunkCreateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(SplunkCreateConnectionInfo.to_json()) + +# convert the object into a dict +splunk_create_connection_info_dict = splunk_create_connection_info_instance.to_dict() +# create an instance of SplunkCreateConnectionInfo from a dict +splunk_create_connection_info_from_dict = SplunkCreateConnectionInfo.from_dict(splunk_create_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SplunkUpdateConnectionInfo.md b/docs/reference/SplunkUpdateConnectionInfo.md new file mode 100644 index 00000000..d33ee383 --- /dev/null +++ b/docs/reference/SplunkUpdateConnectionInfo.md @@ -0,0 +1,34 @@ +# SplunkUpdateConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | URL of the Splunk instance | +**source_type** | **str** | Source type to override [Sysdig standard data type to source type mapping](https://docs.sysdig.com/en/forward-splunk#reference-data-categories-mapped-to-source-types) | [optional] +**index** | **str** | index to send data to. If unspecified, it will be used the index specified on the HTTP Event Collector configuration on Splunk | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] +**certificate_id** | **int** | ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field | [optional] +**token** | **str** | HTTP Event Collector Token | [optional] + +## Example + +```python +from sysdig_client.models.splunk_update_connection_info import SplunkUpdateConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of SplunkUpdateConnectionInfo from a JSON string +splunk_update_connection_info_instance = SplunkUpdateConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(SplunkUpdateConnectionInfo.to_json()) + +# convert the object into a dict +splunk_update_connection_info_dict = splunk_update_connection_info_instance.to_dict() +# create an instance of SplunkUpdateConnectionInfo from a dict +splunk_update_connection_info_from_dict = SplunkUpdateConnectionInfo.from_dict(splunk_update_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SsoSettingsBaseSchemaV1.md b/docs/reference/SsoSettingsBaseSchemaV1.md new file mode 100644 index 00000000..c202c55b --- /dev/null +++ b/docs/reference/SsoSettingsBaseSchemaV1.md @@ -0,0 +1,35 @@ +# SsoSettingsBaseSchemaV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**product** | [**Product**](Product.md) | The product to which SSO settings is applied to. SSO settings are configured per specific product. | [optional] +**is_active** | **bool** | Flag to indicate if the SSO settings is active. | [optional] +**create_user_on_login** | **bool** | Flag to indicate if the user will be created automatically if not found in the system. | [optional] +**is_password_login_enabled** | **bool** | Flag to indicate if the user will be able to login with password. Deprecated: use the API endpoint `/platform/v1/global-sso-settings` for this functionality. This is now a global setting: if this flag is defined here and this SSO setting is set to be active, the setting will be applied at global level. | [optional] +**is_single_logout_enabled** | **bool** | Flag to indicate if the single logout support is enabled. | [optional] +**is_group_mapping_enabled** | **bool** | Flag to indicate if group mapping support is enabled. | [optional] +**group_mapping_attribute_name** | **str** | The group mapping attribute name. | [optional] + +## Example + +```python +from sysdig_client.models.sso_settings_base_schema_v1 import SsoSettingsBaseSchemaV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SsoSettingsBaseSchemaV1 from a JSON string +sso_settings_base_schema_v1_instance = SsoSettingsBaseSchemaV1.from_json(json) +# print the JSON string representation of the object +print(SsoSettingsBaseSchemaV1.to_json()) + +# convert the object into a dict +sso_settings_base_schema_v1_dict = sso_settings_base_schema_v1_instance.to_dict() +# create an instance of SsoSettingsBaseSchemaV1 from a dict +sso_settings_base_schema_v1_from_dict = SsoSettingsBaseSchemaV1.from_dict(sso_settings_base_schema_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SsoSettingsCreateRequestBaseV1.md b/docs/reference/SsoSettingsCreateRequestBaseV1.md new file mode 100644 index 00000000..aa6f9105 --- /dev/null +++ b/docs/reference/SsoSettingsCreateRequestBaseV1.md @@ -0,0 +1,30 @@ +# SsoSettingsCreateRequestBaseV1 + +Create Request SSO Settings Base Schema + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**SsoTypeV1**](SsoTypeV1.md) | | + +## Example + +```python +from sysdig_client.models.sso_settings_create_request_base_v1 import SsoSettingsCreateRequestBaseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SsoSettingsCreateRequestBaseV1 from a JSON string +sso_settings_create_request_base_v1_instance = SsoSettingsCreateRequestBaseV1.from_json(json) +# print the JSON string representation of the object +print(SsoSettingsCreateRequestBaseV1.to_json()) + +# convert the object into a dict +sso_settings_create_request_base_v1_dict = sso_settings_create_request_base_v1_instance.to_dict() +# create an instance of SsoSettingsCreateRequestBaseV1 from a dict +sso_settings_create_request_base_v1_from_dict = SsoSettingsCreateRequestBaseV1.from_dict(sso_settings_create_request_base_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SsoSettingsResponseBaseV1.md b/docs/reference/SsoSettingsResponseBaseV1.md new file mode 100644 index 00000000..052adc9b --- /dev/null +++ b/docs/reference/SsoSettingsResponseBaseV1.md @@ -0,0 +1,30 @@ +# SsoSettingsResponseBaseV1 + +Response SSO Settings Base Schema + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**SsoTypeV1**](SsoTypeV1.md) | | + +## Example + +```python +from sysdig_client.models.sso_settings_response_base_v1 import SsoSettingsResponseBaseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SsoSettingsResponseBaseV1 from a JSON string +sso_settings_response_base_v1_instance = SsoSettingsResponseBaseV1.from_json(json) +# print the JSON string representation of the object +print(SsoSettingsResponseBaseV1.to_json()) + +# convert the object into a dict +sso_settings_response_base_v1_dict = sso_settings_response_base_v1_instance.to_dict() +# create an instance of SsoSettingsResponseBaseV1 from a dict +sso_settings_response_base_v1_from_dict = SsoSettingsResponseBaseV1.from_dict(sso_settings_response_base_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SsoSettingsResponseV1.md b/docs/reference/SsoSettingsResponseV1.md new file mode 100644 index 00000000..20170d8a --- /dev/null +++ b/docs/reference/SsoSettingsResponseV1.md @@ -0,0 +1,40 @@ +# SsoSettingsResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**product** | [**Product**](Product.md) | The product to which SSO settings is applied to. SSO settings are configured per specific product. | [optional] +**is_active** | **bool** | Flag to indicate if the SSO settings is active. | [optional] +**create_user_on_login** | **bool** | Flag to indicate if the user will be created automatically if not found in the system. | [optional] +**is_password_login_enabled** | **bool** | Flag to indicate if the user will be able to login with password. Deprecated: use the API endpoint `/platform/v1/global-sso-settings` for this functionality. This is now a global setting: if this flag is defined here and this SSO setting is set to be active, the setting will be applied at global level. | [optional] +**is_single_logout_enabled** | **bool** | Flag to indicate if the single logout support is enabled. | [optional] +**is_group_mapping_enabled** | **bool** | Flag to indicate if group mapping support is enabled. | [optional] +**group_mapping_attribute_name** | **str** | The group mapping attribute name. | [optional] +**id** | **int** | | [optional] +**config** | [**SsoSettingsResponseBaseV1**](SsoSettingsResponseBaseV1.md) | | [optional] +**date_created** | **datetime** | The date (in ISO 8601 format) when this SSO config was created. | [optional] +**last_updated** | **datetime** | The date (in ISO 8601 format) when this SSO config was last updated. | [optional] +**version** | **int** | | [optional] + +## Example + +```python +from sysdig_client.models.sso_settings_response_v1 import SsoSettingsResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SsoSettingsResponseV1 from a JSON string +sso_settings_response_v1_instance = SsoSettingsResponseV1.from_json(json) +# print the JSON string representation of the object +print(SsoSettingsResponseV1.to_json()) + +# convert the object into a dict +sso_settings_response_v1_dict = sso_settings_response_v1_instance.to_dict() +# create an instance of SsoSettingsResponseV1 from a dict +sso_settings_response_v1_from_dict = SsoSettingsResponseV1.from_dict(sso_settings_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SsoSettingsUpdateRequestBaseV1.md b/docs/reference/SsoSettingsUpdateRequestBaseV1.md new file mode 100644 index 00000000..5026fc68 --- /dev/null +++ b/docs/reference/SsoSettingsUpdateRequestBaseV1.md @@ -0,0 +1,30 @@ +# SsoSettingsUpdateRequestBaseV1 + +Update Request SSO Settings Base Schema + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**SsoTypeV1**](SsoTypeV1.md) | | + +## Example + +```python +from sysdig_client.models.sso_settings_update_request_base_v1 import SsoSettingsUpdateRequestBaseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of SsoSettingsUpdateRequestBaseV1 from a JSON string +sso_settings_update_request_base_v1_instance = SsoSettingsUpdateRequestBaseV1.from_json(json) +# print the JSON string representation of the object +print(SsoSettingsUpdateRequestBaseV1.to_json()) + +# convert the object into a dict +sso_settings_update_request_base_v1_dict = sso_settings_update_request_base_v1_instance.to_dict() +# create an instance of SsoSettingsUpdateRequestBaseV1 from a dict +sso_settings_update_request_base_v1_from_dict = SsoSettingsUpdateRequestBaseV1.from_dict(sso_settings_update_request_base_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SsoTypeV1.md b/docs/reference/SsoTypeV1.md new file mode 100644 index 00000000..577725e2 --- /dev/null +++ b/docs/reference/SsoTypeV1.md @@ -0,0 +1,13 @@ +# SsoTypeV1 + +Supported SSO types + +## Enum + +* `SAML` (value: `'SAML'`) + +* `OPENID` (value: `'OPENID'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Stage.md b/docs/reference/Stage.md new file mode 100644 index 00000000..072db6e0 --- /dev/null +++ b/docs/reference/Stage.md @@ -0,0 +1,30 @@ +# Stage + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | stage name. | +**configuration** | [**List[StageConfiguration]**](StageConfiguration.md) | Configurations for the stage. | [optional] + +## Example + +```python +from sysdig_client.models.stage import Stage + +# TODO update the JSON string below +json = "{}" +# create an instance of Stage from a JSON string +stage_instance = Stage.from_json(json) +# print the JSON string representation of the object +print(Stage.to_json()) + +# convert the object into a dict +stage_dict = stage_instance.to_dict() +# create an instance of Stage from a dict +stage_from_dict = Stage.from_dict(stage_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/StageConfiguration.md b/docs/reference/StageConfiguration.md new file mode 100644 index 00000000..3cf1fb26 --- /dev/null +++ b/docs/reference/StageConfiguration.md @@ -0,0 +1,29 @@ +# StageConfiguration + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**scope** | **str** | Scope to apply the policies for the given stage. An empty string or missing property implies the policies are always active. The scope is defined using a query language expression, which is a subset of the full metrics query language used in monitoring. | [optional] + +## Example + +```python +from sysdig_client.models.stage_configuration import StageConfiguration + +# TODO update the JSON string below +json = "{}" +# create an instance of StageConfiguration from a JSON string +stage_configuration_instance = StageConfiguration.from_json(json) +# print the JSON string representation of the object +print(StageConfiguration.to_json()) + +# convert the object into a dict +stage_configuration_dict = stage_configuration_instance.to_dict() +# create an instance of StageConfiguration from a dict +stage_configuration_from_dict = StageConfiguration.from_dict(stage_configuration_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/StatefulDetectionsContent.md b/docs/reference/StatefulDetectionsContent.md new file mode 100644 index 00000000..d962b3d1 --- /dev/null +++ b/docs/reference/StatefulDetectionsContent.md @@ -0,0 +1,40 @@ +# StatefulDetectionsContent + +Stateful detections event content + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**EventContentType**](EventContentType.md) | | +**rule_name** | **str** | Name of the rule the event is generated after | +**rule_type** | **int** | Rule type: - 1 - List matching - process - 2 - List matching - container - 3 - List matching - file - 4 - List matching - network - 5 - List matching - syscall - 6 - Falco - 7 - Drift detection - 8 - Malware detection - 11 - ML - Cryptominer detection - 13 - ML - AWS anomalous login - 14 - ML - Okta anomalous login | +**rule_tags** | **List[str]** | The tags attached to the rule | +**policy_id** | **int** | ID of the policy that generated the event | +**policy_origin** | [**PolicyOrigin**](PolicyOrigin.md) | | +**policy_notification_channel_ids** | **List[int]** | The list of notification channels where an alert is sent after event is generated. Doesn't account for aggregations and eventual thresholds. | +**output** | **str** | Event output, generated after the configured rule | +**stats** | [**List[StatsInner]**](StatsInner.md) | An array representing the relevant APIs and how often they were called in the time window. | [optional] +**sequence** | [**List[SequenceInner]**](SequenceInner.md) | The sequence of events that occurred to trigger the event. The sequence is represented as a list of events, where each event is a map of key-value pairs. | [optional] +**fields** | [**StatefulDetectionsContentAllOfFields**](StatefulDetectionsContentAllOfFields.md) | | + +## Example + +```python +from sysdig_client.models.stateful_detections_content import StatefulDetectionsContent + +# TODO update the JSON string below +json = "{}" +# create an instance of StatefulDetectionsContent from a JSON string +stateful_detections_content_instance = StatefulDetectionsContent.from_json(json) +# print the JSON string representation of the object +print(StatefulDetectionsContent.to_json()) + +# convert the object into a dict +stateful_detections_content_dict = stateful_detections_content_instance.to_dict() +# create an instance of StatefulDetectionsContent from a dict +stateful_detections_content_from_dict = StatefulDetectionsContent.from_dict(stateful_detections_content_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/StatefulDetectionsContentAllOfFields.md b/docs/reference/StatefulDetectionsContentAllOfFields.md new file mode 100644 index 00000000..31a26955 --- /dev/null +++ b/docs/reference/StatefulDetectionsContentAllOfFields.md @@ -0,0 +1,28 @@ +# StatefulDetectionsContentAllOfFields + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.stateful_detections_content_all_of_fields import StatefulDetectionsContentAllOfFields + +# TODO update the JSON string below +json = "{}" +# create an instance of StatefulDetectionsContentAllOfFields from a JSON string +stateful_detections_content_all_of_fields_instance = StatefulDetectionsContentAllOfFields.from_json(json) +# print the JSON string representation of the object +print(StatefulDetectionsContentAllOfFields.to_json()) + +# convert the object into a dict +stateful_detections_content_all_of_fields_dict = stateful_detections_content_all_of_fields_instance.to_dict() +# create an instance of StatefulDetectionsContentAllOfFields from a dict +stateful_detections_content_all_of_fields_from_dict = StatefulDetectionsContentAllOfFields.from_dict(stateful_detections_content_all_of_fields_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/StatsInner.md b/docs/reference/StatsInner.md new file mode 100644 index 00000000..96d1d3c1 --- /dev/null +++ b/docs/reference/StatsInner.md @@ -0,0 +1,30 @@ +# StatsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**api** | **str** | | [optional] +**count** | **int** | | [optional] + +## Example + +```python +from sysdig_client.models.stats_inner import StatsInner + +# TODO update the JSON string below +json = "{}" +# create an instance of StatsInner from a JSON string +stats_inner_instance = StatsInner.from_json(json) +# print the JSON string representation of the object +print(StatsInner.to_json()) + +# convert the object into a dict +stats_inner_dict = stats_inner_instance.to_dict() +# create an instance of StatsInner from a dict +stats_inner_from_dict = StatsInner.from_dict(stats_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SubmitActionExecutionRequest.md b/docs/reference/SubmitActionExecutionRequest.md new file mode 100644 index 00000000..36298e5e --- /dev/null +++ b/docs/reference/SubmitActionExecutionRequest.md @@ -0,0 +1,32 @@ +# SubmitActionExecutionRequest + +The request for the execution of a Response Action. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**action_type** | **str** | The name of the Response Action to execute. It may be one of the following: - KILL_PROCESS - KILL_CONTAINER - STOP_CONTAINER - PAUSE_CONTAINER - FILE_QUARANTINE - FILE_ACQUIRE - UNPAUSE_CONTAINER - FILE_UNQUARANTINE - START_CONTAINER - DELETE_POD - ROLLOUT_RESTART - KUBERNETES_VOLUME_SNAPSHOT - KUBERNETES_DELETE_VOLUME_SNAPSHOT - GET_LOGS - ISOLATE_NETWORK - DELETE_NETWORK_POLICY The following actions serve as the undo for previous actions: - START_CONTAINER: undo for STOP_CONTAINER\\ - UNPAUSE_CONTAINER: undo for PAUSE_CONTAINER\\ - FILE_UNQUARANTINE: undo for FILE_QUARANTINE\\ - KUBERNETES_DELETE_VOLUME_SNAPSHOT: undo for KUBERNETES_VOLUME_SNAPSHOT\\ - DELETE_NETWORK_POLICY: undo for ISOLATE_NETWORK\\ Do not use undo actions in [submitActionExecutionv1](#tag/Response-actions/operation/submitActionExecutionv1). You can execute an undo actions using the service [undoActionExecutionV1](#tag/Response-actions/operation/undoActionExecutionV1). | +**caller_id** | **str** | The ID of the user that executed the Response action. | [optional] +**parameters** | [**Dict[str, ActionExecutionParameterValue]**](ActionExecutionParameterValue.md) | The parameters used to request the Response Action execution. | + +## Example + +```python +from sysdig_client.models.submit_action_execution_request import SubmitActionExecutionRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of SubmitActionExecutionRequest from a JSON string +submit_action_execution_request_instance = SubmitActionExecutionRequest.from_json(json) +# print the JSON string representation of the object +print(SubmitActionExecutionRequest.to_json()) + +# convert the object into a dict +submit_action_execution_request_dict = submit_action_execution_request_instance.to_dict() +# create an instance of SubmitActionExecutionRequest from a dict +submit_action_execution_request_from_dict = SubmitActionExecutionRequest.from_dict(submit_action_execution_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SupportedFilter.md b/docs/reference/SupportedFilter.md new file mode 100644 index 00000000..de3b9588 --- /dev/null +++ b/docs/reference/SupportedFilter.md @@ -0,0 +1,32 @@ +# SupportedFilter + +A supported field for filtering events. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Attribute onto which filtering is supported. | +**type** | [**SupportedFilterType**](SupportedFilterType.md) | | +**operands** | [**List[Operand]**](Operand.md) | The list of supported operands for filtering events. | [optional] + +## Example + +```python +from sysdig_client.models.supported_filter import SupportedFilter + +# TODO update the JSON string below +json = "{}" +# create an instance of SupportedFilter from a JSON string +supported_filter_instance = SupportedFilter.from_json(json) +# print the JSON string representation of the object +print(SupportedFilter.to_json()) + +# convert the object into a dict +supported_filter_dict = supported_filter_instance.to_dict() +# create an instance of SupportedFilter from a dict +supported_filter_from_dict = SupportedFilter.from_dict(supported_filter_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SupportedFilterType.md b/docs/reference/SupportedFilterType.md new file mode 100644 index 00000000..3ca6503a --- /dev/null +++ b/docs/reference/SupportedFilterType.md @@ -0,0 +1,17 @@ +# SupportedFilterType + +Data type for the attribute values. + +## Enum + +* `STRING` (value: `'string'`) + +* `IP` (value: `'ip'`) + +* `NUMBER` (value: `'number'`) + +* `DATE` (value: `'date'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SupportedFiltersResponse.md b/docs/reference/SupportedFiltersResponse.md new file mode 100644 index 00000000..75e16737 --- /dev/null +++ b/docs/reference/SupportedFiltersResponse.md @@ -0,0 +1,30 @@ +# SupportedFiltersResponse + +The list of supported attributes for filtering events. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[SupportedFilter]**](SupportedFilter.md) | The list of supported attributes for filtering events. | + +## Example + +```python +from sysdig_client.models.supported_filters_response import SupportedFiltersResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of SupportedFiltersResponse from a JSON string +supported_filters_response_instance = SupportedFiltersResponse.from_json(json) +# print the JSON string representation of the object +print(SupportedFiltersResponse.to_json()) + +# convert the object into a dict +supported_filters_response_dict = supported_filters_response_instance.to_dict() +# create an instance of SupportedFiltersResponse from a dict +supported_filters_response_from_dict = SupportedFiltersResponse.from_dict(supported_filters_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/SysQLApi.md b/docs/reference/SysQLApi.md new file mode 100644 index 00000000..dd7bbd3a --- /dev/null +++ b/docs/reference/SysQLApi.md @@ -0,0 +1,269 @@ +# sysdig_client.SysQLApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_sysql_schema**](SysQLApi.md#get_sysql_schema) | **GET** /api/sysql/v2/schema | Get SysQL Schema +[**query_sysql_get**](SysQLApi.md#query_sysql_get) | **GET** /api/sysql/v2/query | Execute SysQL query via GET +[**query_sysql_post**](SysQLApi.md#query_sysql_post) | **POST** /api/sysql/v2/query | Execute SysQL query via POST + + +# **get_sysql_schema** +> str get_sysql_schema() + +Get SysQL Schema + +Retrieve the schema information for all entities and their relationships in YAML format. +This endpoint returns the graph schema definition that describes available entities, +their fields, and relationships. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SysQLApi(api_client) + + try: + # Get SysQL Schema + api_response = api_instance.get_sysql_schema() + print("The response of SysQLApi->get_sysql_schema:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SysQLApi->get_sysql_schema: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +**str** + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Successfully retrieved the schema information. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **query_sysql_get** +> QueryResponse query_sysql_get(q, limit=limit, offset=offset, deterministic_order=deterministic_order) + +Execute SysQL query via GET + +[DEPRECATED] Retrieve resources from the graph datastore using the GET method. + +> The GET method for this endpoint is deprecated and will be removed in future versions. +> Please use the POST method instead, which provides better support for complex queries. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.query_response import QueryResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SysQLApi(api_client) + q = 'MATCH IAMUser AS a WHERE a.customerId = 1234567890 RETURN a.name AS name, a.arn AS arn;' # str | The SysQL statement. + limit = 50 # int | (optional) (default to 50) + offset = 0 # int | (optional) (default to 0) + deterministic_order = False # bool | (optional) (default to False) + + try: + # Execute SysQL query via GET + api_response = api_instance.query_sysql_get(q, limit=limit, offset=offset, deterministic_order=deterministic_order) + print("The response of SysQLApi->query_sysql_get:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SysQLApi->query_sysql_get: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **q** | **str**| The SysQL statement. | + **limit** | **int**| | [optional] [default to 50] + **offset** | **int**| | [optional] [default to 0] + **deterministic_order** | **bool**| | [optional] [default to False] + +### Return type + +[**QueryResponse**](QueryResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Successfully retrieved resources from the graph database using the provided SysQL statement. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **query_sysql_post** +> QueryResponse query_sysql_post(query_sysql_post_request) + +Execute SysQL query via POST + +Retrieve resources from the graph datastore using the POST method. + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.query_response import QueryResponse +from sysdig_client.models.query_sysql_post_request import QuerySysqlPostRequest +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.SysQLApi(api_client) + query_sysql_post_request = sysdig_client.QuerySysqlPostRequest() # QuerySysqlPostRequest | + + try: + # Execute SysQL query via POST + api_response = api_instance.query_sysql_post(query_sysql_post_request) + print("The response of SysQLApi->query_sysql_post:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling SysQLApi->query_sysql_post: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query_sysql_post_request** | [**QuerySysqlPostRequest**](QuerySysqlPostRequest.md)| | + +### Return type + +[**QueryResponse**](QueryResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Successfully retrieved resources from the graph database using the provided SysQL statement. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/TeamEmailNotificationChannelOptionsV1.md b/docs/reference/TeamEmailNotificationChannelOptionsV1.md new file mode 100644 index 00000000..2d38fed4 --- /dev/null +++ b/docs/reference/TeamEmailNotificationChannelOptionsV1.md @@ -0,0 +1,32 @@ +# TeamEmailNotificationChannelOptionsV1 + +The Team Email notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**team_id** | **int** | ID of team to notify | [optional] +**is_include_admin_users** | **bool** | Whether the admin users of the team should be notified or not | [optional] + +## Example + +```python +from sysdig_client.models.team_email_notification_channel_options_v1 import TeamEmailNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of TeamEmailNotificationChannelOptionsV1 from a JSON string +team_email_notification_channel_options_v1_instance = TeamEmailNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(TeamEmailNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +team_email_notification_channel_options_v1_dict = team_email_notification_channel_options_v1_instance.to_dict() +# create an instance of TeamEmailNotificationChannelOptionsV1 from a dict +team_email_notification_channel_options_v1_from_dict = TeamEmailNotificationChannelOptionsV1.from_dict(team_email_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/TeamEmailNotificationChannelResponseV1.md b/docs/reference/TeamEmailNotificationChannelResponseV1.md new file mode 100644 index 00000000..f708fb89 --- /dev/null +++ b/docs/reference/TeamEmailNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# TeamEmailNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**TeamEmailNotificationChannelOptionsV1**](TeamEmailNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.team_email_notification_channel_response_v1 import TeamEmailNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of TeamEmailNotificationChannelResponseV1 from a JSON string +team_email_notification_channel_response_v1_instance = TeamEmailNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(TeamEmailNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +team_email_notification_channel_response_v1_dict = team_email_notification_channel_response_v1_instance.to_dict() +# create an instance of TeamEmailNotificationChannelResponseV1 from a dict +team_email_notification_channel_response_v1_from_dict = TeamEmailNotificationChannelResponseV1.from_dict(team_email_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/TeamMapV1.md b/docs/reference/TeamMapV1.md new file mode 100644 index 00000000..bea3ba3e --- /dev/null +++ b/docs/reference/TeamMapV1.md @@ -0,0 +1,31 @@ +# TeamMapV1 + +Determines the teams to which a group is mapped. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_for_all_teams** | **bool** | If true, the group is mapped to all teams. | [optional] +**team_ids** | **List[int]** | The list of teams to which group is mapped. It is empty when 'isForAllTeams' is true, otherwise it should have at least 1 element. | [optional] + +## Example + +```python +from sysdig_client.models.team_map_v1 import TeamMapV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of TeamMapV1 from a JSON string +team_map_v1_instance = TeamMapV1.from_json(json) +# print the JSON string representation of the object +print(TeamMapV1.to_json()) + +# convert the object into a dict +team_map_v1_dict = team_map_v1_instance.to_dict() +# create an instance of TeamMapV1 from a dict +team_map_v1_from_dict = TeamMapV1.from_dict(team_map_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/TeamResponseV1.md b/docs/reference/TeamResponseV1.md new file mode 100644 index 00000000..69bc25e4 --- /dev/null +++ b/docs/reference/TeamResponseV1.md @@ -0,0 +1,44 @@ +# TeamResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**name** | **str** | The name of the team. It must be unique. | [optional] +**description** | **str** | A description of the team explaining what is it used for. | [optional] +**is_immutable_team** | **bool** | Specifies if the team is immutable. This is true if the team was created by the system with full access. It cannot be modified. | [optional] +**is_default_team** | **bool** | Specifies if the team is the default team. The default team is used to automatically assign new users to a team. | [optional] +**standard_team_role** | [**TeamRoleV1**](TeamRoleV1.md) | The standard team role assigned by default to users added to this team. Mutually exclusive with 'customTeamRoleId'. | [optional] +**custom_team_role_id** | **int** | The custom team role assigned by default to users added to this team. Mutually exclusive with 'standardTeamRoleId'. | [optional] +**product** | [**Product**](Product.md) | The product to which the team is assigned to. | [optional] +**ui_settings** | [**UiSettingsV1**](UiSettingsV1.md) | | [optional] +**is_all_zones** | **bool** | 'True' if the users belonging to this team have access to all zones. Mutually exclusive with 'zoneIds'. | [optional] +**zone_ids** | **List[int]** | The list of zones that users assigned to this team will have access to. Mutually exclusive with 'allZones'. | [optional] +**scopes** | [**List[ScopeV1]**](ScopeV1.md) | The scopes available to the users of this team. | [optional] +**additional_team_permissions** | [**AdditionalTeamPermissionsV1**](AdditionalTeamPermissionsV1.md) | | [optional] +**date_created** | **datetime** | The date (in ISO 8601 format) when this team was created. | [optional] +**last_updated** | **datetime** | The date (in ISO 8601 format) when this team was last updated. | [optional] +**version** | **int** | | [optional] + +## Example + +```python +from sysdig_client.models.team_response_v1 import TeamResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of TeamResponseV1 from a JSON string +team_response_v1_instance = TeamResponseV1.from_json(json) +# print the JSON string representation of the object +print(TeamResponseV1.to_json()) + +# convert the object into a dict +team_response_v1_dict = team_response_v1_instance.to_dict() +# create an instance of TeamResponseV1 from a dict +team_response_v1_from_dict = TeamResponseV1.from_dict(team_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/TeamRoleV1.md b/docs/reference/TeamRoleV1.md new file mode 100644 index 00000000..202ac508 --- /dev/null +++ b/docs/reference/TeamRoleV1.md @@ -0,0 +1,21 @@ +# TeamRoleV1 + +The standard team role provided by Sysdig. + +## Enum + +* `ROLE_TEAM_NONE` (value: `'ROLE_TEAM_NONE'`) + +* `ROLE_TEAM_READ` (value: `'ROLE_TEAM_READ'`) + +* `ROLE_TEAM_SERVICE_MANAGER` (value: `'ROLE_TEAM_SERVICE_MANAGER'`) + +* `ROLE_TEAM_STANDARD` (value: `'ROLE_TEAM_STANDARD'`) + +* `ROLE_TEAM_EDIT` (value: `'ROLE_TEAM_EDIT'`) + +* `ROLE_TEAM_MANAGER` (value: `'ROLE_TEAM_MANAGER'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/TeamUserResponseV1.md b/docs/reference/TeamUserResponseV1.md new file mode 100644 index 00000000..be6f23bb --- /dev/null +++ b/docs/reference/TeamUserResponseV1.md @@ -0,0 +1,32 @@ +# TeamUserResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | | [optional] +**user_id** | **int** | | [optional] +**standard_team_role** | [**TeamRoleV1**](TeamRoleV1.md) | | [optional] +**custom_team_role_id** | **int** | | [optional] + +## Example + +```python +from sysdig_client.models.team_user_response_v1 import TeamUserResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of TeamUserResponseV1 from a JSON string +team_user_response_v1_instance = TeamUserResponseV1.from_json(json) +# print the JSON string representation of the object +print(TeamUserResponseV1.to_json()) + +# convert the object into a dict +team_user_response_v1_dict = team_user_response_v1_instance.to_dict() +# create an instance of TeamUserResponseV1 from a dict +team_user_response_v1_from_dict = TeamUserResponseV1.from_dict(team_user_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/TeamsApi.md b/docs/reference/TeamsApi.md new file mode 100644 index 00000000..9670d85a --- /dev/null +++ b/docs/reference/TeamsApi.md @@ -0,0 +1,824 @@ +# sysdig_client.TeamsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_team_v1**](TeamsApi.md#create_team_v1) | **POST** /platform/v1/teams | Create Team +[**delete_team_by_id_v1**](TeamsApi.md#delete_team_by_id_v1) | **DELETE** /platform/v1/teams/{teamId} | Delete Team +[**delete_team_user_by_id_v1**](TeamsApi.md#delete_team_user_by_id_v1) | **DELETE** /platform/v1/teams/{teamId}/users/{userId} | Delete Membership +[**get_team_by_id_v1**](TeamsApi.md#get_team_by_id_v1) | **GET** /platform/v1/teams/{teamId} | Get Team +[**get_team_user_by_id_v1**](TeamsApi.md#get_team_user_by_id_v1) | **GET** /platform/v1/teams/{teamId}/users/{userId} | Get Membership +[**get_team_users_v1**](TeamsApi.md#get_team_users_v1) | **GET** /platform/v1/teams/{teamId}/users | List Memberships +[**get_teams_v1**](TeamsApi.md#get_teams_v1) | **GET** /platform/v1/teams | List Teams +[**save_team_user_v1**](TeamsApi.md#save_team_user_v1) | **PUT** /platform/v1/teams/{teamId}/users/{userId} | Save Membership +[**update_team_by_id_v1**](TeamsApi.md#update_team_by_id_v1) | **PUT** /platform/v1/teams/{teamId} | Update Team + + +# **create_team_v1** +> TeamResponseV1 create_team_v1(create_team_request_v1=create_team_request_v1) + +Create Team + +Create a new team.\ +\ +**Required permissions:** _teams.create_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_team_request_v1 import CreateTeamRequestV1 +from sysdig_client.models.team_response_v1 import TeamResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.TeamsApi(api_client) + create_team_request_v1 = sysdig_client.CreateTeamRequestV1() # CreateTeamRequestV1 | The payload required to create a new team. (optional) + + try: + # Create Team + api_response = api_instance.create_team_v1(create_team_request_v1=create_team_request_v1) + print("The response of TeamsApi->create_team_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling TeamsApi->create_team_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_team_request_v1** | [**CreateTeamRequestV1**](CreateTeamRequestV1.md)| The payload required to create a new team. | [optional] + +### Return type + +[**TeamResponseV1**](TeamResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Team created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_team_by_id_v1** +> delete_team_by_id_v1(team_id) + +Delete Team + +Delete a team by its ID.\ +\ +**Required permissions:** _teams.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.TeamsApi(api_client) + team_id = 56 # int | The team ID. + + try: + # Delete Team + api_instance.delete_team_by_id_v1(team_id) + except Exception as e: + print("Exception when calling TeamsApi->delete_team_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Team deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_team_user_by_id_v1** +> delete_team_user_by_id_v1(team_id, user_id) + +Delete Membership + +Delete a membership defined by its ID.\ +\ +**Required permissions:** _memberships.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.TeamsApi(api_client) + team_id = 56 # int | The team ID. + user_id = 56 # int | The user ID. + + try: + # Delete Membership + api_instance.delete_team_user_by_id_v1(team_id, user_id) + except Exception as e: + print("Exception when calling TeamsApi->delete_team_user_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **user_id** | **int**| The user ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Membership deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_team_by_id_v1** +> TeamResponseV1 get_team_by_id_v1(team_id) + +Get Team + +Return a team by ID.\ +\ +**Required permissions:** _customer-teams.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.team_response_v1 import TeamResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.TeamsApi(api_client) + team_id = 56 # int | The team ID. + + try: + # Get Team + api_response = api_instance.get_team_by_id_v1(team_id) + print("The response of TeamsApi->get_team_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling TeamsApi->get_team_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + +### Return type + +[**TeamResponseV1**](TeamResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Team found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_team_user_by_id_v1** +> TeamUserResponseV1 get_team_user_by_id_v1(team_id, user_id) + +Get Membership + +Return a membership by its ID.\ +\ +**Required permissions:** _memberships.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.team_user_response_v1 import TeamUserResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.TeamsApi(api_client) + team_id = 56 # int | The team ID. + user_id = 56 # int | The user ID. + + try: + # Get Membership + api_response = api_instance.get_team_user_by_id_v1(team_id, user_id) + print("The response of TeamsApi->get_team_user_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling TeamsApi->get_team_user_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **user_id** | **int**| The user ID. | + +### Return type + +[**TeamUserResponseV1**](TeamUserResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Membership found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_team_users_v1** +> GetTeamUsersPaginatedResponseV1 get_team_users_v1(team_id, offset=offset, limit=limit, with_admin_users=with_admin_users) + +List Memberships + +Retrieve a paginated list of memberships in a given team ID.\ +\ +**Required permissions:** _memberships.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_team_users_paginated_response_v1 import GetTeamUsersPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.TeamsApi(api_client) + team_id = 56 # int | The team ID. + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + with_admin_users = False # bool | Include admin users in the response. (optional) (default to False) + + try: + # List Memberships + api_response = api_instance.get_team_users_v1(team_id, offset=offset, limit=limit, with_admin_users=with_admin_users) + print("The response of TeamsApi->get_team_users_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling TeamsApi->get_team_users_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **with_admin_users** | **bool**| Include admin users in the response. | [optional] [default to False] + +### Return type + +[**GetTeamUsersPaginatedResponseV1**](GetTeamUsersPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The memberships page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_teams_v1** +> GetTeamsPaginatedResponseV1 get_teams_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + +List Teams + +Retrieve a paginated list of teams.\ +\ +**Required permissions:** _customer-teams.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_teams_paginated_response_v1 import GetTeamsPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.TeamsApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + orderby = '' # str | The order by field separated by a colon for the direction (optional) (default to '') + filter = '' # str | The filter by field separated by a colon for the filter value (optional) (default to '') + + try: + # List Teams + api_response = api_instance.get_teams_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + print("The response of TeamsApi->get_teams_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling TeamsApi->get_teams_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **orderby** | **str**| The order by field separated by a colon for the direction | [optional] [default to ''] + **filter** | **str**| The filter by field separated by a colon for the filter value | [optional] [default to ''] + +### Return type + +[**GetTeamsPaginatedResponseV1**](GetTeamsPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The teams page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **save_team_user_v1** +> TeamUserResponseV1 save_team_user_v1(team_id, user_id, save_team_user_request_v1=save_team_user_request_v1) + +Save Membership + +Add or update a membership. + +| Permission | Description | +| -----------------------| --------------------------------------------------------------------------------------------------------| +| memberships.edit | Required to create a new membership. | +| memberships-roles.edit | Required to change roles of an existing membership or to create a new membership with a specific role. | + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.save_team_user_request_v1 import SaveTeamUserRequestV1 +from sysdig_client.models.team_user_response_v1 import TeamUserResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.TeamsApi(api_client) + team_id = 56 # int | The team ID. + user_id = 56 # int | The user ID. + save_team_user_request_v1 = sysdig_client.SaveTeamUserRequestV1() # SaveTeamUserRequestV1 | (optional) + + try: + # Save Membership + api_response = api_instance.save_team_user_v1(team_id, user_id, save_team_user_request_v1=save_team_user_request_v1) + print("The response of TeamsApi->save_team_user_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling TeamsApi->save_team_user_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **user_id** | **int**| The user ID. | + **save_team_user_request_v1** | [**SaveTeamUserRequestV1**](SaveTeamUserRequestV1.md)| | [optional] + +### Return type + +[**TeamUserResponseV1**](TeamUserResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Membership updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**201** | Membership created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_team_by_id_v1** +> TeamResponseV1 update_team_by_id_v1(team_id, update_team_request_v1=update_team_request_v1) + +Update Team + +Update a team by its ID.\ +\ +**Required permissions:** _teams.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.team_response_v1 import TeamResponseV1 +from sysdig_client.models.update_team_request_v1 import UpdateTeamRequestV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.TeamsApi(api_client) + team_id = 56 # int | The team ID. + update_team_request_v1 = sysdig_client.UpdateTeamRequestV1() # UpdateTeamRequestV1 | (optional) + + try: + # Update Team + api_response = api_instance.update_team_by_id_v1(team_id, update_team_request_v1=update_team_request_v1) + print("The response of TeamsApi->update_team_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling TeamsApi->update_team_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **team_id** | **int**| The team ID. | + **update_team_request_v1** | [**UpdateTeamRequestV1**](UpdateTeamRequestV1.md)| | [optional] + +### Return type + +[**TeamResponseV1**](TeamResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Team updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/TimeFrame.md b/docs/reference/TimeFrame.md new file mode 100644 index 00000000..f3ac8003 --- /dev/null +++ b/docs/reference/TimeFrame.md @@ -0,0 +1,31 @@ +# TimeFrame + +The start and end time of the request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**var_from** | **int** | | [optional] +**to** | **int** | | [optional] + +## Example + +```python +from sysdig_client.models.time_frame import TimeFrame + +# TODO update the JSON string below +json = "{}" +# create an instance of TimeFrame from a JSON string +time_frame_instance = TimeFrame.from_json(json) +# print the JSON string representation of the object +print(TimeFrame.to_json()) + +# convert the object into a dict +time_frame_dict = time_frame_instance.to_dict() +# create an instance of TimeFrame from a dict +time_frame_from_dict = TimeFrame.from_dict(time_frame_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Types.md b/docs/reference/Types.md new file mode 100644 index 00000000..bb50dd56 --- /dev/null +++ b/docs/reference/Types.md @@ -0,0 +1,17 @@ +# Types + +The entry types to filter. This query parameter can be set multiple times to filter for different entry types. + +## Enum + +* `COMMANDS` (value: `'commands'`) + +* `CONNECTIONS` (value: `'connections'`) + +* `KUBERNETES` (value: `'kubernetes'`) + +* `FILEACCESSES` (value: `'fileaccesses'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UiSettingsV1.md b/docs/reference/UiSettingsV1.md new file mode 100644 index 00000000..e3adc249 --- /dev/null +++ b/docs/reference/UiSettingsV1.md @@ -0,0 +1,31 @@ +# UiSettingsV1 + +UI related settings. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**entry_point** | [**EntryPointV1**](EntryPointV1.md) | | [optional] +**theme** | **str** | The color assigned to the team. | [optional] + +## Example + +```python +from sysdig_client.models.ui_settings_v1 import UiSettingsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UiSettingsV1 from a JSON string +ui_settings_v1_instance = UiSettingsV1.from_json(json) +# print the JSON string representation of the object +print(UiSettingsV1.to_json()) + +# convert the object into a dict +ui_settings_v1_dict = ui_settings_v1_instance.to_dict() +# create an instance of UiSettingsV1 from a dict +ui_settings_v1_from_dict = UiSettingsV1.from_dict(ui_settings_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UnitPricingV1.md b/docs/reference/UnitPricingV1.md new file mode 100644 index 00000000..dd1146e1 --- /dev/null +++ b/docs/reference/UnitPricingV1.md @@ -0,0 +1,34 @@ +# UnitPricingV1 + +The unit pricing configuration used to compute costs. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**cpu** | **float** | Hourly cost of one CPU. | +**ram** | **float** | Hourly cost of one GB of RAM. | +**storage** | **float** | Hourly cost of one GB of storage. | +**spot_cpu** | **float** | Hourly cost of one CPU for a spot node. | [optional] +**spot_ram** | **float** | Hourly cost of one GB of RAM for a spot node. | [optional] + +## Example + +```python +from sysdig_client.models.unit_pricing_v1 import UnitPricingV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UnitPricingV1 from a JSON string +unit_pricing_v1_instance = UnitPricingV1.from_json(json) +# print the JSON string representation of the object +print(UnitPricingV1.to_json()) + +# convert the object into a dict +unit_pricing_v1_dict = unit_pricing_v1_instance.to_dict() +# create an instance of UnitPricingV1 from a dict +unit_pricing_v1_from_dict = UnitPricingV1.from_dict(unit_pricing_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateAccessKeyRequestV1.md b/docs/reference/UpdateAccessKeyRequestV1.md new file mode 100644 index 00000000..6f1abd46 --- /dev/null +++ b/docs/reference/UpdateAccessKeyRequestV1.md @@ -0,0 +1,34 @@ +# UpdateAccessKeyRequestV1 + +Update access key request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**agent_limit** | **int** | Maximum number of agents that can be connected with the access key | [optional] +**agent_reservation** | **int** | Number of agents that are guaranteed to be available for the access key | [optional] +**team_id** | **int** | ID of team that owns the access key | [optional] +**is_enabled** | **bool** | Flag that indicates if the access key should be disabled or enabled | +**metadata** | **Dict[str, str]** | Access key metadata (maximum of 20 key-value pairs where key can be up to 25 characters long and value can be up to 50 characters long) | [optional] + +## Example + +```python +from sysdig_client.models.update_access_key_request_v1 import UpdateAccessKeyRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateAccessKeyRequestV1 from a JSON string +update_access_key_request_v1_instance = UpdateAccessKeyRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateAccessKeyRequestV1.to_json()) + +# convert the object into a dict +update_access_key_request_v1_dict = update_access_key_request_v1_instance.to_dict() +# create an instance of UpdateAccessKeyRequestV1 from a dict +update_access_key_request_v1_from_dict = UpdateAccessKeyRequestV1.from_dict(update_access_key_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateAmazonSqsIntegrationRequest.md b/docs/reference/UpdateAmazonSqsIntegrationRequest.md new file mode 100644 index 00000000..afb48177 --- /dev/null +++ b/docs/reference/UpdateAmazonSqsIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateAmazonSqsIntegrationRequest + +Update Amazon SQS Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**AmazonSQSUpdateConnectionInfo**](AmazonSQSUpdateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.update_amazon_sqs_integration_request import UpdateAmazonSqsIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateAmazonSqsIntegrationRequest from a JSON string +update_amazon_sqs_integration_request_instance = UpdateAmazonSqsIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateAmazonSqsIntegrationRequest.to_json()) + +# convert the object into a dict +update_amazon_sqs_integration_request_dict = update_amazon_sqs_integration_request_instance.to_dict() +# create an instance of UpdateAmazonSqsIntegrationRequest from a dict +update_amazon_sqs_integration_request_from_dict = UpdateAmazonSqsIntegrationRequest.from_dict(update_amazon_sqs_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateChronicleIntegrationConnInfo.md b/docs/reference/UpdateChronicleIntegrationConnInfo.md new file mode 100644 index 00000000..54536326 --- /dev/null +++ b/docs/reference/UpdateChronicleIntegrationConnInfo.md @@ -0,0 +1,31 @@ +# UpdateChronicleIntegrationConnInfo + +Update Chronicle Integration Connection Info + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**region** | **str** | The target region | [optional] [default to 'us'] +**api_key** | **str** | The Chronicle v1 API key | [optional] + +## Example + +```python +from sysdig_client.models.update_chronicle_integration_conn_info import UpdateChronicleIntegrationConnInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateChronicleIntegrationConnInfo from a JSON string +update_chronicle_integration_conn_info_instance = UpdateChronicleIntegrationConnInfo.from_json(json) +# print the JSON string representation of the object +print(UpdateChronicleIntegrationConnInfo.to_json()) + +# convert the object into a dict +update_chronicle_integration_conn_info_dict = update_chronicle_integration_conn_info_instance.to_dict() +# create an instance of UpdateChronicleIntegrationConnInfo from a dict +update_chronicle_integration_conn_info_from_dict = UpdateChronicleIntegrationConnInfo.from_dict(update_chronicle_integration_conn_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateChronicleIntegrationConnInfoV2.md b/docs/reference/UpdateChronicleIntegrationConnInfoV2.md new file mode 100644 index 00000000..52e1daf7 --- /dev/null +++ b/docs/reference/UpdateChronicleIntegrationConnInfoV2.md @@ -0,0 +1,33 @@ +# UpdateChronicleIntegrationConnInfoV2 + +Update Chronicle Integration Connection V2 Info + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**region** | **str** | The target region | [optional] [default to 'us'] +**chronicle_customer_id** | **str** | Unique identifier (UUID) corresponding to a particular Chronicle instance | +**namespace** | **str** | User-configured environment namespace to identify the data domain the logs originated from | +**credentials_o_auth2** | **str** | The Chronicle v2 OAuth2 credentials | [optional] + +## Example + +```python +from sysdig_client.models.update_chronicle_integration_conn_info_v2 import UpdateChronicleIntegrationConnInfoV2 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateChronicleIntegrationConnInfoV2 from a JSON string +update_chronicle_integration_conn_info_v2_instance = UpdateChronicleIntegrationConnInfoV2.from_json(json) +# print the JSON string representation of the object +print(UpdateChronicleIntegrationConnInfoV2.to_json()) + +# convert the object into a dict +update_chronicle_integration_conn_info_v2_dict = update_chronicle_integration_conn_info_v2_instance.to_dict() +# create an instance of UpdateChronicleIntegrationConnInfoV2 from a dict +update_chronicle_integration_conn_info_v2_from_dict = UpdateChronicleIntegrationConnInfoV2.from_dict(update_chronicle_integration_conn_info_v2_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateChronicleIntegrationRequest.md b/docs/reference/UpdateChronicleIntegrationRequest.md new file mode 100644 index 00000000..7886ff62 --- /dev/null +++ b/docs/reference/UpdateChronicleIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateChronicleIntegrationRequest + +Update Chronicle Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**ChronicleUpdateConnectionInfo**](ChronicleUpdateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.update_chronicle_integration_request import UpdateChronicleIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateChronicleIntegrationRequest from a JSON string +update_chronicle_integration_request_instance = UpdateChronicleIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateChronicleIntegrationRequest.to_json()) + +# convert the object into a dict +update_chronicle_integration_request_dict = update_chronicle_integration_request_instance.to_dict() +# create an instance of UpdateChronicleIntegrationRequest from a dict +update_chronicle_integration_request_from_dict = UpdateChronicleIntegrationRequest.from_dict(update_chronicle_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateCustomWebhookNotificationChannelRequestV1.md b/docs/reference/UpdateCustomWebhookNotificationChannelRequestV1.md new file mode 100644 index 00000000..58b6aa49 --- /dev/null +++ b/docs/reference/UpdateCustomWebhookNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateCustomWebhookNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**CustomWebhookNotificationChannelOptionsV1**](CustomWebhookNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_custom_webhook_notification_channel_request_v1 import UpdateCustomWebhookNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateCustomWebhookNotificationChannelRequestV1 from a JSON string +update_custom_webhook_notification_channel_request_v1_instance = UpdateCustomWebhookNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateCustomWebhookNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_custom_webhook_notification_channel_request_v1_dict = update_custom_webhook_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateCustomWebhookNotificationChannelRequestV1 from a dict +update_custom_webhook_notification_channel_request_v1_from_dict = UpdateCustomWebhookNotificationChannelRequestV1.from_dict(update_custom_webhook_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateElasticsearchIntegrationRequest.md b/docs/reference/UpdateElasticsearchIntegrationRequest.md new file mode 100644 index 00000000..527be418 --- /dev/null +++ b/docs/reference/UpdateElasticsearchIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateElasticsearchIntegrationRequest + +Update Elasticsearch Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**UpdateElasticsearchIntegrationRequestAllOfConnectionInfo**](UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.update_elasticsearch_integration_request import UpdateElasticsearchIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateElasticsearchIntegrationRequest from a JSON string +update_elasticsearch_integration_request_instance = UpdateElasticsearchIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateElasticsearchIntegrationRequest.to_json()) + +# convert the object into a dict +update_elasticsearch_integration_request_dict = update_elasticsearch_integration_request_instance.to_dict() +# create an instance of UpdateElasticsearchIntegrationRequest from a dict +update_elasticsearch_integration_request_from_dict = UpdateElasticsearchIntegrationRequest.from_dict(update_elasticsearch_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.md b/docs/reference/UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.md new file mode 100644 index 00000000..715bc6c4 --- /dev/null +++ b/docs/reference/UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.md @@ -0,0 +1,34 @@ +# UpdateElasticsearchIntegrationRequestAllOfConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | Elasticsearch instance endpoint URL | +**index** | **str** | Name of the index to store the data in | +**is_insecure** | **bool** | Don't verify TLS certificate | [optional] [default to False] +**auth** | **str** | Authentication method | [optional] +**format** | **str** | If specified, transforms `content.fields` and `labels` * `KV_PAIRS` - from objects (i.e. `{\"foo\": \"bar\", ...}`) to arrays of objects with \"key\" and \"value\" properties {i.e. `[{\"key\" : \"foo\", \"value\": \"bar\"}, ...]`) | [optional] +**secret** | **str** | Authentication secret. To be set if auth is specified | [optional] + +## Example + +```python +from sysdig_client.models.update_elasticsearch_integration_request_all_of_connection_info import UpdateElasticsearchIntegrationRequestAllOfConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateElasticsearchIntegrationRequestAllOfConnectionInfo from a JSON string +update_elasticsearch_integration_request_all_of_connection_info_instance = UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.to_json()) + +# convert the object into a dict +update_elasticsearch_integration_request_all_of_connection_info_dict = update_elasticsearch_integration_request_all_of_connection_info_instance.to_dict() +# create an instance of UpdateElasticsearchIntegrationRequestAllOfConnectionInfo from a dict +update_elasticsearch_integration_request_all_of_connection_info_from_dict = UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.from_dict(update_elasticsearch_integration_request_all_of_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateEmailNotificationChannelRequestV1.md b/docs/reference/UpdateEmailNotificationChannelRequestV1.md new file mode 100644 index 00000000..f2b1cca9 --- /dev/null +++ b/docs/reference/UpdateEmailNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateEmailNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**EmailNotificationChannelOptionsV1**](EmailNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_email_notification_channel_request_v1 import UpdateEmailNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateEmailNotificationChannelRequestV1 from a JSON string +update_email_notification_channel_request_v1_instance = UpdateEmailNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateEmailNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_email_notification_channel_request_v1_dict = update_email_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateEmailNotificationChannelRequestV1 from a dict +update_email_notification_channel_request_v1_from_dict = UpdateEmailNotificationChannelRequestV1.from_dict(update_email_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateGchatNotificationChannelRequestV1.md b/docs/reference/UpdateGchatNotificationChannelRequestV1.md new file mode 100644 index 00000000..b8acd0f4 --- /dev/null +++ b/docs/reference/UpdateGchatNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateGchatNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**GchatNotificationChannelOptionsV1**](GchatNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_gchat_notification_channel_request_v1 import UpdateGchatNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateGchatNotificationChannelRequestV1 from a JSON string +update_gchat_notification_channel_request_v1_instance = UpdateGchatNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateGchatNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_gchat_notification_channel_request_v1_dict = update_gchat_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateGchatNotificationChannelRequestV1 from a dict +update_gchat_notification_channel_request_v1_from_dict = UpdateGchatNotificationChannelRequestV1.from_dict(update_gchat_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateGooglePubSubIntegrationRequest.md b/docs/reference/UpdateGooglePubSubIntegrationRequest.md new file mode 100644 index 00000000..fd0fb3e7 --- /dev/null +++ b/docs/reference/UpdateGooglePubSubIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateGooglePubSubIntegrationRequest + +Update Google Pub/Sub Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**GooglePubSubCreateConnectionInfo1**](GooglePubSubCreateConnectionInfo1.md) | | + +## Example + +```python +from sysdig_client.models.update_google_pub_sub_integration_request import UpdateGooglePubSubIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateGooglePubSubIntegrationRequest from a JSON string +update_google_pub_sub_integration_request_instance = UpdateGooglePubSubIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateGooglePubSubIntegrationRequest.to_json()) + +# convert the object into a dict +update_google_pub_sub_integration_request_dict = update_google_pub_sub_integration_request_instance.to_dict() +# create an instance of UpdateGooglePubSubIntegrationRequest from a dict +update_google_pub_sub_integration_request_from_dict = UpdateGooglePubSubIntegrationRequest.from_dict(update_google_pub_sub_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateGoogleSccIntegrationRequest.md b/docs/reference/UpdateGoogleSccIntegrationRequest.md new file mode 100644 index 00000000..c10af90b --- /dev/null +++ b/docs/reference/UpdateGoogleSccIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateGoogleSccIntegrationRequest + +Update Google SCC Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**GoogleSCCCreateConnectionInfo1**](GoogleSCCCreateConnectionInfo1.md) | | + +## Example + +```python +from sysdig_client.models.update_google_scc_integration_request import UpdateGoogleSccIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateGoogleSccIntegrationRequest from a JSON string +update_google_scc_integration_request_instance = UpdateGoogleSccIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateGoogleSccIntegrationRequest.to_json()) + +# convert the object into a dict +update_google_scc_integration_request_dict = update_google_scc_integration_request_instance.to_dict() +# create an instance of UpdateGoogleSccIntegrationRequest from a dict +update_google_scc_integration_request_from_dict = UpdateGoogleSccIntegrationRequest.from_dict(update_google_scc_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateGroupMappingRequestV1.md b/docs/reference/UpdateGroupMappingRequestV1.md new file mode 100644 index 00000000..be9df70a --- /dev/null +++ b/docs/reference/UpdateGroupMappingRequestV1.md @@ -0,0 +1,34 @@ +# UpdateGroupMappingRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**group_name** | **str** | The group name matching the external provider name. | +**standard_team_role** | [**TeamRoleV1**](TeamRoleV1.md) | The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**. | [optional] +**custom_team_role_id** | **int** | The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. | [optional] +**is_admin** | **bool** | Flag that indicates if the group is an admin group. | +**team_map** | [**TeamMapV1**](TeamMapV1.md) | | +**weight** | **int** | The weight of the group mapping that is used to determine the priority - a lower number has higher priority. | [default to 32767] + +## Example + +```python +from sysdig_client.models.update_group_mapping_request_v1 import UpdateGroupMappingRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateGroupMappingRequestV1 from a JSON string +update_group_mapping_request_v1_instance = UpdateGroupMappingRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateGroupMappingRequestV1.to_json()) + +# convert the object into a dict +update_group_mapping_request_v1_dict = update_group_mapping_request_v1_instance.to_dict() +# create an instance of UpdateGroupMappingRequestV1 from a dict +update_group_mapping_request_v1_from_dict = UpdateGroupMappingRequestV1.from_dict(update_group_mapping_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateIbmEventNotificationsNotificationChannelRequestV1.md b/docs/reference/UpdateIbmEventNotificationsNotificationChannelRequestV1.md new file mode 100644 index 00000000..1f688ce4 --- /dev/null +++ b/docs/reference/UpdateIbmEventNotificationsNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateIbmEventNotificationsNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**IbmEventNotificationsNotificationChannelOptionsV1**](IbmEventNotificationsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_ibm_event_notifications_notification_channel_request_v1 import UpdateIbmEventNotificationsNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateIbmEventNotificationsNotificationChannelRequestV1 from a JSON string +update_ibm_event_notifications_notification_channel_request_v1_instance = UpdateIbmEventNotificationsNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateIbmEventNotificationsNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_ibm_event_notifications_notification_channel_request_v1_dict = update_ibm_event_notifications_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateIbmEventNotificationsNotificationChannelRequestV1 from a dict +update_ibm_event_notifications_notification_channel_request_v1_from_dict = UpdateIbmEventNotificationsNotificationChannelRequestV1.from_dict(update_ibm_event_notifications_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateInhibitionRuleRequestV1.md b/docs/reference/UpdateInhibitionRuleRequestV1.md new file mode 100644 index 00000000..0ef21315 --- /dev/null +++ b/docs/reference/UpdateInhibitionRuleRequestV1.md @@ -0,0 +1,35 @@ +# UpdateInhibitionRuleRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_enabled** | **bool** | Indicates if the inhibition rule is enabled or not. | [optional] [default to True] +**name** | **str** | Name of the inhibition rule. If provided, must be unique. | [optional] +**description** | **str** | Description of the inhibition rule. | [optional] +**source_matchers** | [**List[LabelMatcherV1]**](LabelMatcherV1.md) | List of source matchers for which one or more alerts have to exist for the inhibition to take effect. | +**target_matchers** | [**List[LabelMatcherV1]**](LabelMatcherV1.md) | List of target matchers that have to be fulfilled by the target alerts to be muted. | +**equal** | **List[str]** | List of labels that must have an equal value in the source and target alert for the inhibition to take effect. | [optional] +**version** | **int** | The current version of the resource. | + +## Example + +```python +from sysdig_client.models.update_inhibition_rule_request_v1 import UpdateInhibitionRuleRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateInhibitionRuleRequestV1 from a JSON string +update_inhibition_rule_request_v1_instance = UpdateInhibitionRuleRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateInhibitionRuleRequestV1.to_json()) + +# convert the object into a dict +update_inhibition_rule_request_v1_dict = update_inhibition_rule_request_v1_instance.to_dict() +# create an instance of UpdateInhibitionRuleRequestV1 from a dict +update_inhibition_rule_request_v1_from_dict = UpdateInhibitionRuleRequestV1.from_dict(update_inhibition_rule_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateIntegrationRequest.md b/docs/reference/UpdateIntegrationRequest.md new file mode 100644 index 00000000..36579129 --- /dev/null +++ b/docs/reference/UpdateIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateIntegrationRequest + +Update Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**UpdateWebhookIntegrationRequestAllOfConnectionInfo**](UpdateWebhookIntegrationRequestAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.update_integration_request import UpdateIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateIntegrationRequest from a JSON string +update_integration_request_instance = UpdateIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateIntegrationRequest.to_json()) + +# convert the object into a dict +update_integration_request_dict = update_integration_request_instance.to_dict() +# create an instance of UpdateIntegrationRequest from a dict +update_integration_request_from_dict = UpdateIntegrationRequest.from_dict(update_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateIntegrationRequestV1.md b/docs/reference/UpdateIntegrationRequestV1.md new file mode 100644 index 00000000..36f88130 --- /dev/null +++ b/docs/reference/UpdateIntegrationRequestV1.md @@ -0,0 +1,39 @@ +# UpdateIntegrationRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | Integration name. | +**is_enabled** | **bool** | Integration enabled status. | +**is_all_teams** | **bool** | If **true**, the integration will be enabled for all teams. If **false**, the integration will be enabled for the teams specified in the *teamIds* field. | +**team_ids** | **List[int]** | List of Sysdig's internal team ids for which the integration will be enabled. This field is required if *isAllTeams* is **false**. | +**jira_url** | **str** | Customer's Jira URL. | +**jira_email** | **str** | The user email associated with the Jira account. | +**jira_access_token** | **str** | Jira access token for the provided Jira account. | +**jira_assignee** | **str** | The default assignee Jira account ID for this integration. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-user-search/#api-group-user-search \"Jira user documentation\") for more info. | +**jira_labels** | **List[str]** | The list of Jira labels available for this integration. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-labels/#api-group-labels \"Jira labels documentation\") for more info. | +**parent_issue_type_id** | **int** | Internal Sysdig's issue type id, which will act as a parent issue type for the integration. | +**child_issue_type_id** | **int** | Internal Sysdig's issue type id, which will act as a child issue type for the integration. | + +## Example + +```python +from sysdig_client.models.update_integration_request_v1 import UpdateIntegrationRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateIntegrationRequestV1 from a JSON string +update_integration_request_v1_instance = UpdateIntegrationRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateIntegrationRequestV1.to_json()) + +# convert the object into a dict +update_integration_request_v1_dict = update_integration_request_v1_instance.to_dict() +# create an instance of UpdateIntegrationRequestV1 from a dict +update_integration_request_v1_from_dict = UpdateIntegrationRequestV1.from_dict(update_integration_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateIpFilterV1.md b/docs/reference/UpdateIpFilterV1.md new file mode 100644 index 00000000..f4ffe022 --- /dev/null +++ b/docs/reference/UpdateIpFilterV1.md @@ -0,0 +1,32 @@ +# UpdateIpFilterV1 + +Request to update IP filter. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ip_range** | **str** | IP range in CIDR notation | +**note** | **str** | | +**is_enabled** | **bool** | | + +## Example + +```python +from sysdig_client.models.update_ip_filter_v1 import UpdateIpFilterV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateIpFilterV1 from a JSON string +update_ip_filter_v1_instance = UpdateIpFilterV1.from_json(json) +# print the JSON string representation of the object +print(UpdateIpFilterV1.to_json()) + +# convert the object into a dict +update_ip_filter_v1_dict = update_ip_filter_v1_instance.to_dict() +# create an instance of UpdateIpFilterV1 from a dict +update_ip_filter_v1_from_dict = UpdateIpFilterV1.from_dict(update_ip_filter_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateIssueTypeRequestV1.md b/docs/reference/UpdateIssueTypeRequestV1.md new file mode 100644 index 00000000..92109217 --- /dev/null +++ b/docs/reference/UpdateIssueTypeRequestV1.md @@ -0,0 +1,32 @@ +# UpdateIssueTypeRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**jira_open_status_id** | **str** | Jira status id mapped to open status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status \"Jira status documentation\") for more info. | +**jira_in_progress_status_id** | **str** | Jira status id mapped to in progress status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status \"Jira status documentation\") for more info. | +**jira_closed_status_id** | **str** | Jira status id mapped to closed status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status \"Jira status documentation\") for more info. | +**custom_field_ids** | **List[str]** | List of supported custom field ids for the issue type. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-createmeta-get \"Jira issue type fields documentation\") for more info. | + +## Example + +```python +from sysdig_client.models.update_issue_type_request_v1 import UpdateIssueTypeRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateIssueTypeRequestV1 from a JSON string +update_issue_type_request_v1_instance = UpdateIssueTypeRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateIssueTypeRequestV1.to_json()) + +# convert the object into a dict +update_issue_type_request_v1_dict = update_issue_type_request_v1_instance.to_dict() +# create an instance of UpdateIssueTypeRequestV1 from a dict +update_issue_type_request_v1_from_dict = UpdateIssueTypeRequestV1.from_dict(update_issue_type_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateKafkaIntegrationRequest.md b/docs/reference/UpdateKafkaIntegrationRequest.md new file mode 100644 index 00000000..81a9e903 --- /dev/null +++ b/docs/reference/UpdateKafkaIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateKafkaIntegrationRequest + +Update Kafka Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**UpdateKafkaIntegrationRequestAllOfConnectionInfo**](UpdateKafkaIntegrationRequestAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.update_kafka_integration_request import UpdateKafkaIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateKafkaIntegrationRequest from a JSON string +update_kafka_integration_request_instance = UpdateKafkaIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateKafkaIntegrationRequest.to_json()) + +# convert the object into a dict +update_kafka_integration_request_dict = update_kafka_integration_request_instance.to_dict() +# create an instance of UpdateKafkaIntegrationRequest from a dict +update_kafka_integration_request_from_dict = UpdateKafkaIntegrationRequest.from_dict(update_kafka_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateKafkaIntegrationRequestAllOfConnectionInfo.md b/docs/reference/UpdateKafkaIntegrationRequestAllOfConnectionInfo.md new file mode 100644 index 00000000..3f5a5576 --- /dev/null +++ b/docs/reference/UpdateKafkaIntegrationRequestAllOfConnectionInfo.md @@ -0,0 +1,40 @@ +# UpdateKafkaIntegrationRequestAllOfConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**brokers** | **List[str]** | Kafka server endpoint. A Kafka cluster may provide several brokers; it follows the 'hostname: port' (without protocol scheme). | +**topic** | **str** | Kafka topic where you want to store the forwarded data | +**balancer** | **str** | Algorithm that the client uses to multiplex data between the multiple Brokers. For compatibility with the Java client, Murmur2 is used as the default partitioner | [optional] [default to 'murmur2'] +**compression** | **str** | Compression standard used for the data | [optional] +**is_tls_enabled** | **bool** | | [optional] +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**auth** | **str** | The authentication method to optionally use. Currently supporting only GSSAPI | +**principal** | **str** | GSSAPI principal | +**realm** | **str** | GSSAPI realm | +**service** | **str** | GSSAPI Service name | +**krb5** | **str** | Kerberos krb5.conf file content for GSSAPI | +**keytab** | **str** | base64 encoded Kerberos keytab | [optional] + +## Example + +```python +from sysdig_client.models.update_kafka_integration_request_all_of_connection_info import UpdateKafkaIntegrationRequestAllOfConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateKafkaIntegrationRequestAllOfConnectionInfo from a JSON string +update_kafka_integration_request_all_of_connection_info_instance = UpdateKafkaIntegrationRequestAllOfConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(UpdateKafkaIntegrationRequestAllOfConnectionInfo.to_json()) + +# convert the object into a dict +update_kafka_integration_request_all_of_connection_info_dict = update_kafka_integration_request_all_of_connection_info_instance.to_dict() +# create an instance of UpdateKafkaIntegrationRequestAllOfConnectionInfo from a dict +update_kafka_integration_request_all_of_connection_info_from_dict = UpdateKafkaIntegrationRequestAllOfConnectionInfo.from_dict(update_kafka_integration_request_all_of_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateMcmIntegrationRequest.md b/docs/reference/UpdateMcmIntegrationRequest.md new file mode 100644 index 00000000..c2c11830 --- /dev/null +++ b/docs/reference/UpdateMcmIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateMcmIntegrationRequest + +Update IBM Multicloud Manager Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**IBMMulticloudCloudCreateConnectionInfo1**](IBMMulticloudCloudCreateConnectionInfo1.md) | | + +## Example + +```python +from sysdig_client.models.update_mcm_integration_request import UpdateMcmIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateMcmIntegrationRequest from a JSON string +update_mcm_integration_request_instance = UpdateMcmIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateMcmIntegrationRequest.to_json()) + +# convert the object into a dict +update_mcm_integration_request_dict = update_mcm_integration_request_instance.to_dict() +# create an instance of UpdateMcmIntegrationRequest from a dict +update_mcm_integration_request_from_dict = UpdateMcmIntegrationRequest.from_dict(update_mcm_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateMicrosoftSentinelIntegrationRequest.md b/docs/reference/UpdateMicrosoftSentinelIntegrationRequest.md new file mode 100644 index 00000000..5c2a1468 --- /dev/null +++ b/docs/reference/UpdateMicrosoftSentinelIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateMicrosoftSentinelIntegrationRequest + +Update Microsoft Sentinel Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**MicrosoftSentinelUpdateConnectionInfo**](MicrosoftSentinelUpdateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.update_microsoft_sentinel_integration_request import UpdateMicrosoftSentinelIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateMicrosoftSentinelIntegrationRequest from a JSON string +update_microsoft_sentinel_integration_request_instance = UpdateMicrosoftSentinelIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateMicrosoftSentinelIntegrationRequest.to_json()) + +# convert the object into a dict +update_microsoft_sentinel_integration_request_dict = update_microsoft_sentinel_integration_request_instance.to_dict() +# create an instance of UpdateMicrosoftSentinelIntegrationRequest from a dict +update_microsoft_sentinel_integration_request_from_dict = UpdateMicrosoftSentinelIntegrationRequest.from_dict(update_microsoft_sentinel_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateMsTeamsNotificationChannelRequestV1.md b/docs/reference/UpdateMsTeamsNotificationChannelRequestV1.md new file mode 100644 index 00000000..ad50c669 --- /dev/null +++ b/docs/reference/UpdateMsTeamsNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateMsTeamsNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**MsTeamsNotificationChannelOptionsV1**](MsTeamsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_ms_teams_notification_channel_request_v1 import UpdateMsTeamsNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateMsTeamsNotificationChannelRequestV1 from a JSON string +update_ms_teams_notification_channel_request_v1_instance = UpdateMsTeamsNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateMsTeamsNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_ms_teams_notification_channel_request_v1_dict = update_ms_teams_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateMsTeamsNotificationChannelRequestV1 from a dict +update_ms_teams_notification_channel_request_v1_from_dict = UpdateMsTeamsNotificationChannelRequestV1.from_dict(update_ms_teams_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateNotificationChannelRequestV1.md b/docs/reference/UpdateNotificationChannelRequestV1.md new file mode 100644 index 00000000..8f7f37eb --- /dev/null +++ b/docs/reference/UpdateNotificationChannelRequestV1.md @@ -0,0 +1,30 @@ +# UpdateNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**NotificationChannelTypeV1**](NotificationChannelTypeV1.md) | | +**version** | **int** | The current version of the resource. | [optional] + +## Example + +```python +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateNotificationChannelRequestV1 from a JSON string +update_notification_channel_request_v1_instance = UpdateNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_notification_channel_request_v1_dict = update_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateNotificationChannelRequestV1 from a dict +update_notification_channel_request_v1_from_dict = UpdateNotificationChannelRequestV1.from_dict(update_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateOpsgenieNotificationChannelRequestV1.md b/docs/reference/UpdateOpsgenieNotificationChannelRequestV1.md new file mode 100644 index 00000000..27bcd7b5 --- /dev/null +++ b/docs/reference/UpdateOpsgenieNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateOpsgenieNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**OpsgenieNotificationChannelOptionsV1**](OpsgenieNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_opsgenie_notification_channel_request_v1 import UpdateOpsgenieNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateOpsgenieNotificationChannelRequestV1 from a JSON string +update_opsgenie_notification_channel_request_v1_instance = UpdateOpsgenieNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateOpsgenieNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_opsgenie_notification_channel_request_v1_dict = update_opsgenie_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateOpsgenieNotificationChannelRequestV1 from a dict +update_opsgenie_notification_channel_request_v1_from_dict = UpdateOpsgenieNotificationChannelRequestV1.from_dict(update_opsgenie_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdatePagerDutyNotificationChannelRequestV1.md b/docs/reference/UpdatePagerDutyNotificationChannelRequestV1.md new file mode 100644 index 00000000..74593217 --- /dev/null +++ b/docs/reference/UpdatePagerDutyNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdatePagerDutyNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**PagerDutyNotificationChannelOptionsV1**](PagerDutyNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_pager_duty_notification_channel_request_v1 import UpdatePagerDutyNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdatePagerDutyNotificationChannelRequestV1 from a JSON string +update_pager_duty_notification_channel_request_v1_instance = UpdatePagerDutyNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdatePagerDutyNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_pager_duty_notification_channel_request_v1_dict = update_pager_duty_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdatePagerDutyNotificationChannelRequestV1 from a dict +update_pager_duty_notification_channel_request_v1_from_dict = UpdatePagerDutyNotificationChannelRequestV1.from_dict(update_pager_duty_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdatePricingRequestV1.md b/docs/reference/UpdatePricingRequestV1.md new file mode 100644 index 00000000..e07466cb --- /dev/null +++ b/docs/reference/UpdatePricingRequestV1.md @@ -0,0 +1,35 @@ +# UpdatePricingRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**PricingType**](PricingType.md) | | +**cluster_name** | **str** | The name of the cluster. Required when `type` is `CLUSTER`. | [optional] +**name** | **str** | The name of the pricing profile. | +**unit_pricing** | [**UnitPricingV1**](UnitPricingV1.md) | The unit pricing configuration used to compute costs. | +**spot_label** | **str** | The name of a node label that is used to identify the node as a spot node. | [optional] +**spot_label_value** | **str** | The value of the spot node label. | [optional] +**version** | **int** | The current version of the resource. | + +## Example + +```python +from sysdig_client.models.update_pricing_request_v1 import UpdatePricingRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdatePricingRequestV1 from a JSON string +update_pricing_request_v1_instance = UpdatePricingRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdatePricingRequestV1.to_json()) + +# convert the object into a dict +update_pricing_request_v1_dict = update_pricing_request_v1_instance.to_dict() +# create an instance of UpdatePricingRequestV1 from a dict +update_pricing_request_v1_from_dict = UpdatePricingRequestV1.from_dict(update_pricing_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdatePrometheusAlertManagerNotificationChannelRequestV1.md b/docs/reference/UpdatePrometheusAlertManagerNotificationChannelRequestV1.md new file mode 100644 index 00000000..c2dc4084 --- /dev/null +++ b/docs/reference/UpdatePrometheusAlertManagerNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdatePrometheusAlertManagerNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**PrometheusAlertManagerNotificationChannelOptionsV1**](PrometheusAlertManagerNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_prometheus_alert_manager_notification_channel_request_v1 import UpdatePrometheusAlertManagerNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdatePrometheusAlertManagerNotificationChannelRequestV1 from a JSON string +update_prometheus_alert_manager_notification_channel_request_v1_instance = UpdatePrometheusAlertManagerNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdatePrometheusAlertManagerNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_prometheus_alert_manager_notification_channel_request_v1_dict = update_prometheus_alert_manager_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdatePrometheusAlertManagerNotificationChannelRequestV1 from a dict +update_prometheus_alert_manager_notification_channel_request_v1_from_dict = UpdatePrometheusAlertManagerNotificationChannelRequestV1.from_dict(update_prometheus_alert_manager_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateQradarIntegrationRequest.md b/docs/reference/UpdateQradarIntegrationRequest.md new file mode 100644 index 00000000..b895dca1 --- /dev/null +++ b/docs/reference/UpdateQradarIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateQradarIntegrationRequest + +Save IBM QRadar Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**BaseConnectionInfoQradar**](BaseConnectionInfoQradar.md) | | + +## Example + +```python +from sysdig_client.models.update_qradar_integration_request import UpdateQradarIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateQradarIntegrationRequest from a JSON string +update_qradar_integration_request_instance = UpdateQradarIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateQradarIntegrationRequest.to_json()) + +# convert the object into a dict +update_qradar_integration_request_dict = update_qradar_integration_request_instance.to_dict() +# create an instance of UpdateQradarIntegrationRequest from a dict +update_qradar_integration_request_from_dict = UpdateQradarIntegrationRequest.from_dict(update_qradar_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateRiskAccepted.md b/docs/reference/UpdateRiskAccepted.md new file mode 100644 index 00000000..c041b3cb --- /dev/null +++ b/docs/reference/UpdateRiskAccepted.md @@ -0,0 +1,31 @@ +# UpdateRiskAccepted + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**expiration_date** | **str** | Date when the accepted risk expires. Setting this to null will make the accepted risk never expire. | [optional] +**reason** | **str** | Reason for acceptance | [optional] +**description** | **str** | Description of why the accepted risk was created | [optional] + +## Example + +```python +from sysdig_client.models.update_risk_accepted import UpdateRiskAccepted + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateRiskAccepted from a JSON string +update_risk_accepted_instance = UpdateRiskAccepted.from_json(json) +# print the JSON string representation of the object +print(UpdateRiskAccepted.to_json()) + +# convert the object into a dict +update_risk_accepted_dict = update_risk_accepted_instance.to_dict() +# create an instance of UpdateRiskAccepted from a dict +update_risk_accepted_from_dict = UpdateRiskAccepted.from_dict(update_risk_accepted_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateServiceAccountsNotificationSettingsRequestV1.md b/docs/reference/UpdateServiceAccountsNotificationSettingsRequestV1.md new file mode 100644 index 00000000..223d672d --- /dev/null +++ b/docs/reference/UpdateServiceAccountsNotificationSettingsRequestV1.md @@ -0,0 +1,31 @@ +# UpdateServiceAccountsNotificationSettingsRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_enabled** | **bool** | Whether the notification settings are enabled or not. | +**notification_channel_ids** | **List[int]** | The list of notification channel IDs to which the notifications are to be sent.\\ \\ Supported types are **EMAIL** and **SLACK**. | +**days_before_expiry** | **List[int]** | The number of days before the expiry of the service account when the notifications are to be sent. | [default to [30, 7, 1]] + +## Example + +```python +from sysdig_client.models.update_service_accounts_notification_settings_request_v1 import UpdateServiceAccountsNotificationSettingsRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateServiceAccountsNotificationSettingsRequestV1 from a JSON string +update_service_accounts_notification_settings_request_v1_instance = UpdateServiceAccountsNotificationSettingsRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateServiceAccountsNotificationSettingsRequestV1.to_json()) + +# convert the object into a dict +update_service_accounts_notification_settings_request_v1_dict = update_service_accounts_notification_settings_request_v1_instance.to_dict() +# create an instance of UpdateServiceAccountsNotificationSettingsRequestV1 from a dict +update_service_accounts_notification_settings_request_v1_from_dict = UpdateServiceAccountsNotificationSettingsRequestV1.from_dict(update_service_accounts_notification_settings_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateSlackNotificationChannelRequestV1.md b/docs/reference/UpdateSlackNotificationChannelRequestV1.md new file mode 100644 index 00000000..9ebf640d --- /dev/null +++ b/docs/reference/UpdateSlackNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateSlackNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**SlackUpdateNotificationChannelOptionsV1**](SlackUpdateNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_slack_notification_channel_request_v1 import UpdateSlackNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateSlackNotificationChannelRequestV1 from a JSON string +update_slack_notification_channel_request_v1_instance = UpdateSlackNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateSlackNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_slack_notification_channel_request_v1_dict = update_slack_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateSlackNotificationChannelRequestV1 from a dict +update_slack_notification_channel_request_v1_from_dict = UpdateSlackNotificationChannelRequestV1.from_dict(update_slack_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateSnsNotificationChannelRequestV1.md b/docs/reference/UpdateSnsNotificationChannelRequestV1.md new file mode 100644 index 00000000..c7517c2e --- /dev/null +++ b/docs/reference/UpdateSnsNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateSnsNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**SnsNotificationChannelOptionsV1**](SnsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_sns_notification_channel_request_v1 import UpdateSnsNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateSnsNotificationChannelRequestV1 from a JSON string +update_sns_notification_channel_request_v1_instance = UpdateSnsNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateSnsNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_sns_notification_channel_request_v1_dict = update_sns_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateSnsNotificationChannelRequestV1 from a dict +update_sns_notification_channel_request_v1_from_dict = UpdateSnsNotificationChannelRequestV1.from_dict(update_sns_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateSplunkIntegrationRequest.md b/docs/reference/UpdateSplunkIntegrationRequest.md new file mode 100644 index 00000000..574fcf8c --- /dev/null +++ b/docs/reference/UpdateSplunkIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateSplunkIntegrationRequest + +Update Splunk Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**SplunkUpdateConnectionInfo**](SplunkUpdateConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.update_splunk_integration_request import UpdateSplunkIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateSplunkIntegrationRequest from a JSON string +update_splunk_integration_request_instance = UpdateSplunkIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateSplunkIntegrationRequest.to_json()) + +# convert the object into a dict +update_splunk_integration_request_dict = update_splunk_integration_request_instance.to_dict() +# create an instance of UpdateSplunkIntegrationRequest from a dict +update_splunk_integration_request_from_dict = UpdateSplunkIntegrationRequest.from_dict(update_splunk_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateSsoSettingsRequestV1.md b/docs/reference/UpdateSsoSettingsRequestV1.md new file mode 100644 index 00000000..3293b3a6 --- /dev/null +++ b/docs/reference/UpdateSsoSettingsRequestV1.md @@ -0,0 +1,37 @@ +# UpdateSsoSettingsRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**product** | [**Product**](Product.md) | The product to which SSO settings is applied to. SSO settings are configured per specific product. | +**is_active** | **bool** | Flag to indicate if the SSO settings is active. | +**create_user_on_login** | **bool** | Flag to indicate if the user will be created automatically if not found in the system. | +**is_password_login_enabled** | **bool** | Flag to indicate if the user will be able to login with password. Deprecated: use the API endpoint `/platform/v1/global-sso-settings` for this functionality. This is now a global setting: if this flag is defined here and this SSO setting is set to be active, the setting will be applied at global level. | [optional] +**is_single_logout_enabled** | **bool** | Flag to indicate if the single logout support is enabled. | +**is_group_mapping_enabled** | **bool** | Flag to indicate if group mapping support is enabled. | +**group_mapping_attribute_name** | **str** | The group mapping attribute name. | [optional] +**version** | **int** | | +**config** | [**SsoSettingsUpdateRequestBaseV1**](SsoSettingsUpdateRequestBaseV1.md) | | + +## Example + +```python +from sysdig_client.models.update_sso_settings_request_v1 import UpdateSsoSettingsRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateSsoSettingsRequestV1 from a JSON string +update_sso_settings_request_v1_instance = UpdateSsoSettingsRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateSsoSettingsRequestV1.to_json()) + +# convert the object into a dict +update_sso_settings_request_v1_dict = update_sso_settings_request_v1_instance.to_dict() +# create an instance of UpdateSsoSettingsRequestV1 from a dict +update_sso_settings_request_v1_from_dict = UpdateSsoSettingsRequestV1.from_dict(update_sso_settings_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateSyslogIntegrationRequest.md b/docs/reference/UpdateSyslogIntegrationRequest.md new file mode 100644 index 00000000..083f8b0e --- /dev/null +++ b/docs/reference/UpdateSyslogIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateSyslogIntegrationRequest + +Update Syslog Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**BaseConnectionInfoSyslog**](BaseConnectionInfoSyslog.md) | | + +## Example + +```python +from sysdig_client.models.update_syslog_integration_request import UpdateSyslogIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateSyslogIntegrationRequest from a JSON string +update_syslog_integration_request_instance = UpdateSyslogIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateSyslogIntegrationRequest.to_json()) + +# convert the object into a dict +update_syslog_integration_request_dict = update_syslog_integration_request_instance.to_dict() +# create an instance of UpdateSyslogIntegrationRequest from a dict +update_syslog_integration_request_from_dict = UpdateSyslogIntegrationRequest.from_dict(update_syslog_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateTeamEmailNotificationChannelRequestV1.md b/docs/reference/UpdateTeamEmailNotificationChannelRequestV1.md new file mode 100644 index 00000000..28947f6a --- /dev/null +++ b/docs/reference/UpdateTeamEmailNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateTeamEmailNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**TeamEmailNotificationChannelOptionsV1**](TeamEmailNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_team_email_notification_channel_request_v1 import UpdateTeamEmailNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateTeamEmailNotificationChannelRequestV1 from a JSON string +update_team_email_notification_channel_request_v1_instance = UpdateTeamEmailNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateTeamEmailNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_team_email_notification_channel_request_v1_dict = update_team_email_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateTeamEmailNotificationChannelRequestV1 from a dict +update_team_email_notification_channel_request_v1_from_dict = UpdateTeamEmailNotificationChannelRequestV1.from_dict(update_team_email_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateTeamRequestV1.md b/docs/reference/UpdateTeamRequestV1.md new file mode 100644 index 00000000..2b06cfcc --- /dev/null +++ b/docs/reference/UpdateTeamRequestV1.md @@ -0,0 +1,39 @@ +# UpdateTeamRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**version** | **int** | | +**name** | **str** | The name of the team. | +**description** | **str** | A description of the team explaining what is it used for. | [optional] +**is_default_team** | **bool** | Specifies if this is the default team. The default team is used to automatically assign new users to a team. | +**standard_team_role** | [**TeamRoleV1**](TeamRoleV1.md) | The standard team role assigned by default to users added to this team. | [optional] +**custom_team_role_id** | **int** | The custom team role assigned by default to users added to this team. | [optional] +**ui_settings** | [**UiSettingsV1**](UiSettingsV1.md) | | +**is_all_zones** | **bool** | **True** if the users that are members of this team have access to all zones. **Mutually exclusive with zoneIds**.\\ \\ _Only supported in Secure features._ | [optional] +**zone_ids** | **List[int]** | The list of zones that users assigned to this team will have access to. **Mutually exclusive with allZones**.\\ \\ _Only supported in Secure features._ | [optional] +**scopes** | [**List[ScopeV1]**](ScopeV1.md) | Scopes is a list of different scope types and filter values that will be applied to resources when accessed through the team. | +**additional_team_permissions** | [**AdditionalTeamPermissionsV1**](AdditionalTeamPermissionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_team_request_v1 import UpdateTeamRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateTeamRequestV1 from a JSON string +update_team_request_v1_instance = UpdateTeamRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateTeamRequestV1.to_json()) + +# convert the object into a dict +update_team_request_v1_dict = update_team_request_v1_instance.to_dict() +# create an instance of UpdateTeamRequestV1 from a dict +update_team_request_v1_from_dict = UpdateTeamRequestV1.from_dict(update_team_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateUserDeactivationConfigurationRequestV1.md b/docs/reference/UpdateUserDeactivationConfigurationRequestV1.md new file mode 100644 index 00000000..eb7fdabd --- /dev/null +++ b/docs/reference/UpdateUserDeactivationConfigurationRequestV1.md @@ -0,0 +1,30 @@ +# UpdateUserDeactivationConfigurationRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_enabled** | **bool** | Specifies if user deactivation is enabled for this customer. | +**number_days_before_deactivation** | **int** | Number of days before inactive users are deactivated. | + +## Example + +```python +from sysdig_client.models.update_user_deactivation_configuration_request_v1 import UpdateUserDeactivationConfigurationRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateUserDeactivationConfigurationRequestV1 from a JSON string +update_user_deactivation_configuration_request_v1_instance = UpdateUserDeactivationConfigurationRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateUserDeactivationConfigurationRequestV1.to_json()) + +# convert the object into a dict +update_user_deactivation_configuration_request_v1_dict = update_user_deactivation_configuration_request_v1_instance.to_dict() +# create an instance of UpdateUserDeactivationConfigurationRequestV1 from a dict +update_user_deactivation_configuration_request_v1_from_dict = UpdateUserDeactivationConfigurationRequestV1.from_dict(update_user_deactivation_configuration_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateUserRequestV1.md b/docs/reference/UpdateUserRequestV1.md new file mode 100644 index 00000000..fdea1794 --- /dev/null +++ b/docs/reference/UpdateUserRequestV1.md @@ -0,0 +1,34 @@ +# UpdateUserRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**first_name** | **str** | The name of the user. | [optional] +**last_name** | **str** | The surname of the user. | [optional] +**is_admin** | **bool** | **True** if the user has Administration permissions. | [optional] +**is_enabled** | **bool** | When **True**, the user can bypass SSO enforcement. **Warning:** This allows the user to log in without SSO even when username and password login is disabled. | [optional] +**version** | **int** | The current version of the resource. | +**bypass_sso_enforcement** | **bool** | When **True**, the user can bypass SSO enforcement. **Warning:** This allows the user to log in without SSO even when username and password login is disabled. If a field is omitted, its value will be left unchanged. | [optional] + +## Example + +```python +from sysdig_client.models.update_user_request_v1 import UpdateUserRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateUserRequestV1 from a JSON string +update_user_request_v1_instance = UpdateUserRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateUserRequestV1.to_json()) + +# convert the object into a dict +update_user_request_v1_dict = update_user_request_v1_instance.to_dict() +# create an instance of UpdateUserRequestV1 from a dict +update_user_request_v1_from_dict = UpdateUserRequestV1.from_dict(update_user_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateVictorOpsNotificationChannelRequestV1.md b/docs/reference/UpdateVictorOpsNotificationChannelRequestV1.md new file mode 100644 index 00000000..405f8776 --- /dev/null +++ b/docs/reference/UpdateVictorOpsNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateVictorOpsNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**VictorOpsNotificationChannelOptionsV1**](VictorOpsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_victor_ops_notification_channel_request_v1 import UpdateVictorOpsNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateVictorOpsNotificationChannelRequestV1 from a JSON string +update_victor_ops_notification_channel_request_v1_instance = UpdateVictorOpsNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateVictorOpsNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_victor_ops_notification_channel_request_v1_dict = update_victor_ops_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateVictorOpsNotificationChannelRequestV1 from a dict +update_victor_ops_notification_channel_request_v1_from_dict = UpdateVictorOpsNotificationChannelRequestV1.from_dict(update_victor_ops_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateWebhookIntegrationRequest.md b/docs/reference/UpdateWebhookIntegrationRequest.md new file mode 100644 index 00000000..9d1a752a --- /dev/null +++ b/docs/reference/UpdateWebhookIntegrationRequest.md @@ -0,0 +1,34 @@ +# UpdateWebhookIntegrationRequest + +Update Webhook Integration Request + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | A descriptive name to give to the integration | +**is_enabled** | **bool** | If the forwarding should be enabled or not | [optional] [default to True] +**type** | [**IntegrationType**](IntegrationType.md) | | +**channels** | [**List[IntegrationChannel]**](IntegrationChannel.md) | Data types to forward. Must be compatible with the specified Integration type | [optional] +**connection_info** | [**UpdateWebhookIntegrationRequestAllOfConnectionInfo**](UpdateWebhookIntegrationRequestAllOfConnectionInfo.md) | | + +## Example + +```python +from sysdig_client.models.update_webhook_integration_request import UpdateWebhookIntegrationRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateWebhookIntegrationRequest from a JSON string +update_webhook_integration_request_instance = UpdateWebhookIntegrationRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateWebhookIntegrationRequest.to_json()) + +# convert the object into a dict +update_webhook_integration_request_dict = update_webhook_integration_request_instance.to_dict() +# create an instance of UpdateWebhookIntegrationRequest from a dict +update_webhook_integration_request_from_dict = UpdateWebhookIntegrationRequest.from_dict(update_webhook_integration_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateWebhookIntegrationRequestAllOfConnectionInfo.md b/docs/reference/UpdateWebhookIntegrationRequestAllOfConnectionInfo.md new file mode 100644 index 00000000..30dbab98 --- /dev/null +++ b/docs/reference/UpdateWebhookIntegrationRequestAllOfConnectionInfo.md @@ -0,0 +1,36 @@ +# UpdateWebhookIntegrationRequestAllOfConnectionInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**endpoint** | **str** | Webhook endpoint following the schema protocol | +**is_insecure** | **bool** | Skip TLS certificate verification | [optional] [default to False] +**headers** | [**List[KeyValueObject]**](KeyValueObject.md) | Extra headers to add to the request. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value | [optional] +**output** | **str** | Payload format | [optional] [default to 'json'] +**timestamp_format** | **str** | The resolution of the \"timestamp\" field in the payload | [optional] [default to 'nanoseconds'] +**auth** | **str** | Authentication method | [optional] +**certificate_id** | **int** | ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field | [optional] +**secret** | **str** | Secret to use, according to the \"auth\" value. | [optional] + +## Example + +```python +from sysdig_client.models.update_webhook_integration_request_all_of_connection_info import UpdateWebhookIntegrationRequestAllOfConnectionInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateWebhookIntegrationRequestAllOfConnectionInfo from a JSON string +update_webhook_integration_request_all_of_connection_info_instance = UpdateWebhookIntegrationRequestAllOfConnectionInfo.from_json(json) +# print the JSON string representation of the object +print(UpdateWebhookIntegrationRequestAllOfConnectionInfo.to_json()) + +# convert the object into a dict +update_webhook_integration_request_all_of_connection_info_dict = update_webhook_integration_request_all_of_connection_info_instance.to_dict() +# create an instance of UpdateWebhookIntegrationRequestAllOfConnectionInfo from a dict +update_webhook_integration_request_all_of_connection_info_from_dict = UpdateWebhookIntegrationRequestAllOfConnectionInfo.from_dict(update_webhook_integration_request_all_of_connection_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UpdateWebhookNotificationChannelRequestV1.md b/docs/reference/UpdateWebhookNotificationChannelRequestV1.md new file mode 100644 index 00000000..c87ddbad --- /dev/null +++ b/docs/reference/UpdateWebhookNotificationChannelRequestV1.md @@ -0,0 +1,33 @@ +# UpdateWebhookNotificationChannelRequestV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**WebhookNotificationChannelOptionsV1**](WebhookNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.update_webhook_notification_channel_request_v1 import UpdateWebhookNotificationChannelRequestV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateWebhookNotificationChannelRequestV1 from a JSON string +update_webhook_notification_channel_request_v1_instance = UpdateWebhookNotificationChannelRequestV1.from_json(json) +# print the JSON string representation of the object +print(UpdateWebhookNotificationChannelRequestV1.to_json()) + +# convert the object into a dict +update_webhook_notification_channel_request_v1_dict = update_webhook_notification_channel_request_v1_instance.to_dict() +# create an instance of UpdateWebhookNotificationChannelRequestV1 from a dict +update_webhook_notification_channel_request_v1_from_dict = UpdateWebhookNotificationChannelRequestV1.from_dict(update_webhook_notification_channel_request_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/User.md b/docs/reference/User.md new file mode 100644 index 00000000..926c2689 --- /dev/null +++ b/docs/reference/User.md @@ -0,0 +1,31 @@ +# User + +The full representation of a User + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**username** | **str** | The username of the User | [optional] +**groups** | **List[str]** | | [optional] + +## Example + +```python +from sysdig_client.models.user import User + +# TODO update the JSON string below +json = "{}" +# create an instance of User from a JSON string +user_instance = User.from_json(json) +# print the JSON string representation of the object +print(User.to_json()) + +# convert the object into a dict +user_dict = user_instance.to_dict() +# create an instance of User from a dict +user_from_dict = User.from_dict(user_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UserDeactivationApi.md b/docs/reference/UserDeactivationApi.md new file mode 100644 index 00000000..504379eb --- /dev/null +++ b/docs/reference/UserDeactivationApi.md @@ -0,0 +1,180 @@ +# sysdig_client.UserDeactivationApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_user_deactivation_configuration_v1**](UserDeactivationApi.md#get_user_deactivation_configuration_v1) | **GET** /platform/v1/configuration/user-deactivation | Get User Deactivation Configuration +[**update_user_deactivation_configuration_by_id_v1**](UserDeactivationApi.md#update_user_deactivation_configuration_by_id_v1) | **PUT** /platform/v1/configuration/user-deactivation | Update or Create User Deactivation Configuration + + +# **get_user_deactivation_configuration_v1** +> UserDeactivationConfigurationResponseV1 get_user_deactivation_configuration_v1() + +Get User Deactivation Configuration + +Retrieve the user deactivation configuration.\ +\ +**Required permissions:** _customer-user-deactivation-configuration.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.user_deactivation_configuration_response_v1 import UserDeactivationConfigurationResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.UserDeactivationApi(api_client) + + try: + # Get User Deactivation Configuration + api_response = api_instance.get_user_deactivation_configuration_v1() + print("The response of UserDeactivationApi->get_user_deactivation_configuration_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling UserDeactivationApi->get_user_deactivation_configuration_v1: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**UserDeactivationConfigurationResponseV1**](UserDeactivationConfigurationResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Display the User Deactivation Configuration. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_user_deactivation_configuration_by_id_v1** +> UserDeactivationConfigurationResponseV1 update_user_deactivation_configuration_by_id_v1(update_user_deactivation_configuration_request_v1=update_user_deactivation_configuration_request_v1) + +Update or Create User Deactivation Configuration + +Update or Create User deactivation configuration.\ +\ +**Required permissions:** _customer-user-deactivation-configuration.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.update_user_deactivation_configuration_request_v1 import UpdateUserDeactivationConfigurationRequestV1 +from sysdig_client.models.user_deactivation_configuration_response_v1 import UserDeactivationConfigurationResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.UserDeactivationApi(api_client) + update_user_deactivation_configuration_request_v1 = sysdig_client.UpdateUserDeactivationConfigurationRequestV1() # UpdateUserDeactivationConfigurationRequestV1 | (optional) + + try: + # Update or Create User Deactivation Configuration + api_response = api_instance.update_user_deactivation_configuration_by_id_v1(update_user_deactivation_configuration_request_v1=update_user_deactivation_configuration_request_v1) + print("The response of UserDeactivationApi->update_user_deactivation_configuration_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling UserDeactivationApi->update_user_deactivation_configuration_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **update_user_deactivation_configuration_request_v1** | [**UpdateUserDeactivationConfigurationRequestV1**](UpdateUserDeactivationConfigurationRequestV1.md)| | [optional] + +### Return type + +[**UserDeactivationConfigurationResponseV1**](UserDeactivationConfigurationResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | User Configuration updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**415** | Server cannot accept content of type specified in Content-Type header. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/UserDeactivationConfigurationResponseV1.md b/docs/reference/UserDeactivationConfigurationResponseV1.md new file mode 100644 index 00000000..7b1c95aa --- /dev/null +++ b/docs/reference/UserDeactivationConfigurationResponseV1.md @@ -0,0 +1,31 @@ +# UserDeactivationConfigurationResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**customer_id** | **int** | The customer Id. | [optional] +**is_enabled** | **bool** | Specifies if user deactivation is enabled for this customer. | [optional] +**number_days_before_deactivation** | **int** | Number of days before inactive users are deactivated. | [optional] + +## Example + +```python +from sysdig_client.models.user_deactivation_configuration_response_v1 import UserDeactivationConfigurationResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UserDeactivationConfigurationResponseV1 from a JSON string +user_deactivation_configuration_response_v1_instance = UserDeactivationConfigurationResponseV1.from_json(json) +# print the JSON string representation of the object +print(UserDeactivationConfigurationResponseV1.to_json()) + +# convert the object into a dict +user_deactivation_configuration_response_v1_dict = user_deactivation_configuration_response_v1_instance.to_dict() +# create an instance of UserDeactivationConfigurationResponseV1 from a dict +user_deactivation_configuration_response_v1_from_dict = UserDeactivationConfigurationResponseV1.from_dict(user_deactivation_configuration_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UserResponseV1.md b/docs/reference/UserResponseV1.md new file mode 100644 index 00000000..5b3f85c6 --- /dev/null +++ b/docs/reference/UserResponseV1.md @@ -0,0 +1,39 @@ +# UserResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**email** | **str** | The email address of the user. | [optional] +**first_name** | **str** | The name of the user. | [optional] +**last_name** | **str** | The last name of the user. | [optional] +**is_admin** | **bool** | **True** if the user has Administration permissions. | [optional] +**is_enabled** | **bool** | **True** if the user is enabled. | [optional] +**activation_status** | **str** | The current activation status of the user. | [optional] +**date_created** | **datetime** | The date and time when the user was created. | [optional] +**last_updated** | **datetime** | The date and time when the user was last updated. | [optional] +**version** | **int** | The current version of the resource. | [optional] +**bypass_sso_enforcement** | **bool** | When **True**, the user can bypass SSO enforcement. **Warning:** This allows the user to log in without SSO even when username and password login is disabled. | [optional] + +## Example + +```python +from sysdig_client.models.user_response_v1 import UserResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of UserResponseV1 from a JSON string +user_response_v1_instance = UserResponseV1.from_json(json) +# print the JSON string representation of the object +print(UserResponseV1.to_json()) + +# convert the object into a dict +user_response_v1_dict = user_response_v1_instance.to_dict() +# create an instance of UserResponseV1 from a dict +user_response_v1_from_dict = UserResponseV1.from_dict(user_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/UsersApi.md b/docs/reference/UsersApi.md new file mode 100644 index 00000000..b82e6aa5 --- /dev/null +++ b/docs/reference/UsersApi.md @@ -0,0 +1,455 @@ +# sysdig_client.UsersApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_user_v1**](UsersApi.md#create_user_v1) | **POST** /platform/v1/users | Create User +[**delete_user_by_id_v1**](UsersApi.md#delete_user_by_id_v1) | **DELETE** /platform/v1/users/{userId} | Delete User +[**get_user_by_id_v1**](UsersApi.md#get_user_by_id_v1) | **GET** /platform/v1/users/{userId} | Get User +[**get_users_v1**](UsersApi.md#get_users_v1) | **GET** /platform/v1/users | List Users +[**update_user_v1**](UsersApi.md#update_user_v1) | **PUT** /platform/v1/users/{userId} | Update User + + +# **create_user_v1** +> UserResponseV1 create_user_v1(create_user_request_v1, activation_flow=activation_flow) + +Create User + +Create a new user.\ +\ +**Required permissions:** _users.create_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_user_request_v1 import CreateUserRequestV1 +from sysdig_client.models.user_response_v1 import UserResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.UsersApi(api_client) + create_user_request_v1 = sysdig_client.CreateUserRequestV1() # CreateUserRequestV1 | The payload required to create a new user. + activation_flow = False # bool | The activation flow is used to send an invitation email to the user that is being created.\\ \\ **NOTE: it is required to set at least one product in the payload in order to send the appropriate email.** (optional) (default to False) + + try: + # Create User + api_response = api_instance.create_user_v1(create_user_request_v1, activation_flow=activation_flow) + print("The response of UsersApi->create_user_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling UsersApi->create_user_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_user_request_v1** | [**CreateUserRequestV1**](CreateUserRequestV1.md)| The payload required to create a new user. | + **activation_flow** | **bool**| The activation flow is used to send an invitation email to the user that is being created.\\ \\ **NOTE: it is required to set at least one product in the payload in order to send the appropriate email.** | [optional] [default to False] + +### Return type + +[**UserResponseV1**](UserResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | User created. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_user_by_id_v1** +> delete_user_by_id_v1(user_id) + +Delete User + +Delete a user by its ID.\ +\ +**Required permissions:** _users.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.UsersApi(api_client) + user_id = 56 # int | The user ID. + + try: + # Delete User + api_instance.delete_user_by_id_v1(user_id) + except Exception as e: + print("Exception when calling UsersApi->delete_user_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user_id** | **int**| The user ID. | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | User deleted. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_user_by_id_v1** +> UserResponseV1 get_user_by_id_v1(user_id) + +Get User + +Display a user by ID.\ +\ +**Required permissions:** _users.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.user_response_v1 import UserResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.UsersApi(api_client) + user_id = 56 # int | The user ID. + + try: + # Get User + api_response = api_instance.get_user_by_id_v1(user_id) + print("The response of UsersApi->get_user_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling UsersApi->get_user_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user_id** | **int**| The user ID. | + +### Return type + +[**UserResponseV1**](UserResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | User found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_users_v1** +> GetUsersPaginatedResponseV1 get_users_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + +List Users + +Retrieve a paginated list of users.\ +\ +**Required permissions:** _users.read_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_users_paginated_response_v1 import GetUsersPaginatedResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.UsersApi(api_client) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + limit = 25 # int | The number of items to return (optional) (default to 25) + orderby = '' # str | The order by field separated by a colon for the direction (optional) (default to '') + filter = '' # str | The filter by field separated by a colon for the filter value (optional) (default to '') + + try: + # List Users + api_response = api_instance.get_users_v1(offset=offset, limit=limit, orderby=orderby, filter=filter) + print("The response of UsersApi->get_users_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling UsersApi->get_users_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **orderby** | **str**| The order by field separated by a colon for the direction | [optional] [default to ''] + **filter** | **str**| The filter by field separated by a colon for the filter value | [optional] [default to ''] + +### Return type + +[**GetUsersPaginatedResponseV1**](GetUsersPaginatedResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The users page. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_user_v1** +> UserResponseV1 update_user_v1(user_id, update_user_request_v1) + +Update User + +Update a user by its ID. \ +\ +**Required permissions:** _users.edit_ + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.update_user_request_v1 import UpdateUserRequestV1 +from sysdig_client.models.user_response_v1 import UserResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.UsersApi(api_client) + user_id = 56 # int | The user ID. + update_user_request_v1 = sysdig_client.UpdateUserRequestV1() # UpdateUserRequestV1 | + + try: + # Update User + api_response = api_instance.update_user_v1(user_id, update_user_request_v1) + print("The response of UsersApi->update_user_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling UsersApi->update_user_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user_id** | **int**| The user ID. | + **update_user_request_v1** | [**UpdateUserRequestV1**](UpdateUserRequestV1.md)| | + +### Return type + +[**UserResponseV1**](UserResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | User updated. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/VictorOpsNotificationChannelOptionsV1.md b/docs/reference/VictorOpsNotificationChannelOptionsV1.md new file mode 100644 index 00000000..24be692a --- /dev/null +++ b/docs/reference/VictorOpsNotificationChannelOptionsV1.md @@ -0,0 +1,32 @@ +# VictorOpsNotificationChannelOptionsV1 + +The VictorOps notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**api_key** | **str** | The VictorOps api key | [optional] +**routing_key** | **str** | The VictorOps routing key | [optional] + +## Example + +```python +from sysdig_client.models.victor_ops_notification_channel_options_v1 import VictorOpsNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of VictorOpsNotificationChannelOptionsV1 from a JSON string +victor_ops_notification_channel_options_v1_instance = VictorOpsNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(VictorOpsNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +victor_ops_notification_channel_options_v1_dict = victor_ops_notification_channel_options_v1_instance.to_dict() +# create an instance of VictorOpsNotificationChannelOptionsV1 from a dict +victor_ops_notification_channel_options_v1_from_dict = VictorOpsNotificationChannelOptionsV1.from_dict(victor_ops_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VictorOpsNotificationChannelResponseV1.md b/docs/reference/VictorOpsNotificationChannelResponseV1.md new file mode 100644 index 00000000..07722686 --- /dev/null +++ b/docs/reference/VictorOpsNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# VictorOpsNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**VictorOpsNotificationChannelOptionsV1**](VictorOpsNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.victor_ops_notification_channel_response_v1 import VictorOpsNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of VictorOpsNotificationChannelResponseV1 from a JSON string +victor_ops_notification_channel_response_v1_instance = VictorOpsNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(VictorOpsNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +victor_ops_notification_channel_response_v1_dict = victor_ops_notification_channel_response_v1_instance.to_dict() +# create an instance of VictorOpsNotificationChannelResponseV1 from a dict +victor_ops_notification_channel_response_v1_from_dict = VictorOpsNotificationChannelResponseV1.from_dict(victor_ops_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnAge.md b/docs/reference/VulnAge.md new file mode 100644 index 00000000..1cb61dd2 --- /dev/null +++ b/docs/reference/VulnAge.md @@ -0,0 +1,31 @@ +# VulnAge + +Predicate expressing \"the Vulnerability is older than days\" + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnAgeExtra**](VulnAgeExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_age import VulnAge + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnAge from a JSON string +vuln_age_instance = VulnAge.from_json(json) +# print the JSON string representation of the object +print(VulnAge.to_json()) + +# convert the object into a dict +vuln_age_dict = vuln_age_instance.to_dict() +# create an instance of VulnAge from a dict +vuln_age_from_dict = VulnAge.from_dict(vuln_age_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnAgeExtra.md b/docs/reference/VulnAgeExtra.md new file mode 100644 index 00000000..7f783385 --- /dev/null +++ b/docs/reference/VulnAgeExtra.md @@ -0,0 +1,29 @@ +# VulnAgeExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**age** | **int** | The age of the vulnerability in days. | [optional] + +## Example + +```python +from sysdig_client.models.vuln_age_extra import VulnAgeExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnAgeExtra from a JSON string +vuln_age_extra_instance = VulnAgeExtra.from_json(json) +# print the JSON string representation of the object +print(VulnAgeExtra.to_json()) + +# convert the object into a dict +vuln_age_extra_dict = vuln_age_extra_instance.to_dict() +# create an instance of VulnAgeExtra from a dict +vuln_age_extra_from_dict = VulnAgeExtra.from_dict(vuln_age_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnCvss.md b/docs/reference/VulnCvss.md new file mode 100644 index 00000000..d16ae510 --- /dev/null +++ b/docs/reference/VulnCvss.md @@ -0,0 +1,31 @@ +# VulnCvss + +Predicate expressing \"the Vulnerability CVSS Score is higher than \" + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnCvssExtra**](VulnCvssExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_cvss import VulnCvss + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnCvss from a JSON string +vuln_cvss_instance = VulnCvss.from_json(json) +# print the JSON string representation of the object +print(VulnCvss.to_json()) + +# convert the object into a dict +vuln_cvss_dict = vuln_cvss_instance.to_dict() +# create an instance of VulnCvss from a dict +vuln_cvss_from_dict = VulnCvss.from_dict(vuln_cvss_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnCvssEquals.md b/docs/reference/VulnCvssEquals.md new file mode 100644 index 00000000..9d0d9f9d --- /dev/null +++ b/docs/reference/VulnCvssEquals.md @@ -0,0 +1,31 @@ +# VulnCvssEquals + +Predicate expressing \"the Vulnerability CVSS Score is exactly equal to \" + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnCvssEqualsExtra**](VulnCvssEqualsExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_cvss_equals import VulnCvssEquals + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnCvssEquals from a JSON string +vuln_cvss_equals_instance = VulnCvssEquals.from_json(json) +# print the JSON string representation of the object +print(VulnCvssEquals.to_json()) + +# convert the object into a dict +vuln_cvss_equals_dict = vuln_cvss_equals_instance.to_dict() +# create an instance of VulnCvssEquals from a dict +vuln_cvss_equals_from_dict = VulnCvssEquals.from_dict(vuln_cvss_equals_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnCvssEqualsExtra.md b/docs/reference/VulnCvssEqualsExtra.md new file mode 100644 index 00000000..5ff30fea --- /dev/null +++ b/docs/reference/VulnCvssEqualsExtra.md @@ -0,0 +1,29 @@ +# VulnCvssEqualsExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**value** | **float** | The threshold for equality comparison with the CVSS Score. | [optional] + +## Example + +```python +from sysdig_client.models.vuln_cvss_equals_extra import VulnCvssEqualsExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnCvssEqualsExtra from a JSON string +vuln_cvss_equals_extra_instance = VulnCvssEqualsExtra.from_json(json) +# print the JSON string representation of the object +print(VulnCvssEqualsExtra.to_json()) + +# convert the object into a dict +vuln_cvss_equals_extra_dict = vuln_cvss_equals_extra_instance.to_dict() +# create an instance of VulnCvssEqualsExtra from a dict +vuln_cvss_equals_extra_from_dict = VulnCvssEqualsExtra.from_dict(vuln_cvss_equals_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnCvssExtra.md b/docs/reference/VulnCvssExtra.md new file mode 100644 index 00000000..dc40699d --- /dev/null +++ b/docs/reference/VulnCvssExtra.md @@ -0,0 +1,29 @@ +# VulnCvssExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**value** | **float** | The threshold for greater-than-or-equal comparison with CVSS Score. | [optional] + +## Example + +```python +from sysdig_client.models.vuln_cvss_extra import VulnCvssExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnCvssExtra from a JSON string +vuln_cvss_extra_instance = VulnCvssExtra.from_json(json) +# print the JSON string representation of the object +print(VulnCvssExtra.to_json()) + +# convert the object into a dict +vuln_cvss_extra_dict = vuln_cvss_extra_instance.to_dict() +# create an instance of VulnCvssExtra from a dict +vuln_cvss_extra_from_dict = VulnCvssExtra.from_dict(vuln_cvss_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnDisclosureRange.md b/docs/reference/VulnDisclosureRange.md new file mode 100644 index 00000000..00c9e653 --- /dev/null +++ b/docs/reference/VulnDisclosureRange.md @@ -0,0 +1,31 @@ +# VulnDisclosureRange + +The start and end dates (inclusive) when vulnerabilities were disclosed. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnDisclosureRangeExtra**](VulnDisclosureRangeExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_disclosure_range import VulnDisclosureRange + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnDisclosureRange from a JSON string +vuln_disclosure_range_instance = VulnDisclosureRange.from_json(json) +# print the JSON string representation of the object +print(VulnDisclosureRange.to_json()) + +# convert the object into a dict +vuln_disclosure_range_dict = vuln_disclosure_range_instance.to_dict() +# create an instance of VulnDisclosureRange from a dict +vuln_disclosure_range_from_dict = VulnDisclosureRange.from_dict(vuln_disclosure_range_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnDisclosureRangeExtra.md b/docs/reference/VulnDisclosureRangeExtra.md new file mode 100644 index 00000000..20a793c0 --- /dev/null +++ b/docs/reference/VulnDisclosureRangeExtra.md @@ -0,0 +1,30 @@ +# VulnDisclosureRangeExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**start_date** | **date** | The start date (inclusive) of disclosed vulnerabilities. | [optional] +**end_date** | **date** | The end date (inclusive) of disclosed vulnerabilities. | [optional] + +## Example + +```python +from sysdig_client.models.vuln_disclosure_range_extra import VulnDisclosureRangeExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnDisclosureRangeExtra from a JSON string +vuln_disclosure_range_extra_instance = VulnDisclosureRangeExtra.from_json(json) +# print the JSON string representation of the object +print(VulnDisclosureRangeExtra.to_json()) + +# convert the object into a dict +vuln_disclosure_range_extra_dict = vuln_disclosure_range_extra_instance.to_dict() +# create an instance of VulnDisclosureRangeExtra from a dict +vuln_disclosure_range_extra_from_dict = VulnDisclosureRangeExtra.from_dict(vuln_disclosure_range_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnEpssPercentileGte.md b/docs/reference/VulnEpssPercentileGte.md new file mode 100644 index 00000000..05a0a79e --- /dev/null +++ b/docs/reference/VulnEpssPercentileGte.md @@ -0,0 +1,31 @@ +# VulnEpssPercentileGte + +The EPSS percentile score that is greater than or equal to the specified value. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnEpssPercentileGteExtra**](VulnEpssPercentileGteExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_epss_percentile_gte import VulnEpssPercentileGte + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnEpssPercentileGte from a JSON string +vuln_epss_percentile_gte_instance = VulnEpssPercentileGte.from_json(json) +# print the JSON string representation of the object +print(VulnEpssPercentileGte.to_json()) + +# convert the object into a dict +vuln_epss_percentile_gte_dict = vuln_epss_percentile_gte_instance.to_dict() +# create an instance of VulnEpssPercentileGte from a dict +vuln_epss_percentile_gte_from_dict = VulnEpssPercentileGte.from_dict(vuln_epss_percentile_gte_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnEpssPercentileGteExtra.md b/docs/reference/VulnEpssPercentileGteExtra.md new file mode 100644 index 00000000..9da8c2b8 --- /dev/null +++ b/docs/reference/VulnEpssPercentileGteExtra.md @@ -0,0 +1,29 @@ +# VulnEpssPercentileGteExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**percentile** | **int** | Percentile value to compare. | [optional] + +## Example + +```python +from sysdig_client.models.vuln_epss_percentile_gte_extra import VulnEpssPercentileGteExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnEpssPercentileGteExtra from a JSON string +vuln_epss_percentile_gte_extra_instance = VulnEpssPercentileGteExtra.from_json(json) +# print the JSON string representation of the object +print(VulnEpssPercentileGteExtra.to_json()) + +# convert the object into a dict +vuln_epss_percentile_gte_extra_dict = vuln_epss_percentile_gte_extra_instance.to_dict() +# create an instance of VulnEpssPercentileGteExtra from a dict +vuln_epss_percentile_gte_extra_from_dict = VulnEpssPercentileGteExtra.from_dict(vuln_epss_percentile_gte_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnEpssScoreGte.md b/docs/reference/VulnEpssScoreGte.md new file mode 100644 index 00000000..40fc636c --- /dev/null +++ b/docs/reference/VulnEpssScoreGte.md @@ -0,0 +1,31 @@ +# VulnEpssScoreGte + +The EPSS score that meets or exceeds the specified threshold value. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnEpssScoreGteExtra**](VulnEpssScoreGteExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_epss_score_gte import VulnEpssScoreGte + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnEpssScoreGte from a JSON string +vuln_epss_score_gte_instance = VulnEpssScoreGte.from_json(json) +# print the JSON string representation of the object +print(VulnEpssScoreGte.to_json()) + +# convert the object into a dict +vuln_epss_score_gte_dict = vuln_epss_score_gte_instance.to_dict() +# create an instance of VulnEpssScoreGte from a dict +vuln_epss_score_gte_from_dict = VulnEpssScoreGte.from_dict(vuln_epss_score_gte_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnEpssScoreGteExtra.md b/docs/reference/VulnEpssScoreGteExtra.md new file mode 100644 index 00000000..c8be624d --- /dev/null +++ b/docs/reference/VulnEpssScoreGteExtra.md @@ -0,0 +1,29 @@ +# VulnEpssScoreGteExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**score** | **int** | Score value to compare. | [optional] + +## Example + +```python +from sysdig_client.models.vuln_epss_score_gte_extra import VulnEpssScoreGteExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnEpssScoreGteExtra from a JSON string +vuln_epss_score_gte_extra_instance = VulnEpssScoreGteExtra.from_json(json) +# print the JSON string representation of the object +print(VulnEpssScoreGteExtra.to_json()) + +# convert the object into a dict +vuln_epss_score_gte_extra_dict = vuln_epss_score_gte_extra_instance.to_dict() +# create an instance of VulnEpssScoreGteExtra from a dict +vuln_epss_score_gte_extra_from_dict = VulnEpssScoreGteExtra.from_dict(vuln_epss_score_gte_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnExploitable.md b/docs/reference/VulnExploitable.md new file mode 100644 index 00000000..5efefae8 --- /dev/null +++ b/docs/reference/VulnExploitable.md @@ -0,0 +1,30 @@ +# VulnExploitable + +Predicate expressing \"the Vulnerability is exploitable\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.vuln_exploitable import VulnExploitable + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnExploitable from a JSON string +vuln_exploitable_instance = VulnExploitable.from_json(json) +# print the JSON string representation of the object +print(VulnExploitable.to_json()) + +# convert the object into a dict +vuln_exploitable_dict = vuln_exploitable_instance.to_dict() +# create an instance of VulnExploitable from a dict +vuln_exploitable_from_dict = VulnExploitable.from_dict(vuln_exploitable_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnExploitableNoAdmin.md b/docs/reference/VulnExploitableNoAdmin.md new file mode 100644 index 00000000..0d9ff5fe --- /dev/null +++ b/docs/reference/VulnExploitableNoAdmin.md @@ -0,0 +1,30 @@ +# VulnExploitableNoAdmin + +Predicate expressing \"the Vulnerability is exploitable and the exploit does not. require admin privileges\" + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.vuln_exploitable_no_admin import VulnExploitableNoAdmin + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnExploitableNoAdmin from a JSON string +vuln_exploitable_no_admin_instance = VulnExploitableNoAdmin.from_json(json) +# print the JSON string representation of the object +print(VulnExploitableNoAdmin.to_json()) + +# convert the object into a dict +vuln_exploitable_no_admin_dict = vuln_exploitable_no_admin_instance.to_dict() +# create an instance of VulnExploitableNoAdmin from a dict +vuln_exploitable_no_admin_from_dict = VulnExploitableNoAdmin.from_dict(vuln_exploitable_no_admin_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnExploitableNoUser.md b/docs/reference/VulnExploitableNoUser.md new file mode 100644 index 00000000..46360a90 --- /dev/null +++ b/docs/reference/VulnExploitableNoUser.md @@ -0,0 +1,30 @@ +# VulnExploitableNoUser + +Predicate expressing \"the Vulnerability is exploitable and the exploit does not. require user interaction\" + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.vuln_exploitable_no_user import VulnExploitableNoUser + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnExploitableNoUser from a JSON string +vuln_exploitable_no_user_instance = VulnExploitableNoUser.from_json(json) +# print the JSON string representation of the object +print(VulnExploitableNoUser.to_json()) + +# convert the object into a dict +vuln_exploitable_no_user_dict = vuln_exploitable_no_user_instance.to_dict() +# create an instance of VulnExploitableNoUser from a dict +vuln_exploitable_no_user_from_dict = VulnExploitableNoUser.from_dict(vuln_exploitable_no_user_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnExploitableViaNetwork.md b/docs/reference/VulnExploitableViaNetwork.md new file mode 100644 index 00000000..8baeaadc --- /dev/null +++ b/docs/reference/VulnExploitableViaNetwork.md @@ -0,0 +1,30 @@ +# VulnExploitableViaNetwork + +Predicate expressing \"the Vulnerability is exploitable via network\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.vuln_exploitable_via_network import VulnExploitableViaNetwork + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnExploitableViaNetwork from a JSON string +vuln_exploitable_via_network_instance = VulnExploitableViaNetwork.from_json(json) +# print the JSON string representation of the object +print(VulnExploitableViaNetwork.to_json()) + +# convert the object into a dict +vuln_exploitable_via_network_dict = vuln_exploitable_via_network_instance.to_dict() +# create an instance of VulnExploitableViaNetwork from a dict +vuln_exploitable_via_network_from_dict = VulnExploitableViaNetwork.from_dict(vuln_exploitable_via_network_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnExploitableWithAge.md b/docs/reference/VulnExploitableWithAge.md new file mode 100644 index 00000000..de1d5c21 --- /dev/null +++ b/docs/reference/VulnExploitableWithAge.md @@ -0,0 +1,31 @@ +# VulnExploitableWithAge + +Predicate expressing \"the Vulnerability is exploitable and the exploit is older. than days\" + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnExploitableWithAgeExtra**](VulnExploitableWithAgeExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_exploitable_with_age import VulnExploitableWithAge + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnExploitableWithAge from a JSON string +vuln_exploitable_with_age_instance = VulnExploitableWithAge.from_json(json) +# print the JSON string representation of the object +print(VulnExploitableWithAge.to_json()) + +# convert the object into a dict +vuln_exploitable_with_age_dict = vuln_exploitable_with_age_instance.to_dict() +# create an instance of VulnExploitableWithAge from a dict +vuln_exploitable_with_age_from_dict = VulnExploitableWithAge.from_dict(vuln_exploitable_with_age_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnExploitableWithAgeExtra.md b/docs/reference/VulnExploitableWithAgeExtra.md new file mode 100644 index 00000000..361e6c2d --- /dev/null +++ b/docs/reference/VulnExploitableWithAgeExtra.md @@ -0,0 +1,29 @@ +# VulnExploitableWithAgeExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**age** | **int** | The age of the exploit in days | [optional] + +## Example + +```python +from sysdig_client.models.vuln_exploitable_with_age_extra import VulnExploitableWithAgeExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnExploitableWithAgeExtra from a JSON string +vuln_exploitable_with_age_extra_instance = VulnExploitableWithAgeExtra.from_json(json) +# print the JSON string representation of the object +print(VulnExploitableWithAgeExtra.to_json()) + +# convert the object into a dict +vuln_exploitable_with_age_extra_dict = vuln_exploitable_with_age_extra_instance.to_dict() +# create an instance of VulnExploitableWithAgeExtra from a dict +vuln_exploitable_with_age_extra_from_dict = VulnExploitableWithAgeExtra.from_dict(vuln_exploitable_with_age_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnIsFixable.md b/docs/reference/VulnIsFixable.md new file mode 100644 index 00000000..9edf2cc5 --- /dev/null +++ b/docs/reference/VulnIsFixable.md @@ -0,0 +1,30 @@ +# VulnIsFixable + +Predicate expressing \"the Vulnerability is Fixable\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.vuln_is_fixable import VulnIsFixable + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnIsFixable from a JSON string +vuln_is_fixable_instance = VulnIsFixable.from_json(json) +# print the JSON string representation of the object +print(VulnIsFixable.to_json()) + +# convert the object into a dict +vuln_is_fixable_dict = vuln_is_fixable_instance.to_dict() +# create an instance of VulnIsFixable from a dict +vuln_is_fixable_from_dict = VulnIsFixable.from_dict(vuln_is_fixable_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnIsFixableWithAge.md b/docs/reference/VulnIsFixableWithAge.md new file mode 100644 index 00000000..2fc616c7 --- /dev/null +++ b/docs/reference/VulnIsFixableWithAge.md @@ -0,0 +1,31 @@ +# VulnIsFixableWithAge + +Predicate expressing \"the Vulnerability is Fixable and its fix is older than days\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnIsFixableWithAgeExtra**](VulnIsFixableWithAgeExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_is_fixable_with_age import VulnIsFixableWithAge + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnIsFixableWithAge from a JSON string +vuln_is_fixable_with_age_instance = VulnIsFixableWithAge.from_json(json) +# print the JSON string representation of the object +print(VulnIsFixableWithAge.to_json()) + +# convert the object into a dict +vuln_is_fixable_with_age_dict = vuln_is_fixable_with_age_instance.to_dict() +# create an instance of VulnIsFixableWithAge from a dict +vuln_is_fixable_with_age_from_dict = VulnIsFixableWithAge.from_dict(vuln_is_fixable_with_age_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnIsFixableWithAgeExtra.md b/docs/reference/VulnIsFixableWithAgeExtra.md new file mode 100644 index 00000000..771eb297 --- /dev/null +++ b/docs/reference/VulnIsFixableWithAgeExtra.md @@ -0,0 +1,29 @@ +# VulnIsFixableWithAgeExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**age** | **int** | The age of the fix in days | [optional] + +## Example + +```python +from sysdig_client.models.vuln_is_fixable_with_age_extra import VulnIsFixableWithAgeExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnIsFixableWithAgeExtra from a JSON string +vuln_is_fixable_with_age_extra_instance = VulnIsFixableWithAgeExtra.from_json(json) +# print the JSON string representation of the object +print(VulnIsFixableWithAgeExtra.to_json()) + +# convert the object into a dict +vuln_is_fixable_with_age_extra_dict = vuln_is_fixable_with_age_extra_instance.to_dict() +# create an instance of VulnIsFixableWithAgeExtra from a dict +vuln_is_fixable_with_age_extra_from_dict = VulnIsFixableWithAgeExtra.from_dict(vuln_is_fixable_with_age_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnIsInUse.md b/docs/reference/VulnIsInUse.md new file mode 100644 index 00000000..f1dfbd49 --- /dev/null +++ b/docs/reference/VulnIsInUse.md @@ -0,0 +1,30 @@ +# VulnIsInUse + +The vulnerable resources currently in use. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | + +## Example + +```python +from sysdig_client.models.vuln_is_in_use import VulnIsInUse + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnIsInUse from a JSON string +vuln_is_in_use_instance = VulnIsInUse.from_json(json) +# print the JSON string representation of the object +print(VulnIsInUse.to_json()) + +# convert the object into a dict +vuln_is_in_use_dict = vuln_is_in_use_instance.to_dict() +# create an instance of VulnIsInUse from a dict +vuln_is_in_use_from_dict = VulnIsInUse.from_dict(vuln_is_in_use_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnPkgType.md b/docs/reference/VulnPkgType.md new file mode 100644 index 00000000..6e14de08 --- /dev/null +++ b/docs/reference/VulnPkgType.md @@ -0,0 +1,31 @@ +# VulnPkgType + +Predicate expressing \"the Vulnerability is related to a package of \". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnPkgTypeExtra**](VulnPkgTypeExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_pkg_type import VulnPkgType + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnPkgType from a JSON string +vuln_pkg_type_instance = VulnPkgType.from_json(json) +# print the JSON string representation of the object +print(VulnPkgType.to_json()) + +# convert the object into a dict +vuln_pkg_type_dict = vuln_pkg_type_instance.to_dict() +# create an instance of VulnPkgType from a dict +vuln_pkg_type_from_dict = VulnPkgType.from_dict(vuln_pkg_type_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnPkgTypeExtra.md b/docs/reference/VulnPkgTypeExtra.md new file mode 100644 index 00000000..4ab4e480 --- /dev/null +++ b/docs/reference/VulnPkgTypeExtra.md @@ -0,0 +1,29 @@ +# VulnPkgTypeExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**pkg_type** | **str** | The package type, either OS or non-OS. There is no enforcement on the value for future extensibility. | + +## Example + +```python +from sysdig_client.models.vuln_pkg_type_extra import VulnPkgTypeExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnPkgTypeExtra from a JSON string +vuln_pkg_type_extra_instance = VulnPkgTypeExtra.from_json(json) +# print the JSON string representation of the object +print(VulnPkgTypeExtra.to_json()) + +# convert the object into a dict +vuln_pkg_type_extra_dict = vuln_pkg_type_extra_instance.to_dict() +# create an instance of VulnPkgTypeExtra from a dict +vuln_pkg_type_extra_from_dict = VulnPkgTypeExtra.from_dict(vuln_pkg_type_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnSeverity.md b/docs/reference/VulnSeverity.md new file mode 100644 index 00000000..8f88b0d0 --- /dev/null +++ b/docs/reference/VulnSeverity.md @@ -0,0 +1,31 @@ +# VulnSeverity + +Predicate expressing \"the Vulnerability Severity is or higher\". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnSeverityExtra**](VulnSeverityExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_severity import VulnSeverity + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnSeverity from a JSON string +vuln_severity_instance = VulnSeverity.from_json(json) +# print the JSON string representation of the object +print(VulnSeverity.to_json()) + +# convert the object into a dict +vuln_severity_dict = vuln_severity_instance.to_dict() +# create an instance of VulnSeverity from a dict +vuln_severity_from_dict = VulnSeverity.from_dict(vuln_severity_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnSeverityEquals.md b/docs/reference/VulnSeverityEquals.md new file mode 100644 index 00000000..b6ecc012 --- /dev/null +++ b/docs/reference/VulnSeverityEquals.md @@ -0,0 +1,31 @@ +# VulnSeverityEquals + +Predicate expressing \"the Vulnerability Severity is exactly \". + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | +**extra** | [**VulnSeverityExtra**](VulnSeverityExtra.md) | | + +## Example + +```python +from sysdig_client.models.vuln_severity_equals import VulnSeverityEquals + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnSeverityEquals from a JSON string +vuln_severity_equals_instance = VulnSeverityEquals.from_json(json) +# print the JSON string representation of the object +print(VulnSeverityEquals.to_json()) + +# convert the object into a dict +vuln_severity_equals_dict = vuln_severity_equals_instance.to_dict() +# create an instance of VulnSeverityEquals from a dict +vuln_severity_equals_from_dict = VulnSeverityEquals.from_dict(vuln_severity_equals_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnSeverityExtra.md b/docs/reference/VulnSeverityExtra.md new file mode 100644 index 00000000..294a0d7b --- /dev/null +++ b/docs/reference/VulnSeverityExtra.md @@ -0,0 +1,29 @@ +# VulnSeverityExtra + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**level** | **str** | | [optional] + +## Example + +```python +from sysdig_client.models.vuln_severity_extra import VulnSeverityExtra + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnSeverityExtra from a JSON string +vuln_severity_extra_instance = VulnSeverityExtra.from_json(json) +# print the JSON string representation of the object +print(VulnSeverityExtra.to_json()) + +# convert the object into a dict +vuln_severity_extra_dict = vuln_severity_extra_instance.to_dict() +# create an instance of VulnSeverityExtra from a dict +vuln_severity_extra_from_dict = VulnSeverityExtra.from_dict(vuln_severity_extra_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnTotalBySeverity.md b/docs/reference/VulnTotalBySeverity.md new file mode 100644 index 00000000..5d8fd5d5 --- /dev/null +++ b/docs/reference/VulnTotalBySeverity.md @@ -0,0 +1,34 @@ +# VulnTotalBySeverity + +total vulnerabilities by severity + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**critical** | **int** | number of critical vulnerabilities | [optional] +**high** | **int** | number of high severity vulnerabilities | [optional] +**medium** | **int** | number of medium severity vulnerabilities | [optional] +**low** | **int** | number of low severity vulnerabilities | [optional] +**negligible** | **int** | number of negligible severity vulnerabilities | [optional] + +## Example + +```python +from sysdig_client.models.vuln_total_by_severity import VulnTotalBySeverity + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnTotalBySeverity from a JSON string +vuln_total_by_severity_instance = VulnTotalBySeverity.from_json(json) +# print the JSON string representation of the object +print(VulnTotalBySeverity.to_json()) + +# convert the object into a dict +vuln_total_by_severity_dict = vuln_total_by_severity_instance.to_dict() +# create an instance of VulnTotalBySeverity from a dict +vuln_total_by_severity_from_dict = VulnTotalBySeverity.from_dict(vuln_total_by_severity_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Vulnerability.md b/docs/reference/Vulnerability.md new file mode 100644 index 00000000..dcfaf584 --- /dev/null +++ b/docs/reference/Vulnerability.md @@ -0,0 +1,41 @@ +# Vulnerability + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | | +**severity** | **str** | | +**cvss_score** | [**CvssScore**](CvssScore.md) | | +**disclosure_date** | **date** | | [optional] +**solution_date** | **date** | | [optional] +**exploitable** | **bool** | | +**exploit** | [**Exploit**](Exploit.md) | | [optional] +**fix_version** | **str** | | [optional] +**main_provider** | **str** | | [optional] +**package_ref** | **str** | reference to the affected package | [optional] +**risk_accept_refs** | **List[str]** | | [optional] +**providers_metadata** | **object** | | [optional] +**cisa_kev** | **object** | | [optional] + +## Example + +```python +from sysdig_client.models.vulnerability import Vulnerability + +# TODO update the JSON string below +json = "{}" +# create an instance of Vulnerability from a JSON string +vulnerability_instance = Vulnerability.from_json(json) +# print the JSON string representation of the object +print(Vulnerability.to_json()) + +# convert the object into a dict +vulnerability_dict = vulnerability_instance.to_dict() +# create an instance of Vulnerability from a dict +vulnerability_from_dict = Vulnerability.from_dict(vulnerability_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnerabilityManagementApi.md b/docs/reference/VulnerabilityManagementApi.md new file mode 100644 index 00000000..82b3f67a --- /dev/null +++ b/docs/reference/VulnerabilityManagementApi.md @@ -0,0 +1,1678 @@ +# sysdig_client.VulnerabilityManagementApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**delete_accepted_risk_v1**](VulnerabilityManagementApi.md#delete_accepted_risk_v1) | **DELETE** /secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID} | Delete an Accepted Risk +[**get_accepted_risk_v1**](VulnerabilityManagementApi.md#get_accepted_risk_v1) | **GET** /secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID} | Get Accepted Risk +[**get_accepted_risks_v1**](VulnerabilityManagementApi.md#get_accepted_risks_v1) | **GET** /secure/vulnerability/v1beta1/accepted-risks | List all Accepted Risks +[**post_accepted_risk_v1**](VulnerabilityManagementApi.md#post_accepted_risk_v1) | **POST** /secure/vulnerability/v1beta1/accepted-risks | Create Accepted Risk +[**scanner_api_service_list_registry_results**](VulnerabilityManagementApi.md#scanner_api_service_list_registry_results) | **GET** /secure/vulnerability/v1/registry-results | Get a list of registry scan results +[**scanner_api_service_list_runtime_results**](VulnerabilityManagementApi.md#scanner_api_service_list_runtime_results) | **GET** /secure/vulnerability/v1/runtime-results | Get a list of runtime scan results +[**secure_vulnerability_v1_bundles_bundle_id_delete**](VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_bundle_id_delete) | **DELETE** /secure/vulnerability/v1/bundles/{bundleId} | Delete Bundle +[**secure_vulnerability_v1_bundles_bundle_id_get**](VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_bundle_id_get) | **GET** /secure/vulnerability/v1/bundles/{bundleId} | Get a Bundle +[**secure_vulnerability_v1_bundles_bundle_id_put**](VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_bundle_id_put) | **PUT** /secure/vulnerability/v1/bundles/{bundleId} | Edit Bundle +[**secure_vulnerability_v1_bundles_get**](VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_get) | **GET** /secure/vulnerability/v1/bundles | List Bundles +[**secure_vulnerability_v1_bundles_post**](VulnerabilityManagementApi.md#secure_vulnerability_v1_bundles_post) | **POST** /secure/vulnerability/v1/bundles | Create a new Bundle +[**secure_vulnerability_v1_pipeline_results_get**](VulnerabilityManagementApi.md#secure_vulnerability_v1_pipeline_results_get) | **GET** /secure/vulnerability/v1/pipeline-results | Get a list of pipeline scan results +[**secure_vulnerability_v1_policies_get**](VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_get) | **GET** /secure/vulnerability/v1/policies | List Policies +[**secure_vulnerability_v1_policies_policy_id_delete**](VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_policy_id_delete) | **DELETE** /secure/vulnerability/v1/policies/{policyId} | Delete a Policy +[**secure_vulnerability_v1_policies_policy_id_get**](VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_policy_id_get) | **GET** /secure/vulnerability/v1/policies/{policyId} | Get a Policy +[**secure_vulnerability_v1_policies_policy_id_put**](VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_policy_id_put) | **PUT** /secure/vulnerability/v1/policies/{policyId} | Edit a Policy +[**secure_vulnerability_v1_policies_post**](VulnerabilityManagementApi.md#secure_vulnerability_v1_policies_post) | **POST** /secure/vulnerability/v1/policies | Create a new Policy +[**secure_vulnerability_v1_results_result_id_get**](VulnerabilityManagementApi.md#secure_vulnerability_v1_results_result_id_get) | **GET** /secure/vulnerability/v1/results/{resultId} | Get full scan result +[**update_accepted_risk_v1**](VulnerabilityManagementApi.md#update_accepted_risk_v1) | **PUT** /secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID} | Update an Accepted Risk + + +# **delete_accepted_risk_v1** +> delete_accepted_risk_v1(accepted_risk_id) + +Delete an Accepted Risk + +Delete an Accepted Risk + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + accepted_risk_id = '17af8bade67c9a208e632df001fcea2c' # str | The Accepted Risk ID + + try: + # Delete an Accepted Risk + api_instance.delete_accepted_risk_v1(accepted_risk_id) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->delete_accepted_risk_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **accepted_risk_id** | **str**| The Accepted Risk ID | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Accepted Risk deleted successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_accepted_risk_v1** +> RiskAcceptedResponse get_accepted_risk_v1(accepted_risk_id) + +Get Accepted Risk + +Get the Accepted Risk given the ID + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.risk_accepted_response import RiskAcceptedResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + accepted_risk_id = '17af8bade67c9a208e632df001fcea2c' # str | The Accepted Risk ID + + try: + # Get Accepted Risk + api_response = api_instance.get_accepted_risk_v1(accepted_risk_id) + print("The response of VulnerabilityManagementApi->get_accepted_risk_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->get_accepted_risk_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **accepted_risk_id** | **str**| The Accepted Risk ID | + +### Return type + +[**RiskAcceptedResponse**](RiskAcceptedResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The Accepted Risk | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_accepted_risks_v1** +> ListRiskAcceptedResponse get_accepted_risks_v1(filter=filter, order=order, cursor=cursor, limit=limit, sort=sort) + +List all Accepted Risks + +List all Accepted Risks for a given account + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_risk_accepted_response import ListRiskAcceptedResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + filter = 'freeText in (\"postgres\") and status = \"expired\"' # str | The filtering string in secure-querylang syntax. (optional) + order = desc # str | The sorting order (optional) (default to desc) + cursor = 'MTI0MjM0Cg==' # str | Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. (optional) + limit = 25 # int | The number of items to return (optional) (default to 25) + sort = 'acceptanceDate' # str | The sorting string (optional) + + try: + # List all Accepted Risks + api_response = api_instance.get_accepted_risks_v1(filter=filter, order=order, cursor=cursor, limit=limit, sort=sort) + print("The response of VulnerabilityManagementApi->get_accepted_risks_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->get_accepted_risks_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **filter** | **str**| The filtering string in secure-querylang syntax. | [optional] + **order** | **str**| The sorting order | [optional] [default to desc] + **cursor** | **str**| Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. | [optional] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **sort** | **str**| The sorting string | [optional] + +### Return type + +[**ListRiskAcceptedResponse**](ListRiskAcceptedResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | The list of Accepted Risks | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_accepted_risk_v1** +> RiskAcceptedResponse post_accepted_risk_v1(create_risk_accepted_request) + +Create Accepted Risk + +Creates an Accepted Risk + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_risk_accepted_request import CreateRiskAcceptedRequest +from sysdig_client.models.risk_accepted_response import RiskAcceptedResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + create_risk_accepted_request = sysdig_client.CreateRiskAcceptedRequest() # CreateRiskAcceptedRequest | The Accepted Risk definition + + try: + # Create Accepted Risk + api_response = api_instance.post_accepted_risk_v1(create_risk_accepted_request) + print("The response of VulnerabilityManagementApi->post_accepted_risk_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->post_accepted_risk_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_risk_accepted_request** | [**CreateRiskAcceptedRequest**](CreateRiskAcceptedRequest.md)| The Accepted Risk definition | + +### Return type + +[**RiskAcceptedResponse**](RiskAcceptedResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Accepted Risk created successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **scanner_api_service_list_registry_results** +> RegistryResultsResponse scanner_api_service_list_registry_results(cursor=cursor, limit=limit, filter=filter) + +Get a list of registry scan results + +Retrieves a list of registry scan results discovered by the registry scanner that match a filter given a specified cursor. + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.registry_results_response import RegistryResultsResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + cursor = 'MTI0MjM0Cg==' # str | Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. (optional) + limit = 1000 # int | Limit for pagination (optional) (default to 1000) + filter = 'freeText = \"alpine:latest\" and vendor = \"docker\"' # str | Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `freeText = \"alpine:latest\" and vendor = \"docker\"`) - `=` and `!=` comparison operators (i.e. `vendor = \"ecr\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are: `freeText`, `vendor`. - `vendor` as string value - `freeText` as string value (note that it will search on the full image name) (optional) + + try: + # Get a list of registry scan results + api_response = api_instance.scanner_api_service_list_registry_results(cursor=cursor, limit=limit, filter=filter) + print("The response of VulnerabilityManagementApi->scanner_api_service_list_registry_results:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->scanner_api_service_list_registry_results: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cursor** | **str**| Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. | [optional] + **limit** | **int**| Limit for pagination | [optional] [default to 1000] + **filter** | **str**| Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `freeText = \"alpine:latest\" and vendor = \"docker\"`) - `=` and `!=` comparison operators (i.e. `vendor = \"ecr\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are: `freeText`, `vendor`. - `vendor` as string value - `freeText` as string value (note that it will search on the full image name) | [optional] + +### Return type + +[**RegistryResultsResponse**](RegistryResultsResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A successful response | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **scanner_api_service_list_runtime_results** +> RuntimeResultsResponse scanner_api_service_list_runtime_results(cursor=cursor, limit=limit, filter=filter, sort=sort, order=order) + +Get a list of runtime scan results + +Retrieves a list of runtime scan results discovered by the runtime scanner that match a filter given a specified cursor. + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.runtime_results_response import RuntimeResultsResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + cursor = 'MTI0MjM0Cg==' # str | Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. (optional) + limit = 1000 # int | Limit for pagination (optional) (default to 1000) + filter = 'kubernetes.cluster.name=\"staging\" and kubernetes.pod.container.name=\"docker.internal.sysdig.tools\"' # str | Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `kubernetes.cluster.name=\"production\" and kubernetes.pod.container.name = \"docker.internal.sysdig.tools\"`) - `=` and `!=` comparison operators (i.e. `kubernetes.cluster.name=\"staging\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are the all the fields of the `Scope`, plus: `freeText`, `hasRunningVulns` and `hasRunningVulns`. (optional) + sort = vulnTotalBySeverity # str | Field used to sort the results vulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity runningVulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity for running assets (optional) (default to vulnTotalBySeverity) + order = desc # str | Ordering of the results for the sort field (optional) (default to desc) + + try: + # Get a list of runtime scan results + api_response = api_instance.scanner_api_service_list_runtime_results(cursor=cursor, limit=limit, filter=filter, sort=sort, order=order) + print("The response of VulnerabilityManagementApi->scanner_api_service_list_runtime_results:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->scanner_api_service_list_runtime_results: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cursor** | **str**| Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. | [optional] + **limit** | **int**| Limit for pagination | [optional] [default to 1000] + **filter** | **str**| Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `kubernetes.cluster.name=\"production\" and kubernetes.pod.container.name = \"docker.internal.sysdig.tools\"`) - `=` and `!=` comparison operators (i.e. `kubernetes.cluster.name=\"staging\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are the all the fields of the `Scope`, plus: `freeText`, `hasRunningVulns` and `hasRunningVulns`. | [optional] + **sort** | **str**| Field used to sort the results vulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity runningVulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity for running assets | [optional] [default to vulnTotalBySeverity] + **order** | **str**| Ordering of the results for the sort field | [optional] [default to desc] + +### Return type + +[**RuntimeResultsResponse**](RuntimeResultsResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A successful response | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_bundles_bundle_id_delete** +> secure_vulnerability_v1_bundles_bundle_id_delete(bundle_id) + +Delete Bundle + +Deletes an existing Rule Bundle only if it is not used by any Policy. +An HTTP error is returned if the Bundle being deleted is the only one currently attached to any Policy. +Once deleted, subsequent calls to the Service will not return that Bundle anymore. +However, some instances of the Inline Scanner might be running concurrently and may have already downloaded a Policy containing that Bundle. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + bundle_id = 1234 # int | The Policy Bundle ID + + try: + # Delete Bundle + api_instance.secure_vulnerability_v1_bundles_bundle_id_delete(bundle_id) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_bundles_bundle_id_delete: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **bundle_id** | **int**| The Policy Bundle ID | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Bundle deleted successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_bundles_bundle_id_get** +> GetBundleResponse secure_vulnerability_v1_bundles_bundle_id_get(bundle_id) + +Get a Bundle + +Retrieves a specific rule bundle. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_bundle_response import GetBundleResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + bundle_id = 1234 # int | The Policy Bundle ID + + try: + # Get a Bundle + api_response = api_instance.secure_vulnerability_v1_bundles_bundle_id_get(bundle_id) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_bundles_bundle_id_get:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_bundles_bundle_id_get: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **bundle_id** | **int**| The Policy Bundle ID | + +### Return type + +[**GetBundleResponse**](GetBundleResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Bundle definition | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_bundles_bundle_id_put** +> GetBundleResponse secure_vulnerability_v1_bundles_bundle_id_put(bundle_id, create_bundle_request=create_bundle_request) + +Edit Bundle + +Edits a specific Rule Bundle definition. The Bundle definition is +tested for structural correctness. If the Bundle being edited is a +Sysdig predefined one, no modifications are applied, and an HTTP error is +returned. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_bundle_request import CreateBundleRequest +from sysdig_client.models.get_bundle_response import GetBundleResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + bundle_id = 1234 # int | The Policy Bundle ID + create_bundle_request = sysdig_client.CreateBundleRequest() # CreateBundleRequest | (optional) + + try: + # Edit Bundle + api_response = api_instance.secure_vulnerability_v1_bundles_bundle_id_put(bundle_id, create_bundle_request=create_bundle_request) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_bundles_bundle_id_put:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_bundles_bundle_id_put: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **bundle_id** | **int**| The Policy Bundle ID | + **create_bundle_request** | [**CreateBundleRequest**](CreateBundleRequest.md)| | [optional] + +### Return type + +[**GetBundleResponse**](GetBundleResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Bundle definition | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_bundles_get** +> ListBundlesResponse secure_vulnerability_v1_bundles_get(cursor=cursor, limit=limit) + +List Bundles + +Retrieves all bundles, including those defined by users and those defined by Sysdig. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_bundles_response import ListBundlesResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + cursor = 'MTI0MjM0Cg==' # str | Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. (optional) + limit = 1000 # int | Limit for pagination (optional) (default to 1000) + + try: + # List Bundles + api_response = api_instance.secure_vulnerability_v1_bundles_get(cursor=cursor, limit=limit) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_bundles_get:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_bundles_get: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cursor** | **str**| Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. | [optional] + **limit** | **int**| Limit for pagination | [optional] [default to 1000] + +### Return type + +[**ListBundlesResponse**](ListBundlesResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of Bundle definitions | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_bundles_post** +> GetBundleResponse secure_vulnerability_v1_bundles_post(create_bundle_request=create_bundle_request) + +Create a new Bundle + +Creates a new Bundle definition. +The Bundle definition is tested for structural correctness. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_bundle_request import CreateBundleRequest +from sysdig_client.models.get_bundle_response import GetBundleResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + create_bundle_request = sysdig_client.CreateBundleRequest() # CreateBundleRequest | (optional) + + try: + # Create a new Bundle + api_response = api_instance.secure_vulnerability_v1_bundles_post(create_bundle_request=create_bundle_request) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_bundles_post:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_bundles_post: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_bundle_request** | [**CreateBundleRequest**](CreateBundleRequest.md)| | [optional] + +### Return type + +[**GetBundleResponse**](GetBundleResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Bundle definition | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_pipeline_results_get** +> PipelineResultsResponse secure_vulnerability_v1_pipeline_results_get(cursor=cursor, limit=limit, filter=filter) + +Get a list of pipeline scan results + +Retrieves a list of scan results produced by pipelines that match a filter given a specified cursor. No sorting is supported, the items are sorted in a stable way by their ID. + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.pipeline_results_response import PipelineResultsResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + cursor = 'MTI0MjM0Cg==' # str | Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. (optional) + limit = 1000 # int | Limit for pagination (optional) (default to 1000) + filter = 'freeText in (\"nginx\")' # str | Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Only the freeText parameter is supported: - `freeText` as string value (note that it will search on the full image name) (optional) + + try: + # Get a list of pipeline scan results + api_response = api_instance.secure_vulnerability_v1_pipeline_results_get(cursor=cursor, limit=limit, filter=filter) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_pipeline_results_get:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_pipeline_results_get: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cursor** | **str**| Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. | [optional] + **limit** | **int**| Limit for pagination | [optional] [default to 1000] + **filter** | **str**| Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Only the freeText parameter is supported: - `freeText` as string value (note that it will search on the full image name) | [optional] + +### Return type + +[**PipelineResultsResponse**](PipelineResultsResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A successful response | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_policies_get** +> ListPoliciesResponse secure_vulnerability_v1_policies_get(cursor=cursor, limit=limit, name=name, stages=stages) + +List Policies + +Retrieves all Policy definitions + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_policies_response import ListPoliciesResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + cursor = 'MTI0MjM0Cg==' # str | Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. (optional) + limit = 1000 # int | Limit for pagination (optional) (default to 1000) + name = 'policy-test' # str | Filter policies by name (optional) + stages = ['[\"pipeline\"]'] # List[str] | Filter policies by applied stages (optional) + + try: + # List Policies + api_response = api_instance.secure_vulnerability_v1_policies_get(cursor=cursor, limit=limit, name=name, stages=stages) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_policies_get:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_policies_get: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cursor** | **str**| Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. | [optional] + **limit** | **int**| Limit for pagination | [optional] [default to 1000] + **name** | **str**| Filter policies by name | [optional] + **stages** | [**List[str]**](str.md)| Filter policies by applied stages | [optional] + +### Return type + +[**ListPoliciesResponse**](ListPoliciesResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | List of Policy definitions | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_policies_policy_id_delete** +> secure_vulnerability_v1_policies_policy_id_delete(policy_id) + +Delete a Policy + +Deletes an existing Policy definition. Subsequent calls to the service +will not return that Policy anymore. However, some instances of the Inline +Scanner might be running concurrently and may have already downloaded the +Policy. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + policy_id = 1234 # int | The Policy ID + + try: + # Delete a Policy + api_instance.secure_vulnerability_v1_policies_policy_id_delete(policy_id) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_policies_policy_id_delete: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **policy_id** | **int**| The Policy ID | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Policy deleted successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_policies_policy_id_get** +> GetPolicyResponse secure_vulnerability_v1_policies_policy_id_get(policy_id) + +Get a Policy + +Retrieves a specific Policy definition + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.get_policy_response import GetPolicyResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + policy_id = 1234 # int | The Policy ID + + try: + # Get a Policy + api_response = api_instance.secure_vulnerability_v1_policies_policy_id_get(policy_id) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_policies_policy_id_get:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_policies_policy_id_get: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **policy_id** | **int**| The Policy ID | + +### Return type + +[**GetPolicyResponse**](GetPolicyResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Policy definition | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_policies_policy_id_put** +> GetPolicyResponse secure_vulnerability_v1_policies_policy_id_put(policy_id, create_policy_request=create_policy_request) + +Edit a Policy + +Edits a specific Policy definition. The Policy definition is validated for both +structural and partial semantic correctness. However, semantic +correctness cannot be fully guaranteed, and checks will be performed +on a best-effort basis. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_policy_request import CreatePolicyRequest +from sysdig_client.models.get_policy_response import GetPolicyResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + policy_id = 1234 # int | The Policy ID + create_policy_request = sysdig_client.CreatePolicyRequest() # CreatePolicyRequest | (optional) + + try: + # Edit a Policy + api_response = api_instance.secure_vulnerability_v1_policies_policy_id_put(policy_id, create_policy_request=create_policy_request) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_policies_policy_id_put:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_policies_policy_id_put: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **policy_id** | **int**| The Policy ID | + **create_policy_request** | [**CreatePolicyRequest**](CreatePolicyRequest.md)| | [optional] + +### Return type + +[**GetPolicyResponse**](GetPolicyResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Policy definition | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_policies_post** +> GetPolicyResponse secure_vulnerability_v1_policies_post(create_policy_request=create_policy_request) + +Create a new Policy + +Creates a Policy definition. +The Policy definition is validated for structural correctness +and partially for semantic correctness. However, semantic +correctness cannot be fully guaranteed, and checks will be performed +on a best-effort basis. + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_policy_request import CreatePolicyRequest +from sysdig_client.models.get_policy_response import GetPolicyResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + create_policy_request = sysdig_client.CreatePolicyRequest() # CreatePolicyRequest | (optional) + + try: + # Create a new Policy + api_response = api_instance.secure_vulnerability_v1_policies_post(create_policy_request=create_policy_request) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_policies_post:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_policies_post: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_policy_request** | [**CreatePolicyRequest**](CreatePolicyRequest.md)| | [optional] + +### Return type + +[**GetPolicyResponse**](GetPolicyResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Policy definition | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **secure_vulnerability_v1_results_result_id_get** +> ScanResultResponse secure_vulnerability_v1_results_result_id_get(result_id) + +Get full scan result + +Retrieve a full scan result produced by any scanner that match a given ID + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.scan_result_response import ScanResultResponse +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + result_id = '176c77d16ee6bdd2f7482d4ec0fd0542' # str | The ID of a single scan result. Could be retrieved by one of the listing endpoints. + + try: + # Get full scan result + api_response = api_instance.secure_vulnerability_v1_results_result_id_get(result_id) + print("The response of VulnerabilityManagementApi->secure_vulnerability_v1_results_result_id_get:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->secure_vulnerability_v1_results_result_id_get: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **result_id** | **str**| The ID of a single scan result. Could be retrieved by one of the listing endpoints. | + +### Return type + +[**ScanResultResponse**](ScanResultResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A successful response | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_accepted_risk_v1** +> RiskAcceptedResponse update_accepted_risk_v1(accepted_risk_id, update_risk_accepted) + +Update an Accepted Risk + +Update an Accepted Risk by changing the expirationDate, reason, or description. + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.risk_accepted_response import RiskAcceptedResponse +from sysdig_client.models.update_risk_accepted import UpdateRiskAccepted +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.VulnerabilityManagementApi(api_client) + accepted_risk_id = '17af8bade67c9a208e632df001fcea2c' # str | The Accepted Risk ID + update_risk_accepted = sysdig_client.UpdateRiskAccepted() # UpdateRiskAccepted | Update an Accepted Risk expirationDate, reason, or description. + + try: + # Update an Accepted Risk + api_response = api_instance.update_accepted_risk_v1(accepted_risk_id, update_risk_accepted) + print("The response of VulnerabilityManagementApi->update_accepted_risk_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling VulnerabilityManagementApi->update_accepted_risk_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **accepted_risk_id** | **str**| The Accepted Risk ID | + **update_risk_accepted** | [**UpdateRiskAccepted**](UpdateRiskAccepted.md)| Update an Accepted Risk expirationDate, reason, or description. | + +### Return type + +[**RiskAcceptedResponse**](RiskAcceptedResponse.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Integration updated successfully | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/VulnerabilityManagementPage.md b/docs/reference/VulnerabilityManagementPage.md new file mode 100644 index 00000000..b7dfccd7 --- /dev/null +++ b/docs/reference/VulnerabilityManagementPage.md @@ -0,0 +1,31 @@ +# VulnerabilityManagementPage + +API paging response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**total** | **int** | Total of scans | [optional] +**next** | **str** | Next cursor for pagination | [optional] + +## Example + +```python +from sysdig_client.models.vulnerability_management_page import VulnerabilityManagementPage + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnerabilityManagementPage from a JSON string +vulnerability_management_page_instance = VulnerabilityManagementPage.from_json(json) +# print the JSON string representation of the object +print(VulnerabilityManagementPage.to_json()) + +# convert the object into a dict +vulnerability_management_page_dict = vulnerability_management_page_instance.to_dict() +# create an instance of VulnerabilityManagementPage from a dict +vulnerability_management_page_from_dict = VulnerabilityManagementPage.from_dict(vulnerability_management_page_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/VulnerabilitySummary.md b/docs/reference/VulnerabilitySummary.md new file mode 100644 index 00000000..87f746f1 --- /dev/null +++ b/docs/reference/VulnerabilitySummary.md @@ -0,0 +1,35 @@ +# VulnerabilitySummary + +Vulnerability summary of a resource + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**critical_severity_count** | **int** | Number of critical severity vulnerabilities | +**high_severity_count** | **int** | Number of high severity vulnerabilities | +**medium_severity_count** | **int** | Number of medium severity vulnerabilities | +**low_severity_count** | **int** | Number of low severity vulnerabilities | +**negligible_severity_count** | **int** | Number of negligible severity vulnerabilities | +**has_exploit** | **bool** | Indicates if a resource has an exploit | + +## Example + +```python +from sysdig_client.models.vulnerability_summary import VulnerabilitySummary + +# TODO update the JSON string below +json = "{}" +# create an instance of VulnerabilitySummary from a JSON string +vulnerability_summary_instance = VulnerabilitySummary.from_json(json) +# print the JSON string representation of the object +print(VulnerabilitySummary.to_json()) + +# convert the object into a dict +vulnerability_summary_dict = vulnerability_summary_instance.to_dict() +# create an instance of VulnerabilitySummary from a dict +vulnerability_summary_from_dict = VulnerabilitySummary.from_dict(vulnerability_summary_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WastedWorkloadDataRequest.md b/docs/reference/WastedWorkloadDataRequest.md new file mode 100644 index 00000000..6c1db584 --- /dev/null +++ b/docs/reference/WastedWorkloadDataRequest.md @@ -0,0 +1,31 @@ +# WastedWorkloadDataRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**date_range** | [**DateRange**](DateRange.md) | | +**scope** | [**List[PromqlMatcher]**](PromqlMatcher.md) | A list of PromQL-style filters | [optional] +**group_by** | **List[str]** | Specifies Prometheus labels to group the report data by. By default, the following labels will always be included: - kube_cluster_name - kube_namespace_name - kube_workload_name A maximum of 7 additional custom labels can be specified. | [optional] + +## Example + +```python +from sysdig_client.models.wasted_workload_data_request import WastedWorkloadDataRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of WastedWorkloadDataRequest from a JSON string +wasted_workload_data_request_instance = WastedWorkloadDataRequest.from_json(json) +# print the JSON string representation of the object +print(WastedWorkloadDataRequest.to_json()) + +# convert the object into a dict +wasted_workload_data_request_dict = wasted_workload_data_request_instance.to_dict() +# create an instance of WastedWorkloadDataRequest from a dict +wasted_workload_data_request_from_dict = WastedWorkloadDataRequest.from_dict(wasted_workload_data_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WastedWorkloadSpendDataResponse.md b/docs/reference/WastedWorkloadSpendDataResponse.md new file mode 100644 index 00000000..2ffd7ecf --- /dev/null +++ b/docs/reference/WastedWorkloadSpendDataResponse.md @@ -0,0 +1,31 @@ +# WastedWorkloadSpendDataResponse + +Aggregated and grouped cost data representing Wasted Workload Spend over a specific date range. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**total** | [**WastedWorkloadSpendDataResponseTotal**](WastedWorkloadSpendDataResponseTotal.md) | | [optional] +**group_by_data** | [**List[WastedWorkloadSpendDataResponseGroupByDataInner]**](WastedWorkloadSpendDataResponseGroupByDataInner.md) | Grouped cost data for each combination of Prometheus label values. | [optional] + +## Example + +```python +from sysdig_client.models.wasted_workload_spend_data_response import WastedWorkloadSpendDataResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of WastedWorkloadSpendDataResponse from a JSON string +wasted_workload_spend_data_response_instance = WastedWorkloadSpendDataResponse.from_json(json) +# print the JSON string representation of the object +print(WastedWorkloadSpendDataResponse.to_json()) + +# convert the object into a dict +wasted_workload_spend_data_response_dict = wasted_workload_spend_data_response_instance.to_dict() +# create an instance of WastedWorkloadSpendDataResponse from a dict +wasted_workload_spend_data_response_from_dict = WastedWorkloadSpendDataResponse.from_dict(wasted_workload_spend_data_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WastedWorkloadSpendDataResponseGroupByDataInner.md b/docs/reference/WastedWorkloadSpendDataResponseGroupByDataInner.md new file mode 100644 index 00000000..473f829c --- /dev/null +++ b/docs/reference/WastedWorkloadSpendDataResponseGroupByDataInner.md @@ -0,0 +1,32 @@ +# WastedWorkloadSpendDataResponseGroupByDataInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**group** | **Dict[str, str]** | Key-value pairs representing grouping labels. | [optional] +**accrued** | **float** | Accrued cost for this group. | [optional] +**estimated** | **float** | Estimated cost for this group. | [optional] +**wasted** | **float** | Wasted cost for this group. | [optional] + +## Example + +```python +from sysdig_client.models.wasted_workload_spend_data_response_group_by_data_inner import WastedWorkloadSpendDataResponseGroupByDataInner + +# TODO update the JSON string below +json = "{}" +# create an instance of WastedWorkloadSpendDataResponseGroupByDataInner from a JSON string +wasted_workload_spend_data_response_group_by_data_inner_instance = WastedWorkloadSpendDataResponseGroupByDataInner.from_json(json) +# print the JSON string representation of the object +print(WastedWorkloadSpendDataResponseGroupByDataInner.to_json()) + +# convert the object into a dict +wasted_workload_spend_data_response_group_by_data_inner_dict = wasted_workload_spend_data_response_group_by_data_inner_instance.to_dict() +# create an instance of WastedWorkloadSpendDataResponseGroupByDataInner from a dict +wasted_workload_spend_data_response_group_by_data_inner_from_dict = WastedWorkloadSpendDataResponseGroupByDataInner.from_dict(wasted_workload_spend_data_response_group_by_data_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WastedWorkloadSpendDataResponseTotal.md b/docs/reference/WastedWorkloadSpendDataResponseTotal.md new file mode 100644 index 00000000..13fd49dc --- /dev/null +++ b/docs/reference/WastedWorkloadSpendDataResponseTotal.md @@ -0,0 +1,32 @@ +# WastedWorkloadSpendDataResponseTotal + +Aggregated cost values for the specified time range. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**accrued** | **float** | Total cost accrued during the reporting period. | [optional] +**estimated** | **float** | Estimated efficient cost during the reporting period. | [optional] +**wasted** | **float** | Difference between accrued and estimated cost. | [optional] + +## Example + +```python +from sysdig_client.models.wasted_workload_spend_data_response_total import WastedWorkloadSpendDataResponseTotal + +# TODO update the JSON string below +json = "{}" +# create an instance of WastedWorkloadSpendDataResponseTotal from a JSON string +wasted_workload_spend_data_response_total_instance = WastedWorkloadSpendDataResponseTotal.from_json(json) +# print the JSON string representation of the object +print(WastedWorkloadSpendDataResponseTotal.to_json()) + +# convert the object into a dict +wasted_workload_spend_data_response_total_dict = wasted_workload_spend_data_response_total_instance.to_dict() +# create an instance of WastedWorkloadSpendDataResponseTotal from a dict +wasted_workload_spend_data_response_total_from_dict = WastedWorkloadSpendDataResponseTotal.from_dict(wasted_workload_spend_data_response_total_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WebhookNotificationChannelOptionsV1.md b/docs/reference/WebhookNotificationChannelOptionsV1.md new file mode 100644 index 00000000..3d408ae8 --- /dev/null +++ b/docs/reference/WebhookNotificationChannelOptionsV1.md @@ -0,0 +1,34 @@ +# WebhookNotificationChannelOptionsV1 + +The Webhook notification channel options + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**has_hiding_of_sensitive_info** | **bool** | Whether the notification info should be hidden when notifications are sent to this notification channel | [optional] +**url** | **str** | The url to which the request should be posted | [optional] +**is_allows_insecure_connections** | **bool** | Specifies if the channel allows insecure connections (e.g. plain http, self-signed https) | [optional] +**additional_headers** | **Dict[str, str]** | Additional headers to send in the request to the target url | [optional] +**custom_data** | **Dict[str, object]** | Additional data to be added to the template rendering context | [optional] + +## Example + +```python +from sysdig_client.models.webhook_notification_channel_options_v1 import WebhookNotificationChannelOptionsV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of WebhookNotificationChannelOptionsV1 from a JSON string +webhook_notification_channel_options_v1_instance = WebhookNotificationChannelOptionsV1.from_json(json) +# print the JSON string representation of the object +print(WebhookNotificationChannelOptionsV1.to_json()) + +# convert the object into a dict +webhook_notification_channel_options_v1_dict = webhook_notification_channel_options_v1_instance.to_dict() +# create an instance of WebhookNotificationChannelOptionsV1 from a dict +webhook_notification_channel_options_v1_from_dict = WebhookNotificationChannelOptionsV1.from_dict(webhook_notification_channel_options_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WebhookNotificationChannelResponseV1.md b/docs/reference/WebhookNotificationChannelResponseV1.md new file mode 100644 index 00000000..ad94351a --- /dev/null +++ b/docs/reference/WebhookNotificationChannelResponseV1.md @@ -0,0 +1,33 @@ +# WebhookNotificationChannelResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**team_id** | **int** | ID of team that owns the notification channel. If null, this will be a global notification channel | [optional] +**is_enabled** | **bool** | Indicates if the notification channel is enabled or not. | [optional] [default to False] +**name** | **str** | Name of the notification channel. It must be unique. | +**has_test_notification_enabled** | **bool** | Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource | [optional] [default to False] +**options** | [**WebhookNotificationChannelOptionsV1**](WebhookNotificationChannelOptionsV1.md) | | + +## Example + +```python +from sysdig_client.models.webhook_notification_channel_response_v1 import WebhookNotificationChannelResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of WebhookNotificationChannelResponseV1 from a JSON string +webhook_notification_channel_response_v1_instance = WebhookNotificationChannelResponseV1.from_json(json) +# print the JSON string representation of the object +print(WebhookNotificationChannelResponseV1.to_json()) + +# convert the object into a dict +webhook_notification_channel_response_v1_dict = webhook_notification_channel_response_v1_instance.to_dict() +# create an instance of WebhookNotificationChannelResponseV1 from a dict +webhook_notification_channel_response_v1_from_dict = WebhookNotificationChannelResponseV1.from_dict(webhook_notification_channel_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadCostTrendsDataRequest.md b/docs/reference/WorkloadCostTrendsDataRequest.md new file mode 100644 index 00000000..473db449 --- /dev/null +++ b/docs/reference/WorkloadCostTrendsDataRequest.md @@ -0,0 +1,32 @@ +# WorkloadCostTrendsDataRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**trend_range_in_days** | **float** | Specifies the number of days used to calculate and extract cost data. Must be a positive integer. | +**var_date** | **date** | The reference date used to define the time window for cost trend calculation. When combined with `trendRangeInDays`, this date represents the inclusive upper bound of the time range — the trend is calculated from (`date - trendRangeInDays`). For example, if `date` is 2025-02-12 and `trendRangeInDays` is 10, the time range used for calculation is from 2025-02-03 to 2025-02-12 (inclusive). Must be in YYYY-MM-DD format. | +**scope** | [**List[PromqlMatcher]**](PromqlMatcher.md) | A list of PromQL-style filters | [optional] +**group_by** | **List[str]** | | [optional] + +## Example + +```python +from sysdig_client.models.workload_cost_trends_data_request import WorkloadCostTrendsDataRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadCostTrendsDataRequest from a JSON string +workload_cost_trends_data_request_instance = WorkloadCostTrendsDataRequest.from_json(json) +# print the JSON string representation of the object +print(WorkloadCostTrendsDataRequest.to_json()) + +# convert the object into a dict +workload_cost_trends_data_request_dict = workload_cost_trends_data_request_instance.to_dict() +# create an instance of WorkloadCostTrendsDataRequest from a dict +workload_cost_trends_data_request_from_dict = WorkloadCostTrendsDataRequest.from_dict(workload_cost_trends_data_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadCostTrendsDataResponse.md b/docs/reference/WorkloadCostTrendsDataResponse.md new file mode 100644 index 00000000..05229eaa --- /dev/null +++ b/docs/reference/WorkloadCostTrendsDataResponse.md @@ -0,0 +1,33 @@ +# WorkloadCostTrendsDataResponse + +Cost trends observed between two consecutive time periods in the past. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**current_range** | [**DateRange**](DateRange.md) | | [optional] +**previous_range** | [**DateRange**](DateRange.md) | | [optional] +**total** | [**WorkloadCostTrendsDataResponseTotal**](WorkloadCostTrendsDataResponseTotal.md) | | [optional] +**group_by_data** | [**List[WorkloadCostTrendsDataResponseGroupByDataInner]**](WorkloadCostTrendsDataResponseGroupByDataInner.md) | Grouped cost data for each combination of label values. | [optional] + +## Example + +```python +from sysdig_client.models.workload_cost_trends_data_response import WorkloadCostTrendsDataResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadCostTrendsDataResponse from a JSON string +workload_cost_trends_data_response_instance = WorkloadCostTrendsDataResponse.from_json(json) +# print the JSON string representation of the object +print(WorkloadCostTrendsDataResponse.to_json()) + +# convert the object into a dict +workload_cost_trends_data_response_dict = workload_cost_trends_data_response_instance.to_dict() +# create an instance of WorkloadCostTrendsDataResponse from a dict +workload_cost_trends_data_response_from_dict = WorkloadCostTrendsDataResponse.from_dict(workload_cost_trends_data_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadCostTrendsDataResponseGroupByDataInner.md b/docs/reference/WorkloadCostTrendsDataResponseGroupByDataInner.md new file mode 100644 index 00000000..a3e890ce --- /dev/null +++ b/docs/reference/WorkloadCostTrendsDataResponseGroupByDataInner.md @@ -0,0 +1,32 @@ +# WorkloadCostTrendsDataResponseGroupByDataInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**group** | **Dict[str, str]** | Key-value pairs representing the grouping labels. | [optional] +**current** | **float** | The cost for the current range within this group. | [optional] +**previous** | **float** | The cost for the previous range within this group. | [optional] +**change** | **float** | The difference in cost between current and previous ranges for this group. | [optional] + +## Example + +```python +from sysdig_client.models.workload_cost_trends_data_response_group_by_data_inner import WorkloadCostTrendsDataResponseGroupByDataInner + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadCostTrendsDataResponseGroupByDataInner from a JSON string +workload_cost_trends_data_response_group_by_data_inner_instance = WorkloadCostTrendsDataResponseGroupByDataInner.from_json(json) +# print the JSON string representation of the object +print(WorkloadCostTrendsDataResponseGroupByDataInner.to_json()) + +# convert the object into a dict +workload_cost_trends_data_response_group_by_data_inner_dict = workload_cost_trends_data_response_group_by_data_inner_instance.to_dict() +# create an instance of WorkloadCostTrendsDataResponseGroupByDataInner from a dict +workload_cost_trends_data_response_group_by_data_inner_from_dict = WorkloadCostTrendsDataResponseGroupByDataInner.from_dict(workload_cost_trends_data_response_group_by_data_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadCostTrendsDataResponseTotal.md b/docs/reference/WorkloadCostTrendsDataResponseTotal.md new file mode 100644 index 00000000..43d78903 --- /dev/null +++ b/docs/reference/WorkloadCostTrendsDataResponseTotal.md @@ -0,0 +1,32 @@ +# WorkloadCostTrendsDataResponseTotal + +Aggregated cost values for the current and previous ranges. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**current** | **float** | The total cost for the current range. | [optional] +**previous** | **float** | The total cost for the previous range. | [optional] +**change** | **float** | The difference between the current and the previous cost periods expressed in percentages. | [optional] + +## Example + +```python +from sysdig_client.models.workload_cost_trends_data_response_total import WorkloadCostTrendsDataResponseTotal + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadCostTrendsDataResponseTotal from a JSON string +workload_cost_trends_data_response_total_instance = WorkloadCostTrendsDataResponseTotal.from_json(json) +# print the JSON string representation of the object +print(WorkloadCostTrendsDataResponseTotal.to_json()) + +# convert the object into a dict +workload_cost_trends_data_response_total_dict = workload_cost_trends_data_response_total_instance.to_dict() +# create an instance of WorkloadCostTrendsDataResponseTotal from a dict +workload_cost_trends_data_response_total_from_dict = WorkloadCostTrendsDataResponseTotal.from_dict(workload_cost_trends_data_response_total_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadMlRuntimeDetectionContent.md b/docs/reference/WorkloadMlRuntimeDetectionContent.md new file mode 100644 index 00000000..19aed812 --- /dev/null +++ b/docs/reference/WorkloadMlRuntimeDetectionContent.md @@ -0,0 +1,34 @@ +# WorkloadMlRuntimeDetectionContent + +Workload ML event content + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**EventContentType**](EventContentType.md) | | +**command** | **str** | The command name | +**exe** | **str** | The command path | +**detected_class_probability** | **float** | The detected class probability (confidence score) | +**policy_id** | **int** | ID of the policy that generated the event | + +## Example + +```python +from sysdig_client.models.workload_ml_runtime_detection_content import WorkloadMlRuntimeDetectionContent + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadMlRuntimeDetectionContent from a JSON string +workload_ml_runtime_detection_content_instance = WorkloadMlRuntimeDetectionContent.from_json(json) +# print the JSON string representation of the object +print(WorkloadMlRuntimeDetectionContent.to_json()) + +# convert the object into a dict +workload_ml_runtime_detection_content_dict = workload_ml_runtime_detection_content_instance.to_dict() +# create an instance of WorkloadMlRuntimeDetectionContent from a dict +workload_ml_runtime_detection_content_from_dict = WorkloadMlRuntimeDetectionContent.from_dict(workload_ml_runtime_detection_content_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadRightsizingDataRequest.md b/docs/reference/WorkloadRightsizingDataRequest.md new file mode 100644 index 00000000..6af09320 --- /dev/null +++ b/docs/reference/WorkloadRightsizingDataRequest.md @@ -0,0 +1,31 @@ +# WorkloadRightsizingDataRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**date_range** | [**DateRange**](DateRange.md) | | +**algorithm** | **str** | Aggregation algorithm used for rightsizing analysis. Currently supported values are: - AVG - P95 - MAX This field is case-sensitive and may support more values in the future. | +**scope** | [**List[PromqlMatcher]**](PromqlMatcher.md) | A list of PromQL-style filters | [optional] + +## Example + +```python +from sysdig_client.models.workload_rightsizing_data_request import WorkloadRightsizingDataRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadRightsizingDataRequest from a JSON string +workload_rightsizing_data_request_instance = WorkloadRightsizingDataRequest.from_json(json) +# print the JSON string representation of the object +print(WorkloadRightsizingDataRequest.to_json()) + +# convert the object into a dict +workload_rightsizing_data_request_dict = workload_rightsizing_data_request_instance.to_dict() +# create an instance of WorkloadRightsizingDataRequest from a dict +workload_rightsizing_data_request_from_dict = WorkloadRightsizingDataRequest.from_dict(workload_rightsizing_data_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadRightsizingDataResponse.md b/docs/reference/WorkloadRightsizingDataResponse.md new file mode 100644 index 00000000..5aec1d45 --- /dev/null +++ b/docs/reference/WorkloadRightsizingDataResponse.md @@ -0,0 +1,30 @@ +# WorkloadRightsizingDataResponse + +Cost data representing Workload Rightsizing over a specific date range. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**group_by_data** | [**List[WorkloadRightsizingDataResponseGroupByDataInner]**](WorkloadRightsizingDataResponseGroupByDataInner.md) | Grouped workload rightsizing data by cluster, namespace, workload, and container. | [optional] + +## Example + +```python +from sysdig_client.models.workload_rightsizing_data_response import WorkloadRightsizingDataResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadRightsizingDataResponse from a JSON string +workload_rightsizing_data_response_instance = WorkloadRightsizingDataResponse.from_json(json) +# print the JSON string representation of the object +print(WorkloadRightsizingDataResponse.to_json()) + +# convert the object into a dict +workload_rightsizing_data_response_dict = workload_rightsizing_data_response_instance.to_dict() +# create an instance of WorkloadRightsizingDataResponse from a dict +workload_rightsizing_data_response_from_dict = WorkloadRightsizingDataResponse.from_dict(workload_rightsizing_data_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadRightsizingDataResponseGroupByDataInner.md b/docs/reference/WorkloadRightsizingDataResponseGroupByDataInner.md new file mode 100644 index 00000000..37348712 --- /dev/null +++ b/docs/reference/WorkloadRightsizingDataResponseGroupByDataInner.md @@ -0,0 +1,37 @@ +# WorkloadRightsizingDataResponseGroupByDataInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**group** | **Dict[str, str]** | Key-value pairs representing the logical grouping keys. The data is grouped by the following dimensions: - cluster - namespace - workload - container | [optional] +**suggested_cpu** | **float** | Suggested CPU allocation (in milicores). | [optional] +**suggested_memory** | **float** | Suggested memory allocation (in MiB). | [optional] +**monthly_cost** | **float** | Estimated current monthly cost in USD. | [optional] +**monthly_potential_savings** | **float** | Estimated potential monthly savings in USD. | [optional] +**workload_type** | **str** | Type of Kubernetes workload. Possible values include: - Deployment - StatefulSet - DaemonSet - Job - CronJob - ReplicaSet - ReplicationController | [optional] +**number_of_pods** | **int** | Number of pods currently running in the workload. | [optional] +**requested_cpu** | **float** | CPU requested by the container (in milicores). | [optional] +**requested_memory** | **float** | Memory requested by the container (in MiB). | [optional] + +## Example + +```python +from sysdig_client.models.workload_rightsizing_data_response_group_by_data_inner import WorkloadRightsizingDataResponseGroupByDataInner + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadRightsizingDataResponseGroupByDataInner from a JSON string +workload_rightsizing_data_response_group_by_data_inner_instance = WorkloadRightsizingDataResponseGroupByDataInner.from_json(json) +# print the JSON string representation of the object +print(WorkloadRightsizingDataResponseGroupByDataInner.to_json()) + +# convert the object into a dict +workload_rightsizing_data_response_group_by_data_inner_dict = workload_rightsizing_data_response_group_by_data_inner_instance.to_dict() +# create an instance of WorkloadRightsizingDataResponseGroupByDataInner from a dict +workload_rightsizing_data_response_group_by_data_inner_from_dict = WorkloadRightsizingDataResponseGroupByDataInner.from_dict(workload_rightsizing_data_response_group_by_data_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadRuntimeDetectionContent.md b/docs/reference/WorkloadRuntimeDetectionContent.md new file mode 100644 index 00000000..e4ad337e --- /dev/null +++ b/docs/reference/WorkloadRuntimeDetectionContent.md @@ -0,0 +1,39 @@ +# WorkloadRuntimeDetectionContent + +Policy Event + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | [**EventContentType**](EventContentType.md) | | +**policy_id** | **int** | ID of the policy that generated the event | +**rule_name** | **str** | Name of the rule the event is generated after | +**rule_type** | **int** | Rule type: - 1 - List matching - process - 2 - List matching - container - 3 - List matching - file - 4 - List matching - network - 5 - List matching - syscall - 6 - Falco - 7 - Drift detection - 8 - Malware detection - 11 - ML - Cryptominer detection - 13 - ML - AWS anomalous login - 14 - ML - Okta anomalous login | +**rule_sub_type** | **int** | Rule subtype: - 1 - List matching - network - inbound - 2 - List matching - network - outbound - 3 - List matching - network - listening - 4 - List matching - file - readwrite - 5 - List matching - file - read only | +**rule_tags** | **List[str]** | The tags attached to the rule | +**output** | **str** | Event output, generated after the configured rule | +**fields** | [**WorkloadRuntimeDetectionContentAllOfFields**](WorkloadRuntimeDetectionContentAllOfFields.md) | | +**run_book** | **str** | The runbook URL as configured in the policy. | [optional] +**origin** | [**PolicyOrigin**](PolicyOrigin.md) | | [optional] + +## Example + +```python +from sysdig_client.models.workload_runtime_detection_content import WorkloadRuntimeDetectionContent + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadRuntimeDetectionContent from a JSON string +workload_runtime_detection_content_instance = WorkloadRuntimeDetectionContent.from_json(json) +# print the JSON string representation of the object +print(WorkloadRuntimeDetectionContent.to_json()) + +# convert the object into a dict +workload_runtime_detection_content_dict = workload_runtime_detection_content_instance.to_dict() +# create an instance of WorkloadRuntimeDetectionContent from a dict +workload_runtime_detection_content_from_dict = WorkloadRuntimeDetectionContent.from_dict(workload_runtime_detection_content_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/WorkloadRuntimeDetectionContentAllOfFields.md b/docs/reference/WorkloadRuntimeDetectionContentAllOfFields.md new file mode 100644 index 00000000..dd7caabc --- /dev/null +++ b/docs/reference/WorkloadRuntimeDetectionContentAllOfFields.md @@ -0,0 +1,28 @@ +# WorkloadRuntimeDetectionContentAllOfFields + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from sysdig_client.models.workload_runtime_detection_content_all_of_fields import WorkloadRuntimeDetectionContentAllOfFields + +# TODO update the JSON string below +json = "{}" +# create an instance of WorkloadRuntimeDetectionContentAllOfFields from a JSON string +workload_runtime_detection_content_all_of_fields_instance = WorkloadRuntimeDetectionContentAllOfFields.from_json(json) +# print the JSON string representation of the object +print(WorkloadRuntimeDetectionContentAllOfFields.to_json()) + +# convert the object into a dict +workload_runtime_detection_content_all_of_fields_dict = workload_runtime_detection_content_all_of_fields_instance.to_dict() +# create an instance of WorkloadRuntimeDetectionContentAllOfFields from a dict +workload_runtime_detection_content_all_of_fields_from_dict = WorkloadRuntimeDetectionContentAllOfFields.from_dict(workload_runtime_detection_content_all_of_fields_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/Zone.md b/docs/reference/Zone.md new file mode 100644 index 00000000..d9dcb533 --- /dev/null +++ b/docs/reference/Zone.md @@ -0,0 +1,31 @@ +# Zone + +A collection of scopes representing business areas. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**zone_name** | **str** | Zone name | +**zone_id** | **int** | Zone ID | [optional] + +## Example + +```python +from sysdig_client.models.zone import Zone + +# TODO update the JSON string below +json = "{}" +# create an instance of Zone from a JSON string +zone_instance = Zone.from_json(json) +# print the JSON string representation of the object +print(Zone.to_json()) + +# convert the object into a dict +zone_dict = zone_instance.to_dict() +# create an instance of Zone from a dict +zone_from_dict = Zone.from_dict(zone_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ZoneResponseV1.md b/docs/reference/ZoneResponseV1.md new file mode 100644 index 00000000..6ae55ae7 --- /dev/null +++ b/docs/reference/ZoneResponseV1.md @@ -0,0 +1,36 @@ +# ZoneResponseV1 + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**name** | **str** | The name of the Zone | [optional] +**description** | **str** | The description of the Zone | [optional] +**author** | **str** | Email of the user who created this Zone | [optional] +**last_modified_by** | **str** | Email of the user who last modified the Zone | [optional] +**last_updated** | **int** | Timestamp indicating the moment the Zone has been last updated.\\ It is expressed in milliseconds elapsed since January 1, 1970 UTC. | [optional] +**is_system** | **bool** | Boolean value indicating if the Zone is a *System* one | [optional] +**scopes** | [**List[ZoneScope]**](ZoneScope.md) | Attached Zone Scopes | [optional] + +## Example + +```python +from sysdig_client.models.zone_response_v1 import ZoneResponseV1 + +# TODO update the JSON string below +json = "{}" +# create an instance of ZoneResponseV1 from a JSON string +zone_response_v1_instance = ZoneResponseV1.from_json(json) +# print the JSON string representation of the object +print(ZoneResponseV1.to_json()) + +# convert the object into a dict +zone_response_v1_dict = zone_response_v1_instance.to_dict() +# create an instance of ZoneResponseV1 from a dict +zone_response_v1_from_dict = ZoneResponseV1.from_dict(zone_response_v1_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ZoneScope.md b/docs/reference/ZoneScope.md new file mode 100644 index 00000000..2170ac98 --- /dev/null +++ b/docs/reference/ZoneScope.md @@ -0,0 +1,31 @@ +# ZoneScope + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**target_type** | **str** | The target type of the Scope | +**rules** | **str** | Scoping rules to be applied | [optional] + +## Example + +```python +from sysdig_client.models.zone_scope import ZoneScope + +# TODO update the JSON string below +json = "{}" +# create an instance of ZoneScope from a JSON string +zone_scope_instance = ZoneScope.from_json(json) +# print the JSON string representation of the object +print(ZoneScope.to_json()) + +# convert the object into a dict +zone_scope_dict = zone_scope_instance.to_dict() +# create an instance of ZoneScope from a dict +zone_scope_from_dict = ZoneScope.from_dict(zone_scope_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/reference/ZonesApi.md b/docs/reference/ZonesApi.md new file mode 100644 index 00000000..fc3a9171 --- /dev/null +++ b/docs/reference/ZonesApi.md @@ -0,0 +1,460 @@ +# sysdig_client.ZonesApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_zone_v1**](ZonesApi.md#create_zone_v1) | **POST** /platform/v1/zones | Create Zone +[**delete_zone_v1**](ZonesApi.md#delete_zone_v1) | **DELETE** /platform/v1/zones/{zoneId} | Delete Zone +[**edit_zone_v1**](ZonesApi.md#edit_zone_v1) | **PUT** /platform/v1/zones/{zoneId} | Update Zone +[**get_zone_by_id_v1**](ZonesApi.md#get_zone_by_id_v1) | **GET** /platform/v1/zones/{zoneId} | Get Zone +[**list_zones_v1**](ZonesApi.md#list_zones_v1) | **GET** /platform/v1/zones | List Zones + + +# **create_zone_v1** +> ZoneResponseV1 create_zone_v1(create_zone_request_v1) + +Create Zone + +Create a new Zone.\ +\ +**Required permissions:** zones.edit + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_zone_request_v1 import CreateZoneRequestV1 +from sysdig_client.models.zone_response_v1 import ZoneResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ZonesApi(api_client) + create_zone_request_v1 = sysdig_client.CreateZoneRequestV1() # CreateZoneRequestV1 | Request body for creating a new Zone + + try: + # Create Zone + api_response = api_instance.create_zone_v1(create_zone_request_v1) + print("The response of ZonesApi->create_zone_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ZonesApi->create_zone_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **create_zone_request_v1** | [**CreateZoneRequestV1**](CreateZoneRequestV1.md)| Request body for creating a new Zone | + +### Return type + +[**ZoneResponseV1**](ZoneResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A Single Zone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **delete_zone_v1** +> delete_zone_v1(zone_id) + +Delete Zone + +Delete a Zone by its ID.\ +\ +**Required permissions:** zones.edit + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ZonesApi(api_client) + zone_id = 56 # int | + + try: + # Delete Zone + api_instance.delete_zone_v1(zone_id) + except Exception as e: + print("Exception when calling ZonesApi->delete_zone_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **zone_id** | **int**| | + +### Return type + +void (empty response body) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**204** | Zone successfully deleted | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**409** | Conflict. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **edit_zone_v1** +> ZoneResponseV1 edit_zone_v1(zone_id, create_zone_request_v1) + +Update Zone + +Update an existing Zone by its ID.\ +\ +**Required permissions:** zones.edit + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.create_zone_request_v1 import CreateZoneRequestV1 +from sysdig_client.models.zone_response_v1 import ZoneResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ZonesApi(api_client) + zone_id = 56 # int | + create_zone_request_v1 = sysdig_client.CreateZoneRequestV1() # CreateZoneRequestV1 | Request body for editing an existing zone + + try: + # Update Zone + api_response = api_instance.edit_zone_v1(zone_id, create_zone_request_v1) + print("The response of ZonesApi->edit_zone_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ZonesApi->edit_zone_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **zone_id** | **int**| | + **create_zone_request_v1** | [**CreateZoneRequestV1**](CreateZoneRequestV1.md)| Request body for editing an existing zone | + +### Return type + +[**ZoneResponseV1**](ZoneResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A Single Zone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_zone_by_id_v1** +> ZoneResponseV1 get_zone_by_id_v1(zone_id) + +Get Zone + +Retrieve a single Zone by ID.\ +\ +**Required permissions:** zones.read + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.zone_response_v1 import ZoneResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ZonesApi(api_client) + zone_id = 56 # int | + + try: + # Get Zone + api_response = api_instance.get_zone_by_id_v1(zone_id) + print("The response of ZonesApi->get_zone_by_id_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ZonesApi->get_zone_by_id_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **zone_id** | **int**| | + +### Return type + +[**ZoneResponseV1**](ZoneResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A Single Zone | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**404** | Not found. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **list_zones_v1** +> ListZonesResponseV1 list_zones_v1(filter=filter, limit=limit, offset=offset, orderby=orderby) + +List Zones + +Retrieve a paginated list of Zones.\ +\ +**Required permissions:** zones.read or teams.edit + + +### Example + +* Bearer Authentication (bearerAuth): + +```python +import sysdig_client +from sysdig_client.models.list_zones_response_v1 import ListZonesResponseV1 +from sysdig_client.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = sysdig_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure Bearer authorization: bearerAuth +configuration = sysdig_client.Configuration( + access_token = os.environ["BEARER_TOKEN"] +) + +# Enter a context with an instance of the API client +with sysdig_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = sysdig_client.ZonesApi(api_client) + filter = [] # List[str] | Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` (optional) (default to []) + limit = 25 # int | The number of items to return (optional) (default to 25) + offset = 0 # int | The offset number of items to start with (optional) (default to 0) + orderby = ["id:desc"] # List[str] | Ordering to apply in the form of `field:direction` where `direction` can either be `asc` or `desc`.\\ Multiple orderings can be applied by repeating the `orderby` parameter:\\ `&orderby=key1:direction1&orderby=key2:direction2` (optional) (default to ["id:desc"]) + + try: + # List Zones + api_response = api_instance.list_zones_v1(filter=filter, limit=limit, offset=offset, orderby=orderby) + print("The response of ZonesApi->list_zones_v1:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ZonesApi->list_zones_v1: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **filter** | [**List[str]**](str.md)| Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` | [optional] [default to []] + **limit** | **int**| The number of items to return | [optional] [default to 25] + **offset** | **int**| The offset number of items to start with | [optional] [default to 0] + **orderby** | [**List[str]**](str.md)| Ordering to apply in the form of `field:direction` where `direction` can either be `asc` or `desc`.\\ Multiple orderings can be applied by repeating the `orderby` parameter:\\ `&orderby=key1:direction1&orderby=key2:direction2` | [optional] [default to ["id:desc"]] + +### Return type + +[**ListZonesResponseV1**](ListZonesResponseV1.md) + +### Authorization + +[bearerAuth](../README.md#bearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A list of Zones | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**400** | Operation failed due to invalid payload. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**401** | Access denied. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**403** | Not enough privileges to complete the action. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**422** | Server was unable to process the request. | * X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**429** | Too many requests. | * Retry-After - Retry after X seconds.
* X-RateLimit-Limit - Maximum number of allowed requests per minute.
| +**500** | Internal server error. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/reference/monitor.rst b/docs/reference/monitor.rst deleted file mode 100644 index 841bb798..00000000 --- a/docs/reference/monitor.rst +++ /dev/null @@ -1,9 +0,0 @@ -Sysdig Monitor -============== - -.. inheritance-diagram:: SdMonitorClient -.. automodule:: sdcclient -.. autoclass:: SdMonitorClient - :members: - :inherited-members: - :undoc-members: diff --git a/docs/reference/secure.rst b/docs/reference/secure.rst deleted file mode 100644 index 49737237..00000000 --- a/docs/reference/secure.rst +++ /dev/null @@ -1,14 +0,0 @@ -Sysdig Secure -============= - -.. automodule:: sdcclient -.. autoclass:: SdSecureClient - :members: - :inherited-members: - :undoc-members: - -.. automodule:: sdcclient -.. autoclass:: SdScanningClient - :members: - :inherited-members: - :undoc-members: diff --git a/examples/add_notification_email.py b/examples/add_notification_email.py index c81e5861..10d13914 100755 --- a/examples/add_notification_email.py +++ b/examples/add_notification_email.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 3: - print(('usage: %s email' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s email" % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -32,7 +32,7 @@ # Return the result # if ok: - print('Recipient added successfully') + print("Recipient added successfully") else: print(res) sys.exit(1) diff --git a/examples/add_policy.py b/examples/add_policy.py index 7bbf2db7..f5e2caa0 100755 --- a/examples/add_policy.py +++ b/examples/add_policy.py @@ -10,9 +10,9 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('Reads policy json from standard input') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("Reads policy json from standard input") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -29,7 +29,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.add_policy_json(policy_json) diff --git a/examples/add_policy_v1.py b/examples/add_policy_v1.py index f9a63098..cac9a58b 100755 --- a/examples/add_policy_v1.py +++ b/examples/add_policy_v1.py @@ -10,9 +10,9 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('Reads policy json from standard input') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("Reads policy json from standard input") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -29,7 +29,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClientV1(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClientV1(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.add_policy(policy_json) diff --git a/examples/add_users_to_secure.py b/examples/add_users_to_secure.py index 59f4f066..895c17de 100755 --- a/examples/add_users_to_secure.py +++ b/examples/add_users_to_secure.py @@ -20,13 +20,13 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] -SECURE_TEAM_NAME = 'Secure Operations' +SECURE_TEAM_NAME = "Secure Operations" # # As of when this script was written, the Secure Operations team does @@ -34,24 +34,24 @@ # Rather, all members of the Secure team have full visibility within # Secure, which is associated with ROLE_TEAM_EDIT. # -SECURE_TEAM_ROLE = 'ROLE_TEAM_EDIT' +SECURE_TEAM_ROLE = "ROLE_TEAM_EDIT" # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, sdc_url='https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, sdc_url="https://app.sysdigcloud.com") ok, res = sdclient.list_memberships(SECURE_TEAM_NAME) if not ok: - print(('Unable to get memberships for ' + SECURE_TEAM_NAME + ' team: ', res)) + print(("Unable to get memberships for " + SECURE_TEAM_NAME + " team: ", res)) sys.exit(1) memberships = res ok, res = sdclient.get_users() if not ok: - print(('Unable to get users: ', res)) + print(("Unable to get users: ", res)) sys.exit(1) all_users = res @@ -60,15 +60,15 @@ # rather than ID, so convert the IDs. # for user in all_users: - if user['username'] in memberships: - print(('Will preserve existing membership for: ' + user['username'])) + if user["username"] in memberships: + print(("Will preserve existing membership for: " + user["username"])) else: - print(('Will add new member: ' + user['username'])) - memberships[user['username']] = SECURE_TEAM_ROLE + print(("Will add new member: " + user["username"])) + memberships[user["username"]] = SECURE_TEAM_ROLE ok, res = sdclient.save_memberships(SECURE_TEAM_NAME, memberships=memberships) if not ok: - print(('Could not edit team:', res, '. Exiting.')) + print(("Could not edit team:", res, ". Exiting.")) sys.exit(1) else: print(('Finished syncing memberships of "' + SECURE_TEAM_NAME + '" team')) diff --git a/examples/create_access_keys.py b/examples/create_access_keys.py index a683e92d..4d396f09 100755 --- a/examples/create_access_keys.py +++ b/examples/create_access_keys.py @@ -12,36 +12,40 @@ # Parse arguments # if len(sys.argv) != 2: - print('usage: %s ' % sys.argv[0]) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') - print('For this script to work, the user for the token must have Admin rights') + print("usage: %s " % sys.argv[0]) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") + print("For this script to work, the user for the token must have Admin rights") sys.exit(1) sdc_token = sys.argv[1] # Maximum number of agents allowed to connect for this access key. Set to '' if not required -agent_limit = '' +agent_limit = "" # Number of agent licenses that are ALWAYS available to this access key. This directly counts against the maximum number of available licenses. Set to '' if not required. -agent_reserved = '' +agent_reserved = "" # Team ID to which to assign the access key. Team ID must be valid. Set to '' if not required. -team_id = '' +team_id = "" # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, 'https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, "https://app.sysdigcloud.com") # # Get the configuration # -ok, res = sdclient.create_access_key( - agent_limit, - agent_reserved, - team_id) +ok, res = sdclient.create_access_key(agent_limit, agent_reserved, team_id) if ok: - print('Access Key: {}\nTeam ID: {}\nAgent Limit: {}\nAgent Reserved: {}\n==========='.format(res['customerAccessKey']['accessKey'], res['customerAccessKey']['teamId'], res['customerAccessKey']['limit'], res['customerAccessKey']['reservation'])) + print( + "Access Key: {}\nTeam ID: {}\nAgent Limit: {}\nAgent Reserved: {}\n===========".format( + res["customerAccessKey"]["accessKey"], + res["customerAccessKey"]["teamId"], + res["customerAccessKey"]["limit"], + res["customerAccessKey"]["reservation"], + ) + ) else: print(res) sys.exit(1) diff --git a/examples/create_alert.py b/examples/create_alert.py index 04aeb62a..5994a463 100755 --- a/examples/create_alert.py +++ b/examples/create_alert.py @@ -16,9 +16,9 @@ # Parse arguments # def usage(): - print(('usage: %s [-a|--alert ] ' % sys.argv[0])) - print('-a|--alert: Set name of alert to create') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-a|--alert ] " % sys.argv[0])) + print("-a|--alert: Set name of alert to create") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -45,10 +45,11 @@ def usage(): # # Find notification channels (you need IDs to create an alert). # -notify_channels = [{'type': 'SLACK', 'channel': '#python-sdc-test-alert'}, - {'type': 'EMAIL', 'emailRecipients': ['python-sdc-testing@draios.com', 'test@sysdig.com']}, - {'type': 'SNS', 'snsTopicARNs': ['arn:aws:sns:us-east-1:273107874544:alarms-stg']} - ] +notify_channels = [ + {"type": "SLACK", "channel": "#python-sdc-test-alert"}, + {"type": "EMAIL", "emailRecipients": ["python-sdc-testing@draios.com", "test@sysdig.com"]}, + {"type": "SNS", "snsTopicARNs": ["arn:aws:sns:us-east-1:273107874544:alarms-stg"]}, +] ok, res = sdclient.get_notification_ids(notify_channels) if not ok: @@ -62,17 +63,18 @@ def usage(): # ok, res = sdclient.create_alert( alert_name, # Alert name. - 'this alert was automatically created using the python Sysdig Cloud library', # Alert description. + "this alert was automatically created using the python Sysdig Cloud library", # Alert description. 6, # Syslog-encoded severity. 6 means 'info'. 60, # The alert will fire if the condition is met for at least 60 seconds. - 'avg(cpu.used.percent) > 80', # The condition. - ['host.mac', 'proc.name'], # Segmentation. We want to check this metric for every process on every machine. - 'ANY', + "avg(cpu.used.percent) > 80", # The condition. + ["host.mac", "proc.name"], # Segmentation. We want to check this metric for every process on every machine. + "ANY", # in case there is more than one tomcat process, this alert will fire when a single one of them crosses the 80% threshold. 'proc.name = "tomcat"', # Filter. We want to receive a notification only if the name of the process meeting the condition is 'tomcat'. notification_channel_ids, - False) # This alert will be disabled when it's created. + False, +) # This alert will be disabled when it's created. # # Validate a print the results. diff --git a/examples/create_dashboard.py b/examples/create_dashboard.py index 9bee7b97..45fd372a 100755 --- a/examples/create_dashboard.py +++ b/examples/create_dashboard.py @@ -16,9 +16,9 @@ # Parse arguments # def usage(): - print(('usage: %s [-d|--dashboard ] ' % sys.argv[0])) - print('-d|--dashboard: Set name of dashboard to create') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-d|--dashboard ] " % sys.argv[0])) + print("-d|--dashboard: Set name of dashboard to create") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -55,13 +55,13 @@ def usage(): # You can also refer to AWS tags by using "cloudProvider.tag.*" metadata or # agent tags by using "agent.tag.*" metadata dashboardFilter = 'proc.name = "cassandra"' -print('Creating dashboard from view') +print("Creating dashboard from view") ok, res = sdclient.create_dashboard_from_view(dashboardName, viewName, dashboardFilter) # # Check the result # if ok: - print('Dashboard created successfully') + print("Dashboard created successfully") else: print(res) sys.exit(1) @@ -76,14 +76,14 @@ def usage(): # Filter to apply to the new dashboard. Same as above. dashboardFilter = 'proc.name != "cassandra"' -print('Creating dashboard from dashboard') +print("Creating dashboard from dashboard") ok, res = sdclient.create_dashboard_from_dashboard(dashboardCopy, dashboardName, dashboardFilter) # # Check the result # if ok: - print('Dashboard copied successfully') + print("Dashboard copied successfully") else: print(res) sys.exit(1) diff --git a/examples/create_default_policies.py b/examples/create_default_policies.py index d7c904fd..990c360c 100755 --- a/examples/create_default_policies.py +++ b/examples/create_default_policies.py @@ -13,8 +13,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -29,7 +29,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.create_default_policies() diff --git a/examples/create_default_policies_v1.py b/examples/create_default_policies_v1.py index 620ab063..97111e66 100755 --- a/examples/create_default_policies_v1.py +++ b/examples/create_default_policies_v1.py @@ -13,8 +13,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -29,7 +29,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClientV1(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClientV1(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.create_default_policies() diff --git a/examples/create_sysdig_capture.py b/examples/create_sysdig_capture.py index bbf5d31f..2a711345 100755 --- a/examples/create_sysdig_capture.py +++ b/examples/create_sysdig_capture.py @@ -12,15 +12,15 @@ # Parse arguments # if len(sys.argv) not in (5, 6): - print(('usage: %s hostname capture_name duration [filter]' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s hostname capture_name duration [filter]" % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] hostname = sys.argv[2] capture_name = sys.argv[3] duration = sys.argv[4] -capture_filter = '' +capture_filter = "" if len(sys.argv) == 6: capture_filter = sys.argv[5] @@ -36,7 +36,7 @@ # Show the list of metrics # if ok: - capture = res['dump'] + capture = res["dump"] else: print(res) sys.exit(1) @@ -44,18 +44,18 @@ while True: ok, res = sdclient.poll_sysdig_capture(capture) if ok: - capture = res['dump'] + capture = res["dump"] else: print(res) sys.exit(1) - print(('Capture is in state ' + capture['status'])) - if capture['status'] in ('requested', 'capturing', 'uploading'): + print(("Capture is in state " + capture["status"])) + if capture["status"] in ("requested", "capturing", "uploading"): pass - elif capture['status'] in ('error', 'uploadingError'): + elif capture["status"] in ("error", "uploadingError"): sys.exit(1) - elif capture['status'] in ('done', 'uploaded'): - print(('Download at: ' + sdclient.url + capture['downloadURL'])) + elif capture["status"] in ("done", "uploaded"): + print(("Download at: " + sdclient.url + capture["downloadURL"])) sys.exit(0) time.sleep(1) diff --git a/examples/dashboard.py b/examples/dashboard.py index 2441a4e9..0638f8b1 100755 --- a/examples/dashboard.py +++ b/examples/dashboard.py @@ -14,9 +14,9 @@ # Parse arguments # def usage(): - print(('usage: %s [-d|--dashboard ] ' % sys.argv[0])) - print('-d|--dashboard: Set name of dashboard to create') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-d|--dashboard ] " % sys.argv[0])) + print("-d|--dashboard: Set name of dashboard to create") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -48,8 +48,8 @@ def usage(): # Check the result if ok: - print(('Dashboard %d created successfully' % res['dashboard']['id'])) - dashboard_configuration = res['dashboard'] + print(("Dashboard %d created successfully" % res["dashboard"]["id"])) + dashboard_configuration = res["dashboard"] else: print(res) sys.exit(1) @@ -61,8 +61,8 @@ def usage(): # Check the result if ok and len(res) > 0: - print('Dashboard found') - dashboard_configuration = res[0]['dashboard'] + print("Dashboard found") + dashboard_configuration = res[0]["dashboard"] else: print(res) sys.exit(1) @@ -70,19 +70,16 @@ def usage(): # # Add a time series # -panel_name = 'CPU Over Time' -panel_type = 'timeSeries' -metrics = [ - {'id': 'proc.name'}, - {'id': 'cpu.used.percent', 'aggregations': {'time': 'avg', 'group': 'avg'}} -] +panel_name = "CPU Over Time" +panel_type = "timeSeries" +metrics = [{"id": "proc.name"}, {"id": "cpu.used.percent", "aggregations": {"time": "avg", "group": "avg"}}] scope = 'proc.name = "cassandra"' ok, res = sdclient.add_dashboard_panel(dashboard_configuration, panel_name, panel_type, metrics, scope=scope) # Check the result if ok: - print('Panel added successfully') - dashboard_configuration = res['dashboard'] + print("Panel added successfully") + dashboard_configuration = res["dashboard"] else: print(res) sys.exit(1) @@ -90,22 +87,20 @@ def usage(): # # Add a top bar chart # -panel_name = 'CPU by host' -panel_type = 'top' -metrics = [ - {'id': 'host.hostName'}, - {'id': 'cpu.used.percent', 'aggregations': {'time': 'avg', 'group': 'avg'}} -] -sort_direction = 'desc' +panel_name = "CPU by host" +panel_type = "top" +metrics = [{"id": "host.hostName"}, {"id": "cpu.used.percent", "aggregations": {"time": "avg", "group": "avg"}}] +sort_direction = "desc" limit = 10 -layout = {'col': 1, 'row': 7, 'size_x': 12, 'size_y': 6} -ok, res = sdclient.add_dashboard_panel(dashboard_configuration, panel_name, panel_type, metrics, - sort_direction=sort_direction, limit=limit, layout=layout) +layout = {"col": 1, "row": 7, "size_x": 12, "size_y": 6} +ok, res = sdclient.add_dashboard_panel( + dashboard_configuration, panel_name, panel_type, metrics, sort_direction=sort_direction, limit=limit, layout=layout +) # Check the result if ok: - print('Panel added successfully') - dashboard_configuration = res['dashboard'] + print("Panel added successfully") + dashboard_configuration = res["dashboard"] else: print(res) sys.exit(1) @@ -113,18 +108,16 @@ def usage(): # # Add a number panel # -panel_name = 'CPU' -panel_type = 'number' -metrics = [ - {'id': 'cpu.used.percent', 'aggregations': {'time': 'avg', 'group': 'avg'}} -] -layout = {'col': 1, 'row': 13, 'size_x': 12, 'size_y': 6} +panel_name = "CPU" +panel_type = "number" +metrics = [{"id": "cpu.used.percent", "aggregations": {"time": "avg", "group": "avg"}}] +layout = {"col": 1, "row": 13, "size_x": 12, "size_y": 6} ok, res = sdclient.add_dashboard_panel(dashboard_configuration, panel_name, panel_type, metrics, layout=layout) # Check the result if ok: - print('Panel added successfully') - dashboard_configuration = res['dashboard'] + print("Panel added successfully") + dashboard_configuration = res["dashboard"] else: print(res) sys.exit(1) @@ -132,12 +125,12 @@ def usage(): # # Remove a panel # -ok, res = sdclient.remove_dashboard_panel(dashboard_configuration, 'CPU Over Time') +ok, res = sdclient.remove_dashboard_panel(dashboard_configuration, "CPU Over Time") # Check the result if ok: - print('Panel removed successfully') - dashboard_configuration = res['dashboard'] + print("Panel removed successfully") + dashboard_configuration = res["dashboard"] else: print(res) sys.exit(1) @@ -149,7 +142,7 @@ def usage(): # Check the result if ok: - print('Dashboard deleted successfully') + print("Dashboard deleted successfully") else: print(res) sys.exit(1) diff --git a/examples/dashboard_backup_v1_restore_v2.py b/examples/dashboard_backup_v1_restore_v2.py index eb9f7ef5..38739943 100755 --- a/examples/dashboard_backup_v1_restore_v2.py +++ b/examples/dashboard_backup_v1_restore_v2.py @@ -12,8 +12,8 @@ # Parse arguments # if len(sys.argv) != 5: - print(f'usage: {sys.argv[0]} ') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(f"usage: {sys.argv[0]} ") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_v1_url = sys.argv[1] @@ -36,25 +36,21 @@ print(res) sys.exit(1) -for dashboard in res['dashboards']: - file_name = '{}.json'.format(dashboard['id']) - print(('Saving v1 dashboard {} to file {}...'.format( - dashboard['name'], file_name))) +for dashboard in res["dashboards"]: + file_name = "{}.json".format(dashboard["id"]) + print(("Saving v1 dashboard {} to file {}...".format(dashboard["name"], file_name))) sdclient_v1.save_dashboard_to_file(dashboard, file_name) - print('Importing dashboard to v2...') + print("Importing dashboard to v2...") ok, res = sdclient_v2.create_dashboard_from_file( - 'import of {}'.format(dashboard['name']), - file_name, - None, - shared=dashboard['isShared'], - public=dashboard['isPublic']) + "import of {}".format(dashboard["name"]), file_name, None, shared=dashboard["isShared"], public=dashboard["isPublic"] + ) if ok: - print(('Dashboard {} imported!'.format(dashboard['name']))) - sdclient_v2.delete_dashboard(res['dashboard']) + print(("Dashboard {} imported!".format(dashboard["name"]))) + sdclient_v2.delete_dashboard(res["dashboard"]) else: - print(('Dashboard {} import failed:'.format(dashboard['name']))) + print(("Dashboard {} import failed:".format(dashboard["name"]))) print(res) - print('\n') + print("\n") diff --git a/examples/dashboard_basic_crud.py b/examples/dashboard_basic_crud.py index 89945e29..aa1c64b1 100755 --- a/examples/dashboard_basic_crud.py +++ b/examples/dashboard_basic_crud.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -34,12 +34,12 @@ print(res) sys.exit(1) -dashboard = res['dashboard'] +dashboard = res["dashboard"] # # Get Dashboard. # -ok, res = sdclient.get_dashboard(dashboard['id']) +ok, res = sdclient.get_dashboard(dashboard["id"]) # # Check for successful retrieval @@ -48,12 +48,12 @@ print(res) sys.exit(1) -dashboard = res['dashboard'] +dashboard = res["dashboard"] # # Update Dashboard. # -dashboard['name'] = "Let's change the dashboard name. " + uuid.uuid4().hex +dashboard["name"] = "Let's change the dashboard name. " + uuid.uuid4().hex ok, res = sdclient.update_dashboard(dashboard) # @@ -63,7 +63,7 @@ print(res) sys.exit(1) -dashboard = res['dashboard'] +dashboard = res["dashboard"] # # Delete Dashboard. diff --git a/examples/dashboard_ibm_cloud.py b/examples/dashboard_ibm_cloud.py index ad9745e1..9d6c4614 100755 --- a/examples/dashboard_ibm_cloud.py +++ b/examples/dashboard_ibm_cloud.py @@ -10,10 +10,10 @@ # Parse arguments. def usage(): - print(('usage: %s ' % sys.argv[0])) - print('endpoint-url: The endpoint URL that should point to IBM Cloud') - print('apikey: IBM Cloud IAM apikey that will be used to retrieve an access token') - print('instance-guid: GUID of an IBM Cloud Monitoring with Sysdig instance') + print(("usage: %s " % sys.argv[0])) + print("endpoint-url: The endpoint URL that should point to IBM Cloud") + print("apikey: IBM Cloud IAM apikey that will be used to retrieve an access token") + print("instance-guid: GUID of an IBM Cloud Monitoring with Sysdig instance") sys.exit(1) @@ -23,8 +23,8 @@ def usage(): URL = sys.argv[1] APIKEY = sys.argv[2] GUID = sys.argv[3] -DASHBOARD_NAME = 'IBM Cloud IAM with Python Client Example' -PANEL_NAME = 'CPU Over Time' +DASHBOARD_NAME = "IBM Cloud IAM with Python Client Example" +PANEL_NAME = "CPU Over Time" # Instantiate the client with an IBM Cloud auth object ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID) @@ -36,25 +36,21 @@ def usage(): # Check the result dashboard_configuration = None if ok: - print(('Dashboard %d created successfully' % res['dashboard']['id'])) - dashboard_configuration = res['dashboard'] + print(("Dashboard %d created successfully" % res["dashboard"]["id"])) + dashboard_configuration = res["dashboard"] else: print(res) sys.exit(1) # Add a time series panel -panel_type = 'timeSeries' -metrics = [ - {'id': 'proc.name'}, - {'id': 'cpu.used.percent', 'aggregations': {'time': 'avg', 'group': 'avg'}} -] -ok, res = sdclient.add_dashboard_panel( - dashboard_configuration, PANEL_NAME, panel_type, metrics) +panel_type = "timeSeries" +metrics = [{"id": "proc.name"}, {"id": "cpu.used.percent", "aggregations": {"time": "avg", "group": "avg"}}] +ok, res = sdclient.add_dashboard_panel(dashboard_configuration, PANEL_NAME, panel_type, metrics) # Check the result if ok: - print('Panel added successfully') - dashboard_configuration = res['dashboard'] + print("Panel added successfully") + dashboard_configuration = res["dashboard"] else: print(res) sys.exit(1) @@ -64,8 +60,8 @@ def usage(): # Check the result if ok: - print('Panel removed successfully') - dashboard_configuration = res['dashboard'] + print("Panel removed successfully") + dashboard_configuration = res["dashboard"] else: print(res) sys.exit(1) @@ -75,9 +71,9 @@ def usage(): # Check the result if ok: - print('Dashboard deleted successfully') + print("Dashboard deleted successfully") else: print(res) sys.exit(1) -print('IBM Cloud IAM auth worked successfully!') +print("IBM Cloud IAM auth worked successfully!") diff --git a/examples/dashboard_save_load.py b/examples/dashboard_save_load.py index 8cb5924c..b6715921 100755 --- a/examples/dashboard_save_load.py +++ b/examples/dashboard_save_load.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -31,10 +31,10 @@ print(res) sys.exit(1) -if len(res['dashboards']) > 0: - sdclient.save_dashboard_to_file(res['dashboards'][0], 'dashboard.json') +if len(res["dashboards"]) > 0: + sdclient.save_dashboard_to_file(res["dashboards"][0], "dashboard.json") else: - print('the user has no dashboards. Exiting.') + print("the user has no dashboards. Exiting.") sys.exit(0) # @@ -43,10 +43,10 @@ # dashboardFilter = 'proc.name = "cassandra"' -ok, res = sdclient.create_dashboard_from_file('test dasboard from file', 'dashboard.json', dashboardFilter) +ok, res = sdclient.create_dashboard_from_file("test dasboard from file", "dashboard.json", dashboardFilter) if ok: - print('Dashboard created successfully') + print("Dashboard created successfully") else: print(res) sys.exit(1) diff --git a/examples/dashboard_scope.py b/examples/dashboard_scope.py index f1c95698..938553a2 100755 --- a/examples/dashboard_scope.py +++ b/examples/dashboard_scope.py @@ -16,10 +16,10 @@ # def evaluate(scope, expected): parsed_scope = SdcClient.convert_scope_string_to_expression(scope) - print('{} is valid: {}'.format(scope, parsed_scope[0] is True)) + print("{} is valid: {}".format(scope, parsed_scope[0] is True)) if parsed_scope[0] != expected: - print('Unexpected parsing result!') + print("Unexpected parsing result!") sys.exit(1) @@ -28,7 +28,7 @@ def evaluate(scope, expected): # NOTE: For now you can still leave values without quotes. # The API will be more strict, so please make sure you adopt the new format! -evaluate('proc.name = cassandra', True) +evaluate("proc.name = cassandra", True) # other operators evaluate('proc.name != "cassandra"', True) @@ -47,7 +47,7 @@ def evaluate(scope, expected): evaluate('kubernetes.service.name = "database" and proc.name = "cassandra"', True) # the scope can obviously be omitted in the dashboard configuration -evaluate('', True) +evaluate("", True) evaluate(None, True) # invalid scopes will cause errors @@ -63,5 +63,5 @@ def evaluate(scope, expected): # Here some errors that will not be detected by the Python library, but the API will # evaluate('proc.name = "cassandra" or proc.name = "mysql"', True) # not AND'd expressions are supported -evaluate('proc.name in ("cassandra\', \'mysql")', True) # mismatching quotes +evaluate("proc.name in (\"cassandra', 'mysql\")", True) # mismatching quotes evaluate('proc.name in ("cassandra", "mysql"', True) # missing parenthesis diff --git a/examples/delete_alert.py b/examples/delete_alert.py index dd3cfe84..f663515a 100755 --- a/examples/delete_alert.py +++ b/examples/delete_alert.py @@ -13,9 +13,9 @@ # Parse arguments # def usage(): - print(('usage: %s [-a|--alert ] ' % sys.argv[0])) - print('-a|--alert: Set name of alert to delete') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-a|--alert ] " % sys.argv[0])) + print("-a|--alert: Set name of alert to delete") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -44,8 +44,8 @@ def usage(): print(res) sys.exit(1) -for alert in res['alerts']: - if alert['name'] == alert_name: +for alert in res["alerts"]: + if alert["name"] == alert_name: print("Deleting alert") ok, res = sdclient.delete_alert(alert) if not ok: diff --git a/examples/delete_all_policies.py b/examples/delete_all_policies.py index 0cb3a1c9..3742925d 100755 --- a/examples/delete_all_policies.py +++ b/examples/delete_all_policies.py @@ -9,8 +9,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -25,7 +25,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") # Get a list of policyIds ok, res = sdclient.list_policies() @@ -38,8 +38,8 @@ def usage(): policies = res for policy in policies: - print(("deleting policy: " + str(policy['id']))) - ok, res = sdclient.delete_policy_id(policy['id']) + print(("deleting policy: " + str(policy["id"]))) + ok, res = sdclient.delete_policy_id(policy["id"]) if not ok: print(res) sys.exit(1) diff --git a/examples/delete_all_policies_v1.py b/examples/delete_all_policies_v1.py index b13a3d27..c7b24d10 100755 --- a/examples/delete_all_policies_v1.py +++ b/examples/delete_all_policies_v1.py @@ -9,8 +9,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -25,7 +25,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClientV1(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClientV1(sdc_token, "https://secure.sysdig.com") # Get a list of policyIds ok, res = sdclient.list_policies() @@ -35,11 +35,11 @@ def usage(): print(res) sys.exit(1) else: - policies = res['policies'] + policies = res["policies"] for policy in policies: - print(("deleting policy: " + str(policy['id']))) - ok, res = sdclient.delete_policy_id(policy['id']) + print(("deleting policy: " + str(policy["id"]))) + ok, res = sdclient.delete_policy_id(policy["id"]) if not ok: print(res) sys.exit(1) diff --git a/examples/delete_dashboard.py b/examples/delete_dashboard.py index 220a4122..4dbb2e61 100755 --- a/examples/delete_dashboard.py +++ b/examples/delete_dashboard.py @@ -13,9 +13,9 @@ # Parse arguments # def usage(): - print(('usage: %s [-p|--pattern ] ' % sys.argv[0])) - print('-p|--pattern: Delete all dashboards containing the provided pattern') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-p|--pattern ] " % sys.argv[0])) + print("-p|--pattern: Delete all dashboards containing the provided pattern") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -50,9 +50,9 @@ def usage(): # # Delete all the dashboards containing pattern # -for dashboard in res['dashboards']: - if pattern in dashboard['name']: - print(("Deleting " + dashboard['name'])) +for dashboard in res["dashboards"]: + if pattern in dashboard["name"]: + print(("Deleting " + dashboard["name"])) ok, res = sdclient.delete_dashboard(dashboard) if not ok: print(res) diff --git a/examples/delete_event.py b/examples/delete_event.py index 898315f5..a97eb246 100755 --- a/examples/delete_event.py +++ b/examples/delete_event.py @@ -15,9 +15,9 @@ def usage(): - print(('usage: %s [-e|--event ] ' % sys.argv[0])) - print('-e|--event: Name of event to delete') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-e|--event ] " % sys.argv[0])) + print("-e|--event: Name of event to delete") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -53,8 +53,8 @@ def usage(): # # Delete the first event among the returned ones # -for event in res['events']: - print(("Deleting event " + event['name'])) +for event in res["events"]: + print(("Deleting event " + event["name"])) ok, res = sdclient.delete_event(event) if not ok: diff --git a/examples/delete_policy.py b/examples/delete_policy.py index c644da2d..967ab487 100755 --- a/examples/delete_policy.py +++ b/examples/delete_policy.py @@ -11,10 +11,10 @@ def usage(): - print(('usage: %s [-i|--id ] [-n|--name ] ' % sys.argv[0])) - print('-i|--id: the id of the policy to delete') - print('-n|--name: the name of the policy to delete') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s [-i|--id ] [-n|--name ] " % sys.argv[0])) + print("-i|--id: the id of the policy to delete") + print("-n|--name: the name of the policy to delete") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -45,7 +45,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") if len(id) > 0: ok, res = sdclient.delete_policy_id(id) diff --git a/examples/delete_policy_v1.py b/examples/delete_policy_v1.py index bd8f7f06..cbb8d268 100755 --- a/examples/delete_policy_v1.py +++ b/examples/delete_policy_v1.py @@ -11,10 +11,10 @@ def usage(): - print(('usage: %s [-i|--id ] [-n|--name ] ' % sys.argv[0])) - print('-i|--id: the id of the policy to delete') - print('-n|--name: the name of the policy to delete') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s [-i|--id ] [-n|--name ] " % sys.argv[0])) + print("-i|--id: the id of the policy to delete") + print("-n|--name: the name of the policy to delete") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -45,7 +45,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClientV1(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClientV1(sdc_token, "https://secure.sysdig.com") if len(id) > 0: ok, res = sdclient.delete_policy_id(id) diff --git a/examples/download_dashboards.py b/examples/download_dashboards.py index ccb76dd4..a82c78c3 100755 --- a/examples/download_dashboards.py +++ b/examples/download_dashboards.py @@ -8,6 +8,7 @@ import zipfile from sdcclient import SdMonitorClient +import pathlib def zipdir(path, ziph): @@ -21,7 +22,7 @@ def cleanup_dir(path): if not os.path.exists(path): return if not os.path.isdir(path): - print('Provided path is not a directory') + print("Provided path is not a directory") sys.exit(-1) for file in os.listdir(path): @@ -30,23 +31,23 @@ def cleanup_dir(path): if os.path.isfile(file_path): os.unlink(file_path) else: - print(('Cannot clean the provided directory due to delete failure on %s' % file_path)) + print(("Cannot clean the provided directory due to delete failure on %s" % file_path)) except Exception as e: print(e) - os.rmdir(path) + pathlib.Path(path).rmdir() # # Parse arguments # if len(sys.argv) != 3: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] dashboard_state_file = sys.argv[2] -sysdig_dashboard_dir = 'sysdig-dashboard-dir' +sysdig_dashboard_dir = "sysdig-dashboard-dir" # # Instantiate the SDC client @@ -72,12 +73,12 @@ def cleanup_dir(path): if not os.path.exists(sysdig_dashboard_dir): os.makedirs(sysdig_dashboard_dir) -for db in res['dashboards']: - sdclient.save_dashboard_to_file(db, os.path.join(sysdig_dashboard_dir, str(db['id']))) +for db in res["dashboards"]: + sdclient.save_dashboard_to_file(db, os.path.join(sysdig_dashboard_dir, str(db["id"]))) - print(("Name: %s" % (db['name']))) + print(("Name: %s" % (db["name"]))) -zipf = zipfile.ZipFile(dashboard_state_file, 'w', zipfile.ZIP_DEFLATED) +zipf = zipfile.ZipFile(dashboard_state_file, "w", zipfile.ZIP_DEFLATED) zipdir(sysdig_dashboard_dir, zipf) zipf.close() diff --git a/examples/flip_alerts_enabled.py b/examples/flip_alerts_enabled.py index 62075854..72c4a3b4 100755 --- a/examples/flip_alerts_enabled.py +++ b/examples/flip_alerts_enabled.py @@ -15,9 +15,9 @@ # Parse arguments # def usage(): - print(('usage: %s [-a|--alert ] ' % sys.argv[0])) - print('-a|--alert: Comma seperated list of alerts') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-a|--alert ] " % sys.argv[0])) + print("-a|--alert: Comma seperated list of alerts") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -47,12 +47,12 @@ def usage(): sys.exit(1) alert_found = False -for alert in res['alerts']: - if alert['name'] in alert_list: +for alert in res["alerts"]: + if alert["name"] in alert_list: alert_found = True - print(("Updating \'" + alert['name'] + "\'. Enabled status before change:")) - print((alert['enabled'])) - alert['enabled'] = not alert['enabled'] + print(("Updating '" + alert["name"] + "'. Enabled status before change:")) + print((alert["enabled"])) + alert["enabled"] = not alert["enabled"] ok, res_update = sdclient.update_alert(alert) if not ok: @@ -60,10 +60,10 @@ def usage(): sys.exit(1) # Validate and print the results - print('Alert status after modification:') - print((alert['enabled'])) - print(' ') + print("Alert status after modification:") + print((alert["enabled"])) + print(" ") if not alert_found: - print('Alert to be updated not found') + print("Alert to be updated not found") sys.exit(1) diff --git a/examples/get_agents_config.py b/examples/get_agents_config.py index f13785b0..20b2016b 100755 --- a/examples/get_agents_config.py +++ b/examples/get_agents_config.py @@ -14,8 +14,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -23,7 +23,7 @@ # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, 'https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, "https://app.sysdigcloud.com") # # Get the configuration diff --git a/examples/get_anchore_users_account.py b/examples/get_anchore_users_account.py index e7703654..81c9993f 100644 --- a/examples/get_anchore_users_account.py +++ b/examples/get_anchore_users_account.py @@ -9,8 +9,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -25,7 +25,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdScanningClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdScanningClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.get_anchore_users_account() diff --git a/examples/get_dashboard.py b/examples/get_dashboard.py index ec4f95e0..b0d2816f 100755 --- a/examples/get_dashboard.py +++ b/examples/get_dashboard.py @@ -9,6 +9,7 @@ import zipfile from sdcclient import SdMonitorClient +import pathlib def zipdir(path, ziph): @@ -22,7 +23,7 @@ def cleanup_dir(path): if not os.path.exists(path): return if not os.path.isdir(path): - print('Provided path is not a directory') + print("Provided path is not a directory") sys.exit(-1) for file in os.listdir(path): @@ -31,10 +32,10 @@ def cleanup_dir(path): if os.path.isfile(file_path): os.unlink(file_path) else: - print(('Cannot clean the provided directory due to delete failure on %s' % file_path)) + print(("Cannot clean the provided directory due to delete failure on %s" % file_path)) except Exception as e: print(e) - os.rmdir(path) + pathlib.Path(path).rmdir() # @@ -42,7 +43,7 @@ def cleanup_dir(path): # if len(sys.argv) != 4: print(('usage: %s "" ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -50,7 +51,7 @@ def cleanup_dir(path): sdc_token = sys.argv[1] dashboard_name = sys.argv[2] dashboard_state_file = sys.argv[3] -sysdig_dashboard_dir = 'sysdig-dashboard-dir' +sysdig_dashboard_dir = "sysdig-dashboard-dir" # # Instantiate the SDC client @@ -65,9 +66,9 @@ def cleanup_dir(path): # Check the result if ok and len(res) > 0: - print('Dashboard found, ID: ', res[0]['dashboard']['id']) - dashboard_id = res[0]['dashboard']['id'] - dashboard_configuration = res[0]['dashboard'] + print("Dashboard found, ID: ", res[0]["dashboard"]["id"]) + dashboard_id = res[0]["dashboard"]["id"] + dashboard_configuration = res[0]["dashboard"] else: print(res) sys.exit(1) @@ -90,13 +91,13 @@ def cleanup_dir(path): # # Check for successful retrieval and save it # -if len(res['dashboard']) > 0: - print('Downloading Dashboard ID: ', dashboard_id) - sdclient.save_dashboard_to_file(res['dashboard'], os.path.join(sysdig_dashboard_dir, str(res['dashboard']['id']))) - print('Dashboard Name: "%s"' % (res['dashboard']['name']), 'ID:', dashboard_id, 'downloaded') +if len(res["dashboard"]) > 0: + print("Downloading Dashboard ID: ", dashboard_id) + sdclient.save_dashboard_to_file(res["dashboard"], os.path.join(sysdig_dashboard_dir, str(res["dashboard"]["id"]))) + print('Dashboard Name: "%s"' % (res["dashboard"]["name"]), "ID:", dashboard_id, "downloaded") -zipf = zipfile.ZipFile(dashboard_state_file, 'w', zipfile.ZIP_DEFLATED) +zipf = zipfile.ZipFile(dashboard_state_file, "w", zipfile.ZIP_DEFLATED) zipdir(sysdig_dashboard_dir, zipf) zipf.close() diff --git a/examples/get_data_advanced.py b/examples/get_data_advanced.py index a1959aa6..048afe05 100755 --- a/examples/get_data_advanced.py +++ b/examples/get_data_advanced.py @@ -16,8 +16,8 @@ # Parse arguments # if len(sys.argv) != 3: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -38,12 +38,7 @@ # utilization for each container separately. {"id": "container.name"}, # The second metric we request is the CPU. We aggregate it as an average. - {"id": "cpu.used.percent", - "aggregations": { - "time": "avg", - "group": "avg" - } - } + {"id": "cpu.used.percent", "aggregations": {"time": "avg", "group": "avg"}}, ] # @@ -60,13 +55,15 @@ # # Fire the query. # -ok, res = sdclient.get_data(metrics=metrics, # List of metrics to query - start_ts=-600, # Start of query span is 600 seconds ago - end_ts=0, # End the query span now - sampling_s=60, # 1 data point per minute - filter=filter, # The filter specifying the target host - paging=paging, # Paging to limit to just the 5 most busy - datasource_type='container') # The source for our metrics is the container +ok, res = sdclient.get_data( + metrics=metrics, # List of metrics to query + start_ts=-600, # Start of query span is 600 seconds ago + end_ts=0, # End the query span now + sampling_s=60, # 1 data point per minute + filter=filter, # The filter specifying the target host + paging=paging, # Paging to limit to just the 5 most busy + datasource_type="container", +) # The source for our metrics is the container # # Show the result! diff --git a/examples/get_data_datasource.py b/examples/get_data_datasource.py index e7625079..0b55280e 100755 --- a/examples/get_data_datasource.py +++ b/examples/get_data_datasource.py @@ -12,8 +12,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -23,13 +23,7 @@ # sdclient = SdcClient(sdc_token) -cpu_metric = [ - {"id": "cpu.used.percent", - "aggregations": { - "time": "avg", - "group": "avg" - } - }] +cpu_metric = [{"id": "cpu.used.percent", "aggregations": {"time": "avg", "group": "avg"}}] # # First example: CPU by host name @@ -37,9 +31,11 @@ # req = [{"id": "host.hostName"}] req.extend(cpu_metric) -ok, res = sdclient.get_data(req, # metrics list - -600, # start_ts = 600 seconds ago - 0) # end_ts = now +ok, res = sdclient.get_data( + req, # metrics list + -600, # start_ts = 600 seconds ago + 0, +) # end_ts = now if ok: data = res @@ -56,9 +52,11 @@ # req = [{"id": "container.name"}] req.extend(cpu_metric) -ok, res = sdclient.get_data(req, # metrics list - -600, # start_ts = 600 seconds ago - 0) # end_ts = now +ok, res = sdclient.get_data( + req, # metrics list + -600, # start_ts = 600 seconds ago + 0, +) # end_ts = now if ok: data = res @@ -73,10 +71,12 @@ # Third example: CPU average across all hosts # datasource_type is set to host since no grouping keys or filters are specified (default would be host anyway) # -ok, res = sdclient.get_data(cpu_metric, # metrics list - -600, # start_ts = 600 seconds ago - 0, # end_ts = now - datasource_type='host') # ask data from hosts +ok, res = sdclient.get_data( + cpu_metric, # metrics list + -600, # start_ts = 600 seconds ago + 0, # end_ts = now + datasource_type="host", +) # ask data from hosts if ok: data = res @@ -91,10 +91,12 @@ # Third example: CPU average across all containers # datasource_type is set to container since no grouping keys or filters are specified (ovverrides the host default) # -ok, res = sdclient.get_data(cpu_metric, # metrics list - -600, # start_ts = 600 seconds ago - 0, # end_ts = now - datasource_type='container') # ask data from containers +ok, res = sdclient.get_data( + cpu_metric, # metrics list + -600, # start_ts = 600 seconds ago + 0, # end_ts = now + datasource_type="container", +) # ask data from containers if ok: data = res diff --git a/examples/get_data_simple.py b/examples/get_data_simple.py index 3a9fabad..8e11b36d 100755 --- a/examples/get_data_simple.py +++ b/examples/get_data_simple.py @@ -15,8 +15,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -82,34 +82,37 @@ # # Print summary (what, when) # - start = res['start'] - end = res['end'] - data = res['data'] + start = res["start"] + end = res["end"] + data = res["data"] - print(('Data for %s from %d to %d' % (filter if filter else 'everything', start, end))) - print('') + print(("Data for %s from %d to %d" % (filter if filter else "everything", start, end))) + print("") # # Print table headers # - dataToPrint = ' '.join( - [str(x['id']).ljust(colLen) if len(str(x['id'])) < colLen else str(x['id'])[:(colLen - 3)].ljust( - colLen - 3) + '...' for x in metrics]) - print(('%s %s' % ('timestamp'.ljust(colLen), dataToPrint) if sampling > 0 else dataToPrint)) - print('') + dataToPrint = " ".join( + [ + str(x["id"]).ljust(colLen) if len(str(x["id"])) < colLen else str(x["id"])[: (colLen - 3)].ljust(colLen - 3) + "..." + for x in metrics + ] + ) + print(("%s %s" % ("timestamp".ljust(colLen), dataToPrint) if sampling > 0 else dataToPrint)) + print("") # # Print table body # for d in data: - timestamp = d['t'] if sampling > 0 else start - values = d['d'] + timestamp = d["t"] if sampling > 0 else start + values = d["d"] - dataToPrint = ' '.join( - [str(x).ljust(colLen) if len(str(x)) < colLen else str(x)[:(colLen - 3)].ljust(colLen - 3) + '...' for x in - values]) + dataToPrint = " ".join( + [str(x).ljust(colLen) if len(str(x)) < colLen else str(x)[: (colLen - 3)].ljust(colLen - 3) + "..." for x in values] + ) - print(('%s %s' % (('' % (timestamp)).ljust(colLen), dataToPrint) if sampling > 0 else dataToPrint)) + print(("%s %s" % (("" % (timestamp)).ljust(colLen), dataToPrint) if sampling > 0 else dataToPrint)) else: print(res) diff --git a/examples/get_image_info_by_id.py b/examples/get_image_info_by_id.py index 00857832..631506b8 100644 --- a/examples/get_image_info_by_id.py +++ b/examples/get_image_info_by_id.py @@ -9,8 +9,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -26,7 +26,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdScanningClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdScanningClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.get_image_info_by_id(image_id_sha) diff --git a/examples/get_image_scan_result_by_id.py b/examples/get_image_scan_result_by_id.py index de8b2a87..ad69101d 100644 --- a/examples/get_image_scan_result_by_id.py +++ b/examples/get_image_scan_result_by_id.py @@ -9,8 +9,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -28,7 +28,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdScanningClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdScanningClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.get_image_scan_result_by_id(image_id, full_tag_name, detail) diff --git a/examples/get_latest_pdf_report_by_digest.py b/examples/get_latest_pdf_report_by_digest.py index 78495c14..5d0712fc 100644 --- a/examples/get_latest_pdf_report_by_digest.py +++ b/examples/get_latest_pdf_report_by_digest.py @@ -9,8 +9,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -28,7 +28,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdScanningClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdScanningClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.get_latest_pdf_report_by_digest(image_digest, full_tag) @@ -36,7 +36,7 @@ def usage(): # Return the result # if ok: - with open(pdf_path, 'wb') as f: + with open(pdf_path, "wb") as f: f.write(res) print(("PDF %s saved" % pdf_path)) else: diff --git a/examples/get_pdf_report.py b/examples/get_pdf_report.py index 33136d46..98c546a6 100755 --- a/examples/get_pdf_report.py +++ b/examples/get_pdf_report.py @@ -9,8 +9,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -27,7 +27,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdScanningClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdScanningClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.get_pdf_report(image) @@ -35,7 +35,7 @@ def usage(): # Return the result # if ok: - with open(pdf_path, 'wb') as f: + with open(pdf_path, "wb") as f: f.write(res) print(("PDF %s saved" % pdf_path)) else: diff --git a/examples/get_policy.py b/examples/get_policy.py index 99db48c8..9962c18a 100755 --- a/examples/get_policy.py +++ b/examples/get_policy.py @@ -10,8 +10,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -27,7 +27,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.get_policy(name) diff --git a/examples/get_policy_v1.py b/examples/get_policy_v1.py index b94d1e7d..55282e6a 100755 --- a/examples/get_policy_v1.py +++ b/examples/get_policy_v1.py @@ -10,8 +10,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -27,7 +27,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClientV1(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClientV1(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.get_policy(name) diff --git a/examples/get_secure_default_falco_rules_files.py b/examples/get_secure_default_falco_rules_files.py index be526718..f8f9877b 100755 --- a/examples/get_secure_default_falco_rules_files.py +++ b/examples/get_secure_default_falco_rules_files.py @@ -19,9 +19,9 @@ # Parse arguments # def usage(): - print(('usage: %s [-s|--save ] ' % sys.argv[0])) - print('-s|--save: save the retrieved files to a set of files below using save_default_rules_files().') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s [-s|--save ] " % sys.argv[0])) + print("-s|--save: save the retrieved files to a set of files below using save_default_rules_files().") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -46,7 +46,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") # # Get the configuration diff --git a/examples/get_secure_policy_events.py b/examples/get_secure_policy_events.py index c804b141..b003cadc 100755 --- a/examples/get_secure_policy_events.py +++ b/examples/get_secure_policy_events.py @@ -18,11 +18,10 @@ def usage(): - print(('usage: %s [-s|--summarize] [-l|--limit ] [| ]' % - sys.argv[0])) - print('-s|--summarize: group policy events by sanitized output and print by frequency') - print('-l|--limit: with -s, only print the first outputs') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s [-s|--summarize] [-l|--limit ] [| ]" % sys.argv[0])) + print("-s|--summarize: group policy events by sanitized output and print by frequency") + print("-l|--limit: with -s, only print the first outputs") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -61,7 +60,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") if duration is not None: ok, res = sdclient.get_policy_events_duration(duration) diff --git a/examples/get_secure_policy_events_old.py b/examples/get_secure_policy_events_old.py index 5799256f..b628cc2b 100755 --- a/examples/get_secure_policy_events_old.py +++ b/examples/get_secure_policy_events_old.py @@ -24,11 +24,10 @@ def usage(): - print('usage: %s [-s|--summarize] [-l|--limit ] [| ]' % - sys.argv[0]) - print('-s|--summarize: group policy events by sanitized output and print by frequency') - print('-l|--limit: with -s, only print the first outputs') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print("usage: %s [-s|--summarize] [-l|--limit ] [| ]" % sys.argv[0]) + print("-s|--summarize: group policy events by sanitized output and print by frequency") + print("-l|--limit: with -s, only print the first outputs") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -67,7 +66,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = PolicyEventsClientOld(sdc_token, 'https://secure.sysdig.com') +sdclient = PolicyEventsClientOld(sdc_token, "https://secure.sysdig.com") if duration is not None: ok, res = sdclient.get_policy_events_duration(duration) @@ -77,7 +76,6 @@ def usage(): all_outputs = dict() while True: - # # Return the result # @@ -85,19 +83,19 @@ def usage(): print(res) sys.exit(1) - if len(res['data']['policyEvents']) == 0: + if len(res["data"]["policyEvents"]) == 0: break - sys.stderr.write("offset={}\n".format(res['ctx']['offset'])) + sys.stderr.write("offset={}\n".format(res["ctx"]["offset"])) - for event in res['data']['policyEvents']: + for event in res["data"]["policyEvents"]: if summarize: - sanitize_output = re.sub(r'\S+\s\(id=\S+\)', '', event['output']) + sanitize_output = re.sub(r"\S+\s\(id=\S+\)", "", event["output"]) all_outputs[sanitize_output] = all_outputs.get(sanitize_output, 0) + 1 else: sys.stdout.write(json.dumps(event) + "\n") - ok, res = sdclient.get_more_policy_events(res['ctx']) + ok, res = sdclient.get_more_policy_events(res["ctx"]) if summarize: sorted = sorted(all_outputs.items(), key=operator.itemgetter(1), reverse=True) diff --git a/examples/get_secure_system_falco_rules.py b/examples/get_secure_system_falco_rules.py index e2672279..7bace408 100755 --- a/examples/get_secure_system_falco_rules.py +++ b/examples/get_secure_system_falco_rules.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -20,7 +20,7 @@ # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") # # Get the configuration diff --git a/examples/get_secure_user_falco_rules.py b/examples/get_secure_user_falco_rules.py index cf04f439..991dc66b 100755 --- a/examples/get_secure_user_falco_rules.py +++ b/examples/get_secure_user_falco_rules.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -20,7 +20,7 @@ # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") # # Get the configuration diff --git a/examples/list_access_keys.py b/examples/list_access_keys.py index 9af0cdfa..3707f2d3 100755 --- a/examples/list_access_keys.py +++ b/examples/list_access_keys.py @@ -12,9 +12,9 @@ # Parse arguments # if len(sys.argv) != 2: - print('usage: %s ' % sys.argv[0]) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') - print('For this script to work, the user for the token must have Admin rights') + print("usage: %s " % sys.argv[0]) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") + print("For this script to work, the user for the token must have Admin rights") sys.exit(1) sdc_token = sys.argv[1] @@ -22,16 +22,16 @@ # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, 'https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, "https://app.sysdigcloud.com") # # Get the configuration # ok, res = sdclient.list_access_keys() if ok: - print('Access Keys\n===========') - for access_key in res['customerAccessKeys']: - print(access_key['accessKey']) + print("Access Keys\n===========") + for access_key in res["customerAccessKeys"]: + print(access_key["accessKey"]) else: print(res) sys.exit(1) diff --git a/examples/list_admins.py b/examples/list_admins.py index 048a45cf..9cadb959 100755 --- a/examples/list_admins.py +++ b/examples/list_admins.py @@ -15,9 +15,9 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') - print('For this script to work, the user for the token must have Admin rights') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") + print("For this script to work, the user for the token must have Admin rights") sys.exit(1) sdc_token = sys.argv[1] @@ -25,7 +25,7 @@ # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, 'https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, "https://app.sysdigcloud.com") # # Get the configuration @@ -35,16 +35,16 @@ admins = [] superadmins = [] for user in res: - if 'ROLE_CUSTOMER' in user['roles']: - admins.append(user['username']) - if 'ROLE_ADMIN' in user['roles']: - superadmins.append(user['username']) - print('Admin users') - print('-----------') + if "ROLE_CUSTOMER" in user["roles"]: + admins.append(user["username"]) + if "ROLE_ADMIN" in user["roles"]: + superadmins.append(user["username"]) + print("Admin users") + print("-----------") for username in admins: print(username) - print('\nSuper Admins') - print('------------') + print("\nSuper Admins") + print("------------") for username in superadmins: print(username) else: diff --git a/examples/list_alert_notifications.py b/examples/list_alert_notifications.py index b64ff355..0c1910c7 100755 --- a/examples/list_alert_notifications.py +++ b/examples/list_alert_notifications.py @@ -12,22 +12,23 @@ def print_notifications(notifications): for notification in notifications: values = [] - for entity in notification['entities']: - for value in entity['metricValues']: - values.append(str(value['value'])) - notification.update({'values': ','.join(values)}) + for entity in notification["entities"]: + for value in entity["metricValues"]: + values.append(str(value["value"])) + notification.update({"values": ",".join(values)}) notification["filter"] = notification.get("filter", "") - print("#%(id)s, State: %(state)s, Severity: %(severity)s, Scope: %(filter)s, Condition: %(condition)s, " - "Value: %(values)s, Resolved: %(resolved)s" % - notification) + print( + "#%(id)s, State: %(state)s, Severity: %(severity)s, Scope: %(filter)s, Condition: %(condition)s, " + "Value: %(values)s, Resolved: %(resolved)s" % notification + ) # # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -40,44 +41,35 @@ def print_notifications(notifications): # # Get the notifications in the last day # -ok, res = sdclient.get_notifications( - from_ts=int(time.time() - 86400), - to_ts=int(time.time())) +ok, res = sdclient.get_notifications(from_ts=int(time.time() - 86400), to_ts=int(time.time())) -print_notifications(res['notifications']) +print_notifications(res["notifications"]) if not ok: sys.exit(1) # # Get the notifications in the last day and active state # -ok, res = sdclient.get_notifications( - from_ts=int(time.time() - 86400), - to_ts=int(time.time()), state='ACTIVE') +ok, res = sdclient.get_notifications(from_ts=int(time.time() - 86400), to_ts=int(time.time()), state="ACTIVE") -print_notifications(res['notifications']) +print_notifications(res["notifications"]) if not ok: sys.exit(1) # # Get the notifications in the last day and active state # -ok, res = sdclient.get_notifications( - from_ts=int(time.time() - 86400), - to_ts=int(time.time()), state='OK') +ok, res = sdclient.get_notifications(from_ts=int(time.time() - 86400), to_ts=int(time.time()), state="OK") -print_notifications(res['notifications']) +print_notifications(res["notifications"]) if not ok: sys.exit(1) # # Get the notifications in the last day and resolved state # -ok, res = sdclient.get_notifications( - from_ts=int(time.time() - 86400), - to_ts=int(time.time()), - resolved=True) +ok, res = sdclient.get_notifications(from_ts=int(time.time() - 86400), to_ts=int(time.time()), resolved=True) -print_notifications(res['notifications']) +print_notifications(res["notifications"]) if not ok: sys.exit(1) diff --git a/examples/list_alerts.py b/examples/list_alerts.py index 95ff1d68..f9981fec 100755 --- a/examples/list_alerts.py +++ b/examples/list_alerts.py @@ -14,8 +14,8 @@ # json_dumpfilename = None if len(sys.argv) < 2 or len(sys.argv) > 3: - print(('usage: %s [json-dumpfile]' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [json-dumpfile]" % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) elif len(sys.argv) == 3: json_dumpfilename = sys.argv[2] @@ -39,8 +39,8 @@ print(res) sys.exit(1) -for alert in res['alerts']: - print(('enabled: %s, name: %s' % (str(alert['enabled']), alert['name']))) +for alert in res["alerts"]: + print(("enabled: %s, name: %s" % (str(alert["enabled"]), alert["name"]))) if json_dumpfilename: with open(json_dumpfilename, "w") as f: diff --git a/examples/list_dashboards.py b/examples/list_dashboards.py index 0023bdce..a65cdcc9 100755 --- a/examples/list_dashboards.py +++ b/examples/list_dashboards.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -34,5 +34,5 @@ print(res) sys.exit(1) -for db in res['dashboards']: - print(("Name: %s, # Charts: %d" % (db['name'], len(db['widgets'] if 'widgets' in db else [])))) +for db in res["dashboards"]: + print(("Name: %s, # Charts: %d" % (db["name"], len(db["widgets"] if "widgets" in db else [])))) diff --git a/examples/list_events.py b/examples/list_events.py index 41517c8f..f41ceb1c 100755 --- a/examples/list_events.py +++ b/examples/list_events.py @@ -9,19 +9,18 @@ def print_events(data): - for event in data['events']: - event['sev'] = event.get('severity', 'not set') - event['description'] = event.get('description', 'not set') - print(('id: %(id)s, time: %(timestamp)d, name: %(name)s, description: %(description)s, severity: %(sev)s' - % event)) + for event in data["events"]: + event["sev"] = event.get("severity", "not set") + event["description"] = event.get("description", "not set") + print(("id: %(id)s, time: %(timestamp)d, name: %(name)s, description: %(description)s, severity: %(sev)s" % event)) # # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -45,8 +44,8 @@ def print_events(data): # # Get the events before other event # -if len(res['events']) > 0: - ok, res = sdclient.get_events(pivot=res['events'][-1]["id"]) +if len(res["events"]) > 0: + ok, res = sdclient.get_events(pivot=res["events"][-1]["id"]) else: ok, res = True, {"events": []} @@ -70,7 +69,7 @@ def print_events(data): # # Get the events that match a status # -ok, res = sdclient.get_events(status=['triggered', 'unacknowledged']) +ok, res = sdclient.get_events(status=["triggered", "unacknowledged"]) if ok: print_events(res) diff --git a/examples/list_hosts.py b/examples/list_hosts.py index fb767d86..d60ca4e3 100755 --- a/examples/list_hosts.py +++ b/examples/list_hosts.py @@ -22,11 +22,11 @@ # Parse arguments # def usage(): - print(('usage: %s [-j|--json] [-d|--duration ] [-c|--count ] ' % sys.argv[0])) - print('-d|--duration: List hosts seen in the last seconds (default: 3600, ie. last hour)') - print('-c|--count: Number of hosts to print (default: 100)') - print('-j|--json: Print output as json') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-j|--json] [-d|--duration ] [-c|--count ] " % sys.argv[0])) + print("-d|--duration: List hosts seen in the last seconds (default: 3600, ie. last hour)") + print("-c|--count: Number of hosts to print (default: 100)") + print("-j|--json: Print output as json") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -56,10 +56,7 @@ def usage(): # - host.hostName. This is a tag, to identify each item of the output # - container.count: This is the metric # -metrics = [ - {"id": "host.hostName"}, - {"id": "container.count", "aggregations": {"time": "avg", "group": "avg"}} -] +metrics = [{"id": "host.hostName"}, {"id": "container.count", "aggregations": {"time": "avg", "group": "avg"}}] ok, res = sdclient.get_data( metrics, # list of metrics @@ -67,10 +64,8 @@ def usage(): 0, # end time: either a unix timestamp, or a difference from "now" (0 means you need "last X seconds") duration, # sampling time, ie. data granularity; # if equal to the time window span then the result will contain a single sample - paging={ - "from": 0, - "to": count - 1 - }) + paging={"from": 0, "to": count - 1}, +) if not ok: # data fetch failed @@ -81,13 +76,13 @@ def usage(): if print_json: print((json.dumps(res))) else: - data = res['data'] + data = res["data"] output = [] for i in range(0, len(data)): sample = data[i] - metrics = sample['d'] + metrics = sample["d"] hostName = metrics[0] count = metrics[1] - output.append('%s\t%d' % (hostName, count)) + output.append("%s\t%d" % (hostName, count)) - print('\n'.join(output)) + print("\n".join(output)) diff --git a/examples/list_metrics.py b/examples/list_metrics.py index a9da394b..9d8583ce 100755 --- a/examples/list_metrics.py +++ b/examples/list_metrics.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -35,4 +35,4 @@ sys.exit(1) for metric_id, metric in res.items(): - print(("Metric name: " + metric_id + ", type: " + metric['type'])) + print(("Metric name: " + metric_id + ", type: " + metric["type"])) diff --git a/examples/list_notification_channels.py b/examples/list_notification_channels.py index 3025c230..9d5a9c45 100755 --- a/examples/list_notification_channels.py +++ b/examples/list_notification_channels.py @@ -12,8 +12,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -32,7 +32,7 @@ # Return the result # if ok: - print((json.dumps(res['notificationChannels'], indent=4))) + print((json.dumps(res["notificationChannels"], indent=4))) else: print(res) sys.exit(1) diff --git a/examples/list_policies.py b/examples/list_policies.py index 2146c93d..268efde2 100755 --- a/examples/list_policies.py +++ b/examples/list_policies.py @@ -10,8 +10,8 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -26,7 +26,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.list_policies() diff --git a/examples/list_policies_v1.py b/examples/list_policies_v1.py index 30758a7f..c43fc8f7 100755 --- a/examples/list_policies_v1.py +++ b/examples/list_policies_v1.py @@ -11,10 +11,9 @@ def usage(): - print(('usage: %s [-o|--order-only] ' % sys.argv[0])) - print('-o|--order-only: Only display the list of policy ids in evaluation order. ' - 'Suitable for use by set_policy_order.py') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s [-o|--order-only] " % sys.argv[0])) + print("-o|--order-only: Only display the list of policy ids in evaluation order. Suitable for use by set_policy_order.py") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -39,7 +38,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClientV1(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClientV1(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.get_policy_priorities() @@ -48,13 +47,13 @@ def usage(): sys.exit(1) # Strip the surrounding json to only keep the list of policy ids -res = res['priorities']['policyIds'] +res = res["priorities"]["policyIds"] if not order_only: priorities = res ok, res = sdclient.list_policies() if ok: - res['policies'].sort(key=lambda p: priorities.index(p['id'])) + res["policies"].sort(key=lambda p: priorities.index(p["id"])) # # Return the result diff --git a/examples/list_profiles.py b/examples/list_profiles.py index 963e4db8..00be90e8 100755 --- a/examples/list_profiles.py +++ b/examples/list_profiles.py @@ -9,7 +9,7 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) + print(("usage: %s " % sys.argv[0])) sys.exit(1) @@ -37,7 +37,7 @@ def usage(): sys.exit(1) # Strip the surrounding json to only keep the list of profiles -res = res['profiles'] +res = res["profiles"] for profile in res: print(("ID: {}, Name: {}".format(profile["profileId"], profile["imageName"]))) diff --git a/examples/list_sysdig_captures.py b/examples/list_sysdig_captures.py index fb72b4b0..9cec4863 100755 --- a/examples/list_sysdig_captures.py +++ b/examples/list_sysdig_captures.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -31,11 +31,15 @@ # Show the list of metrics # if ok: - captures = res['dumps'] + captures = res["dumps"] else: print(res) sys.exit(1) for capture in captures: - print(("Folder %s, Name %s, Host: %s, Size: %d, Status: %s" % - (capture['folder'], capture['name'], capture['agent']['hostName'], capture['size'], capture['status']))) + print( + ( + "Folder %s, Name %s, Host: %s, Size: %d, Status: %s" + % (capture["folder"], capture["name"], capture["agent"]["hostName"], capture["size"], capture["status"]) + ) + ) diff --git a/examples/list_users.py b/examples/list_users.py index 642d7904..0876f43c 100755 --- a/examples/list_users.py +++ b/examples/list_users.py @@ -12,9 +12,9 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') - print('For this script to work, the user for the token must have Admin rights') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") + print("For this script to work, the user for the token must have Admin rights") sys.exit(1) sdc_token = sys.argv[1] @@ -22,16 +22,16 @@ # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, 'https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, "https://app.sysdigcloud.com") # # Get the configuration # ok, res = sdclient.get_users() if ok: - print('Users\n=====') + print("Users\n=====") for user in res: - print((user['username'])) + print((user["username"])) else: print(res) sys.exit(1) diff --git a/examples/notification_channels.py b/examples/notification_channels.py index bf93eed8..0fbc90a0 100755 --- a/examples/notification_channels.py +++ b/examples/notification_channels.py @@ -13,9 +13,9 @@ # Parse arguments # def usage(): - print(('usage: %s [-c|--channel ] ' % sys.argv[0])) - print('-c|--channel: Set name of channel to create') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-c|--channel ] " % sys.argv[0])) + print("-c|--channel: Set name of channel to create") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -43,8 +43,9 @@ def usage(): # # Create an email notification channel # -ok, res = sdclient.create_email_notification_channel(channel_name, ['gianluca.borello@sysdig.com', 'foo@sysdig.com', - 'bar@sysdig.com']) +ok, res = sdclient.create_email_notification_channel( + channel_name, ["gianluca.borello@sysdig.com", "foo@sysdig.com", "bar@sysdig.com"] +) if not ok: print(res) sys.exit(1) @@ -52,7 +53,7 @@ def usage(): # # The notification channel will contain the id, that can be used when creating alerts # -channel = res['notificationChannel'] +channel = res["notificationChannel"] print(channel) # diff --git a/examples/post_event.py b/examples/post_event.py index e45d2e34..251a71d2 100755 --- a/examples/post_event.py +++ b/examples/post_event.py @@ -15,15 +15,17 @@ # Usage: post_event.py [-h] [-d DESCRIPTION] [-s SEVERITY] [-c SCOPE] [-t TAGS] sysdig_token name # parser = argparse.ArgumentParser() -parser.add_argument('-d', '--description') -parser.add_argument('-s', '--severity', help='syslog style from 0 (high) to 7 (low)') -parser.add_argument('-c', '--scope', - help='metadata, in Sysdig Cloud format, of nodes to associate with the event, ' - 'eg: \'host.hostName = "ip-10-1-1-1" and container.name = "foo"\'') -parser.add_argument('-t', '--tags', - help='dictionary of arbitrary key-value pairs, eg: \'{"app":"my_app", "file":"text.py"}\'') -parser.add_argument('sysdig_token', help='You can find your token at https://app.sysdigcloud.com/#/settings/user') -parser.add_argument('name') +parser.add_argument("-d", "--description") +parser.add_argument("-s", "--severity", help="syslog style from 0 (high) to 7 (low)") +parser.add_argument( + "-c", + "--scope", + help="metadata, in Sysdig Cloud format, of nodes to associate with the event, " + 'eg: \'host.hostName = "ip-10-1-1-1" and container.name = "foo"\'', +) +parser.add_argument("-t", "--tags", help='dictionary of arbitrary key-value pairs, eg: \'{"app":"my_app", "file":"text.py"}\'') +parser.add_argument("sysdig_token", help="You can find your token at https://app.sysdigcloud.com/#/settings/user") +parser.add_argument("name") args = parser.parse_args() tags = None @@ -44,7 +46,7 @@ # Return the result # if ok: - print('Event Posted Successfully') + print("Event Posted Successfully") else: print(res) sys.exit(1) diff --git a/examples/post_event_simple.py b/examples/post_event_simple.py index feeadd96..34328921 100755 --- a/examples/post_event_simple.py +++ b/examples/post_event_simple.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) < 4: - print(('usage: %s name description [severity]' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s name description [severity]" % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -40,7 +40,7 @@ # Return the result # if ok: - print('Event Posted Successfully') + print("Event Posted Successfully") else: print(res) sys.exit(1) diff --git a/examples/print_conn_table.py b/examples/print_conn_table.py index dadc71d5..aff4bacf 100755 --- a/examples/print_conn_table.py +++ b/examples/print_conn_table.py @@ -12,8 +12,8 @@ # Parse arguments # if len(sys.argv) not in [2, 3]: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -36,48 +36,16 @@ {"id": "net.local.service"}, {"id": "net.remote.endpoint"}, {"id": "net.remote.service"}, - {"id": "net.connection.count.total", - "aggregations": { - "time": "timeAvg", - "group": "sum" - } - }, - {"id": "net.bytes.in", - "aggregations": { - "time": "timeAvg", - "group": "avg" - }, - }, - {"id": "net.bytes.out", - "aggregations": { - "time": "timeAvg", - "group": "avg" - } - }, - {"id": "net.bytes.total", - "aggregations": { - "time": "timeAvg", - "group": "avg" - } - }, - {"id": "net.request.count.in", - "aggregations": { - "time": "timeAvg", - "group": "avg" - } - }, - {"id": "net.request.count.out", - "aggregations": { - "time": "timeAvg", - "group": "avg" - } - }, - {"id": "net.request.count", - "aggregations": { - "time": "timeAvg", - "group": "avg" - } - } + {"id": "net.connection.count.total", "aggregations": {"time": "timeAvg", "group": "sum"}}, + { + "id": "net.bytes.in", + "aggregations": {"time": "timeAvg", "group": "avg"}, + }, + {"id": "net.bytes.out", "aggregations": {"time": "timeAvg", "group": "avg"}}, + {"id": "net.bytes.total", "aggregations": {"time": "timeAvg", "group": "avg"}}, + {"id": "net.request.count.in", "aggregations": {"time": "timeAvg", "group": "avg"}}, + {"id": "net.request.count.out", "aggregations": {"time": "timeAvg", "group": "avg"}}, + {"id": "net.request.count", "aggregations": {"time": "timeAvg", "group": "avg"}}, ] # @@ -106,27 +74,36 @@ row_format = "{:20.20}\t{:20.20}\t{:20.20}\t{:20.20}\t{:10}\t{:10}\t{:10}\t{:10}\t{:10}\t{:10}\t{:10}" -print((row_format.format("Source", "Source Process", "Destination", "Destination Process", "Count", - "Bytes In", "Bytes Out", "Bytes", "Req In", "Req Out", "Req"))) +print( + ( + row_format.format( + "Source", + "Source Process", + "Destination", + "Destination Process", + "Count", + "Bytes In", + "Bytes Out", + "Bytes", + "Req In", + "Req Out", + "Req", + ) + ) +) while cur < fetch_limit: - paging = {'from': cur, 'to': cur + page_size} - ok, res = sdclient.get_data(metrics, - start, - end, - 0, - flt, - 'host', - paging) + paging = {"from": cur, "to": cur + page_size} + ok, res = sdclient.get_data(metrics, start, end, 0, flt, "host", paging) if not ok: sys.exit(res) - data = res['data'] + data = res["data"] if len(data) == 0: break cur += len(data) for line in data: - print((row_format.format(*line['d']))) + print((row_format.format(*line["d"]))) diff --git a/examples/print_data_retention_info.py b/examples/print_data_retention_info.py index b0e97ff6..526e77c2 100755 --- a/examples/print_data_retention_info.py +++ b/examples/print_data_retention_info.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -34,4 +34,4 @@ print(res) sys.exit(1) -print(res['agents']) +print(res["agents"]) diff --git a/examples/print_explore_grouping.py b/examples/print_explore_grouping.py index 4ee28154..37d9fa7f 100755 --- a/examples/print_explore_grouping.py +++ b/examples/print_explore_grouping.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] diff --git a/examples/print_user_info.py b/examples/print_user_info.py index e7cbb302..ee709514 100755 --- a/examples/print_user_info.py +++ b/examples/print_user_info.py @@ -12,8 +12,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -45,6 +45,6 @@ print(res) sys.exit(1) -print(('User Email: ' + uinfo['user']['username'])) -print(('Current Agents: %d' % nagents)) -print(('Max Agents: %s' % uinfo['user']['customerSettings']['plan']['maxAgents'])) +print(("User Email: " + uinfo["user"]["username"])) +print(("Current Agents: %d" % nagents)) +print(("Max Agents: %s" % uinfo["user"]["customerSettings"]["plan"]["maxAgents"])) diff --git a/examples/resolve_alert_notifications.py b/examples/resolve_alert_notifications.py index 2aab3e0c..1f5a74f2 100755 --- a/examples/resolve_alert_notifications.py +++ b/examples/resolve_alert_notifications.py @@ -12,8 +12,8 @@ # Parse arguments # if len(sys.argv) != 3: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -27,8 +27,9 @@ # # Get the unresolved notifications in the last day # -ok, res = sdclient.get_notifications(from_ts=int(time.time() - int(num_days_to_resolve) * 86400), - to_ts=int(time.time()), resolved=False) +ok, res = sdclient.get_notifications( + from_ts=int(time.time() - int(num_days_to_resolve) * 86400), to_ts=int(time.time()), resolved=False +) if not ok: print(res) @@ -37,7 +38,7 @@ # # Resolve them # -notifications = res['notifications'] +notifications = res["notifications"] print(("Resolving " + str(len(notifications)) + " notifications")) for notification in notifications: diff --git a/examples/restore_alerts.py b/examples/restore_alerts.py index a50966a7..d0a415d5 100755 --- a/examples/restore_alerts.py +++ b/examples/restore_alerts.py @@ -12,8 +12,8 @@ # Parse arguments # if len(sys.argv) != 3: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -34,8 +34,8 @@ existing_alerts = {} ok, res = sdclient.get_alerts() if ok: - for alert in res['alerts']: - existing_alerts[alert['name']] = {'id': alert['id'], 'version': alert['version']} + for alert in res["alerts"]: + existing_alerts[alert["name"]] = {"id": alert["id"], "version": alert["version"]} else: print(res) sys.exit(1) @@ -57,27 +57,34 @@ created_count = 0 updated_count = 0 -with open(alerts_dump_file, 'r') as f: +with open(alerts_dump_file, "r") as f: j = json.load(f) - for a in j['alerts']: - if 'notificationChannelIds' in a: - for channel_id in a['notificationChannelIds']: + for a in j["alerts"]: + if "notificationChannelIds" in a: + for channel_id in a["notificationChannelIds"]: if channel_id not in existing_notification_channel_ids: - print(('Notification Channel ID ' + str(channel_id) + ' referenced in Alert "' + a[ - 'name'] + '" does not exist.\n Restoring without this ID.')) - a['notificationChannelIds'].remove(channel_id) + print( + ( + "Notification Channel ID " + + str(channel_id) + + ' referenced in Alert "' + + a["name"] + + '" does not exist.\n Restoring without this ID.' + ) + ) + a["notificationChannelIds"].remove(channel_id) # The Create/Update APIs will validate but actually ignore these fields; # to avoid problems, don't submit in the API request - for timefield in ['createdOn', 'modifiedOn']: + for timefield in ["createdOn", "modifiedOn"]: del a[timefield] # NOTE: when exporting alerts that contain deprecated metrics you will # need to remove them from the source json # (see https://sysdigdocs.atlassian.net/wiki/spaces/Monitor/pages/205684810/Metrics#Metrics-HeuristicandDeprecatedMetrics) - if a['name'] in existing_alerts: - a['id'] = existing_alerts[a['name']]['id'] - a['version'] = existing_alerts[a['name']]['version'] + if a["name"] in existing_alerts: + a["id"] = existing_alerts[a["name"]]["id"] + a["version"] = existing_alerts[a["name"]]["version"] ok, res = sdclient.update_alert(a) updated_count += 1 else: @@ -87,5 +94,4 @@ print(res) sys.exit(1) -print(f'All Alerts in {alerts_dump_file} restored successfully ' - f'({str(created_count)} created, {str(updated_count)} updated)') +print(f"All Alerts in {alerts_dump_file} restored successfully ({str(created_count)} created, {str(updated_count)} updated)") diff --git a/examples/restore_dashboards.py b/examples/restore_dashboards.py index c29720d2..4d4ffc07 100755 --- a/examples/restore_dashboards.py +++ b/examples/restore_dashboards.py @@ -13,8 +13,8 @@ # Parse arguments # if len(sys.argv) != 3: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -25,24 +25,24 @@ # sdclient = SdMonitorClient(sdc_token) -zipf = zipfile.ZipFile(dashboard_state_file, 'r') +zipf = zipfile.ZipFile(dashboard_state_file, "r") for info in zipf.infolist(): data = zipf.read(info.filename) try: j = json.loads(data) except ValueError: - print(('Invalid JSON file found in ZIP file ' + info.filename + ': skipping')) + print(("Invalid JSON file found in ZIP file " + info.filename + ": skipping")) continue # # Handle old files # - if 'dashboard' in j: - j = j['dashboard'] + if "dashboard" in j: + j = j["dashboard"] ok, res = sdclient.create_dashboard_with_configuration(j) if ok: - print(('Restored Dashboard named: ' + j['name'])) + print(("Restored Dashboard named: " + j["name"])) else: - print(("Dashboard creation failed for dashboard name %s with error %s" % (j['name'], res))) + print(("Dashboard creation failed for dashboard name %s with error %s" % (j["name"], res))) diff --git a/examples/set_agents_config.py b/examples/set_agents_config.py index 963053bd..08c5d3b5 100755 --- a/examples/set_agents_config.py +++ b/examples/set_agents_config.py @@ -17,8 +17,8 @@ # Parse arguments # if len(sys.argv) != 3: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -33,7 +33,7 @@ # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, 'https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, "https://app.sysdigcloud.com") json = {"files": [{"filter": "*", "content": yaml_conf}]} @@ -46,6 +46,6 @@ # Check if everything went well # if ok: - print('configuration set successfully') + print("configuration set successfully") else: print(res) diff --git a/examples/set_explore_group_configuration.py b/examples/set_explore_group_configuration.py index 112b3fad..89e2eb90 100755 --- a/examples/set_explore_group_configuration.py +++ b/examples/set_explore_group_configuration.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 2: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -25,7 +25,7 @@ # # Fire the request, set the group configuration you need in the example below # -groupConfig = ['agent.tag.role', 'host.mac'] +groupConfig = ["agent.tag.role", "host.mac"] ok, res = sdclient.set_explore_grouping_hierarchy(groupConfig) # diff --git a/examples/set_policy_order_v1.py b/examples/set_policy_order_v1.py index e2b7d812..8ad4fef0 100755 --- a/examples/set_policy_order_v1.py +++ b/examples/set_policy_order_v1.py @@ -10,9 +10,9 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('Reads json representing new policy evaluation order from standard input') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("Reads json representing new policy evaluation order from standard input") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -34,7 +34,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClientV1(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClientV1(sdc_token, "https://secure.sysdig.com") # # The argument to /api/policies/priorities is the list of ids wrapped @@ -49,7 +49,7 @@ def usage(): sys.exit(1) obj = res -obj['priorities']['policyIds'] = priorities_obj +obj["priorities"]["policyIds"] = priorities_obj ok, res = sdclient.set_policy_priorities(json.dumps(obj)) diff --git a/examples/set_secure_default_falco_rules_files.py b/examples/set_secure_default_falco_rules_files.py index a0b49a57..5b2a3457 100755 --- a/examples/set_secure_default_falco_rules_files.py +++ b/examples/set_secure_default_falco_rules_files.py @@ -21,12 +21,12 @@ # Parse arguments # def usage(): - print(('usage: %s [-l|--load ] [-t|--tag ] [-c|--content ] ' % sys.argv[0])) - print('-l|--load: load the files to set from a set of files below using load_default_rules_files().') - print('-t|--tag: Set a tag for the set of files') - print('-c|--content: the (single) file to set') - print('if --load is specified, neither --tag nor --content can be specified') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s [-l|--load ] [-t|--tag ] [-c|--content ] " % sys.argv[0])) + print("-l|--load: load the files to set from a set of files below using load_default_rules_files().") + print("-t|--tag: Set a tag for the set of files") + print("-c|--content: the (single) file to set") + print("if --load is specified, neither --tag nor --content can be specified") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -59,7 +59,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") files_obj = {} if load_dir != "": @@ -71,7 +71,7 @@ def usage(): print(res) sys.exit(1) else: - with open(cpath, 'r') as content_file: + with open(cpath, "r") as content_file: content = content_file.read() required_engine_version = 0 cyaml = yaml.safe_load(content) @@ -80,18 +80,22 @@ def usage(): try: required_engine_version = int(obj["required_engine_version"]) except ValueError: - print(("Required engine version \"{}\" in content {} must be a number".format( - obj["required_engine_version"], cpath))) + print( + ( + 'Required engine version "{}" in content {} must be a number'.format( + obj["required_engine_version"], cpath + ) + ) + ) sys.exit(1) files_obj = { "tag": tag, - "files": [{ - "name": os.path.basename(cpath), - "variants": { - "required_engine_version": required_engine_version, - "content": content + "files": [ + { + "name": os.path.basename(cpath), + "variants": {"required_engine_version": required_engine_version, "content": content}, } - }] + ], } ok, res = sdclient.set_default_falco_rules_files(files_obj) @@ -100,7 +104,7 @@ def usage(): # Return the result # if ok: - print('default falco rules files set successfully') + print("default falco rules files set successfully") else: print(res) sys.exit(1) diff --git a/examples/set_secure_system_falco_rules.py b/examples/set_secure_system_falco_rules.py index 6ae7b185..8fb5cc98 100755 --- a/examples/set_secure_system_falco_rules.py +++ b/examples/set_secure_system_falco_rules.py @@ -15,8 +15,8 @@ # Parse arguments # if len(sys.argv) != 3: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -29,7 +29,7 @@ # Verify that the content is valid yaml parsed_yaml_conf = yaml.safe_load(yaml_conf) -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") # # Push the configuration @@ -40,7 +40,7 @@ # Check if everything went well # if ok: - print('system falco rules set successfully') + print("system falco rules set successfully") else: print(res) sys.exit(1) diff --git a/examples/set_secure_user_falco_rules.py b/examples/set_secure_user_falco_rules.py index ec790375..f48771c2 100755 --- a/examples/set_secure_user_falco_rules.py +++ b/examples/set_secure_user_falco_rules.py @@ -15,8 +15,8 @@ # Parse arguments # if len(sys.argv) != 3: - print(('usage: %s ' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -29,7 +29,7 @@ # Verify that the content is valid yaml parsed_yaml_conf = yaml.safe_load(yaml_conf) -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") # # Push the configuration @@ -40,7 +40,7 @@ # Check if everything went well # if ok: - print('user falco rules set successfully') + print("user falco rules set successfully") else: print(res) sys.exit(1) diff --git a/examples/update_access_keys.py b/examples/update_access_keys.py index 27e9803d..d8cfaf22 100755 --- a/examples/update_access_keys.py +++ b/examples/update_access_keys.py @@ -12,43 +12,46 @@ # Parse arguments # if len(sys.argv) != 2: - print('usage: %s ' % sys.argv[0]) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') - print('For this script to work, the user for the token must have Admin rights') + print("usage: %s " % sys.argv[0]) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") + print("For this script to work, the user for the token must have Admin rights") sys.exit(1) sdc_token = sys.argv[1] # Access Key that needs to be updated -accessKey = '' +accessKey = "" # Maximum number of agents allowed to connect for this access key. Set to '' if not required -agent_limit = '' +agent_limit = "" # Number of agent licenses that are ALWAYS available to this access key. This directly counts against the maximum number of available licenses. Set to '' if not required. -agent_reserved = '' +agent_reserved = "" # Team ID to which to assign the access key. Team ID must be valid. Set to '' if not required. -team_id = '' +team_id = "" # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, 'https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, "https://app.sysdigcloud.com") # # Get the configuration # if accessKey: - ok, res = sdclient.update_access_key( - accessKey, - agent_limit, - agent_reserved, - team_id) + ok, res = sdclient.update_access_key(accessKey, agent_limit, agent_reserved, team_id) else: - print('Please specify the Access Key that you would like to be updated') + print("Please specify the Access Key that you would like to be updated") sys.exit(1) if ok: - print('Access Key: {}\nTeam ID: {}\nAgent Limit: {}\nAgent Reserved: {}\n==========='.format(res['customerAccessKey']['accessKey'], res['customerAccessKey']['teamId'], res['customerAccessKey']['limit'], res['customerAccessKey']['reservation'])) + print( + "Access Key: {}\nTeam ID: {}\nAgent Limit: {}\nAgent Reserved: {}\n===========".format( + res["customerAccessKey"]["accessKey"], + res["customerAccessKey"]["teamId"], + res["customerAccessKey"]["limit"], + res["customerAccessKey"]["reservation"], + ) + ) else: print(res) sys.exit(1) diff --git a/examples/update_alert.py b/examples/update_alert.py index d134d7b8..6bc18495 100755 --- a/examples/update_alert.py +++ b/examples/update_alert.py @@ -16,9 +16,9 @@ # Parse arguments # def usage(): - print(('usage: %s [-a|--alert ] ' % sys.argv[0])) - print('-a|--alert: Set name of alert to update') - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s [-a|--alert ] " % sys.argv[0])) + print("-a|--alert: Set name of alert to update") + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) @@ -48,17 +48,17 @@ def usage(): sys.exit(1) alert_found = False -for alert in res['alerts']: - if alert['name'] == alert_name: +for alert in res["alerts"]: + if alert["name"] == alert_name: alert_found = True - print('Updating alert. Configuration before changing timespan, description, and notification channels:') + print("Updating alert. Configuration before changing timespan, description, and notification channels:") print((json.dumps(alert, sort_keys=True, indent=4))) - if 'notificationChannelIds' in alert: - alert['notificationChannelIds'] = alert['notificationChannelIds'][0:-1] - update_txt = ' (changed by update_alert)' - if alert['description'][-len(update_txt):] != update_txt: - alert['description'] = alert['description'] + update_txt - alert['timespan'] = alert['timespan'] * 2 # Note: Expressed in seconds * 1000000 + if "notificationChannelIds" in alert: + alert["notificationChannelIds"] = alert["notificationChannelIds"][0:-1] + update_txt = " (changed by update_alert)" + if alert["description"][-len(update_txt) :] != update_txt: + alert["description"] = alert["description"] + update_txt + alert["timespan"] = alert["timespan"] * 2 # Note: Expressed in seconds * 1000000 ok, res_update = sdclient.update_alert(alert) if not ok: @@ -66,9 +66,9 @@ def usage(): sys.exit(1) # Validate and print the results - print('\nAlert after modification:') + print("\nAlert after modification:") print((json.dumps(res_update, sort_keys=True, indent=4))) if not alert_found: - print('Alert to be updated not found') + print("Alert to be updated not found") sys.exit(1) diff --git a/examples/update_policy.py b/examples/update_policy.py index f5b8d3ab..4f04ee00 100755 --- a/examples/update_policy.py +++ b/examples/update_policy.py @@ -10,9 +10,9 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('Reads json representing updated policy from standard input') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("Reads json representing updated policy from standard input") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -28,7 +28,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClient(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClient(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.update_policy_json(policy_json) diff --git a/examples/update_policy_v1.py b/examples/update_policy_v1.py index d4eb056a..ebec1ef8 100755 --- a/examples/update_policy_v1.py +++ b/examples/update_policy_v1.py @@ -10,9 +10,9 @@ def usage(): - print(('usage: %s ' % sys.argv[0])) - print('Reads json representing updated policy from standard input') - print('You can find your token at https://secure.sysdig.com/#/settings/user') + print(("usage: %s " % sys.argv[0])) + print("Reads json representing updated policy from standard input") + print("You can find your token at https://secure.sysdig.com/#/settings/user") sys.exit(1) @@ -28,7 +28,7 @@ def usage(): # # Instantiate the SDC client # -sdclient = SdSecureClientV1(sdc_token, 'https://secure.sysdig.com') +sdclient = SdSecureClientV1(sdc_token, "https://secure.sysdig.com") ok, res = sdclient.update_policy(policy_json) diff --git a/examples/user_team_mgmt.py b/examples/user_team_mgmt.py index 214049d1..7c4a01f4 100755 --- a/examples/user_team_mgmt.py +++ b/examples/user_team_mgmt.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 4: - print(('usage: %s team-name user-name' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s team-name user-name" % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -20,21 +20,21 @@ # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, sdc_url='https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, sdc_url="https://app.sysdigcloud.com") team_name = sys.argv[2] user_name = sys.argv[3] -print(('Trying to invite a user:', user_name)) +print(("Trying to invite a user:", user_name)) ok, res = sdclient.create_user_invite(user_name) if not ok: - if res == 'user ' + user_name + ' already exists': - print(('User creation failed because', user_name, 'already exists. Continuing.')) + if res == "user " + user_name + " already exists": + print(("User creation failed because", user_name, "already exists. Continuing.")) else: - print(('User creation failed:', res, '. Exiting.')) + print(("User creation failed:", res, ". Exiting.")) sys.exit(1) else: - print('User creation succeeded') + print("User creation succeeded") # Possible failures on Team creation might include having reached the # max limit on Teams for this customer account or if the Team by that @@ -42,48 +42,45 @@ # would have deleted the Team by the same name, and we need to be able # to configure Teams for this test to pass, we'll treat both types of # error as a genuine fail of the test. -print(('Now trying to create a team with name:', team_name)) +print(("Now trying to create a team with name:", team_name)) ok, res = sdclient.create_team(team_name) if not ok: - print(('Team creation failed:', res, '. Exiting.')) + print(("Team creation failed:", res, ". Exiting.")) sys.exit(1) else: - print(('Team creation succeeded.', res)) + print(("Team creation succeeded.", res)) -print(('Now trying to find team with name:', team_name)) +print(("Now trying to find team with name:", team_name)) ok, res = sdclient.get_team(team_name) if not ok: - print(('Could not get team info:', res, '. Exiting.')) + print(("Could not get team info:", res, ". Exiting.")) sys.exit(1) else: - print('Team fetch succeeded') + print("Team fetch succeeded") -print(('Now trying to edit team:', team_name)) -memberships = { - 'admin@draios.com': 'ROLE_TEAM_MANAGER', - 'john-doe@sysdig.com': 'ROLE_TEAM_READ' -} -ok, res = sdclient.edit_team(team_name, description='Nextgen2', memberships=memberships) +print(("Now trying to edit team:", team_name)) +memberships = {"admin@draios.com": "ROLE_TEAM_MANAGER", "john-doe@sysdig.com": "ROLE_TEAM_READ"} +ok, res = sdclient.edit_team(team_name, description="Nextgen2", memberships=memberships) if not ok: - print(('Could not edit team:', res, '. Exiting.')) + print(("Could not edit team:", res, ". Exiting.")) sys.exit(1) else: - print('Edited team to change description and add users') + print("Edited team to change description and add users") -print(('Now trying to edit user:', user_name)) -ok, res = sdclient.edit_user(user_name, firstName='Just', lastName='Edited3', systemRole='ROLE_CUSTOMER') +print(("Now trying to edit user:", user_name)) +ok, res = sdclient.edit_user(user_name, firstName="Just", lastName="Edited3", systemRole="ROLE_CUSTOMER") if not ok: - print(('Could not edit user:', res, '. Exiting.')) + print(("Could not edit user:", res, ". Exiting.")) sys.exit(1) else: - print('Edit user succeeded') + print("Edit user succeeded") -print(('Now trying to delete the team:', team_name)) +print(("Now trying to delete the team:", team_name)) ok, res = sdclient.delete_team(team_name) if not ok: - print(('Could not delete team:', res, '. Exiting.')) + print(("Could not delete team:", res, ". Exiting.")) sys.exit(1) else: - print('Delete team succeeded') + print("Delete team succeeded") sys.exit(0) diff --git a/examples/user_team_mgmt_extended.py b/examples/user_team_mgmt_extended.py index ff33a1f9..55068e62 100755 --- a/examples/user_team_mgmt_extended.py +++ b/examples/user_team_mgmt_extended.py @@ -11,8 +11,8 @@ # Parse arguments # if len(sys.argv) != 4: - print(('usage: %s team-prefix user-name' % sys.argv[0])) - print('You can find your token at https://app.sysdigcloud.com/#/settings/user') + print(("usage: %s team-prefix user-name" % sys.argv[0])) + print("You can find your token at https://app.sysdigcloud.com/#/settings/user") sys.exit(1) sdc_token = sys.argv[1] @@ -20,11 +20,11 @@ # # Instantiate the SDC client # -sdclient = SdcClient(sdc_token, sdc_url='https://app.sysdigcloud.com') +sdclient = SdcClient(sdc_token, sdc_url="https://app.sysdigcloud.com") team_prefix = sys.argv[2] -user_email_parts = sys.argv[3].split('@') +user_email_parts = sys.argv[3].split("@") user_email_prefix = user_email_parts[0] user_email_domain = user_email_parts[1] @@ -34,36 +34,36 @@ # All users initially are part of default team. # -admin = user_email_prefix + '+team_mgmt-admin' + '@' + user_email_domain -userA = user_email_prefix + '+team_mgmt-a' + '@' + user_email_domain -userB = user_email_prefix + '+team_mgmt-b' + '@' + user_email_domain +admin = user_email_prefix + "+team_mgmt-admin" + "@" + user_email_domain +userA = user_email_prefix + "+team_mgmt-a" + "@" + user_email_domain +userB = user_email_prefix + "+team_mgmt-b" + "@" + user_email_domain -teamA = team_prefix + 'A' -teamB = team_prefix + 'B' +teamA = team_prefix + "A" +teamB = team_prefix + "B" -print('Creating test users...') +print("Creating test users...") try: - ok, res = sdclient.create_user_invite(admin, first_name='TestUser', last_name='Admin', system_role='ROLE_CUSTOMER') + ok, res = sdclient.create_user_invite(admin, first_name="TestUser", last_name="Admin", system_role="ROLE_CUSTOMER") if not ok: - print(('-- User creation failed:', res, '. Exiting.')) + print(("-- User creation failed:", res, ". Exiting.")) sys.exit(1) else: - print(('-- User \'', admin, '\' created successfully.')) + print(("-- User '", admin, "' created successfully.")) - ok, res = sdclient.create_user_invite(userA, first_name='TestUser', last_name='Alpha') + ok, res = sdclient.create_user_invite(userA, first_name="TestUser", last_name="Alpha") if not ok: - print(('-- User creation failed:', res, '. Exiting.')) + print(("-- User creation failed:", res, ". Exiting.")) sys.exit(1) else: - print(('-- User \'', userA, '\' created successfully.')) + print(("-- User '", userA, "' created successfully.")) - ok, res = sdclient.create_user_invite(userB, first_name='TestUser', last_name='Beta') + ok, res = sdclient.create_user_invite(userB, first_name="TestUser", last_name="Beta") if not ok: - print(('-- User creation failed:', res, '. Exiting.')) + print(("-- User creation failed:", res, ". Exiting.")) sys.exit(1) else: - print(('-- User \'', userB, '\' created successfully.')) + print(("-- User '", userB, "' created successfully.")) # # Create test teams @@ -76,21 +76,21 @@ # error as a genuine fail of the test. # - print('Creating test teams...') + print("Creating test teams...") ok, res = sdclient.create_team(teamA) if not ok: - print(('-- Team creation failed:', res, '. Exiting.')) + print(("-- Team creation failed:", res, ". Exiting.")) sys.exit(1) else: - print(('-- Team \'', teamA, '\' created successfully.')) + print(("-- Team '", teamA, "' created successfully.")) ok, res = sdclient.create_team(teamB) if not ok: - print(('-- Team creation failed:', res, '. Exiting.')) + print(("-- Team creation failed:", res, ". Exiting.")) sys.exit(1) else: - print(('-- Team \'', teamB, '\' created successfully.')) + print(("-- Team '", teamB, "' created successfully.")) # # Membership manipulation @@ -98,168 +98,168 @@ # Admins are part of all teams and their membership cannot be edited. # - print('Membership manipulation...') + print("Membership manipulation...") ok, res = sdclient.list_memberships(teamA) if not ok: - print(('-- Unable to fetch team memberships:', res, '. Exiting.')) + print(("-- Unable to fetch team memberships:", res, ". Exiting.")) sys.exit(1) elif admin not in list(res.keys()): - print(('-- Admin should be part of all teams!', 'Exiting.')) + print(("-- Admin should be part of all teams!", "Exiting.")) sys.exit(1) elif userA in list(res.keys()) or userB in list(res.keys()): - print(('-- Users ', userA, ' and ', userB, ' should not be part of team ', teamA, '!', 'Exiting.')) + print(("-- Users ", userA, " and ", userB, " should not be part of team ", teamA, "!", "Exiting.")) sys.exit(1) ok, res = sdclient.list_memberships(teamB) if not ok: - print(('-- Unable to fetch team memberships:', res, '. Exiting.')) + print(("-- Unable to fetch team memberships:", res, ". Exiting.")) sys.exit(1) elif admin not in list(res.keys()): - print(('-- Admin should be part of all teams!', 'Exiting.')) + print(("-- Admin should be part of all teams!", "Exiting.")) sys.exit(1) elif userA in list(res.keys()) or userB in list(res.keys()): - print(('-- Users ', userA, ' and ', userB, ' should not be part of team ', teamB, '!', 'Exiting.')) + print(("-- Users ", userA, " and ", userB, " should not be part of team ", teamB, "!", "Exiting.")) sys.exit(1) # # Create team memberships # - print('-- Create team memberships') + print("-- Create team memberships") # Manipulate with teamA - ok, res = sdclient.save_memberships(teamA, {userA: 'ROLE_TEAM_EDIT'}) + ok, res = sdclient.save_memberships(teamA, {userA: "ROLE_TEAM_EDIT"}) if not ok: - print(('-- Unable to add ', userA, ' to ', teamA, ' due to: ', res, '. Exiting.')) + print(("-- Unable to add ", userA, " to ", teamA, " due to: ", res, ". Exiting.")) sys.exit(1) ok, res = sdclient.list_memberships(teamA) if not ok: - print(('-- Unable to fetch team memberships:', res, '. Exiting.')) + print(("-- Unable to fetch team memberships:", res, ". Exiting.")) sys.exit(1) elif userA not in list(res.keys()) or admin not in list(res.keys()): - print(('-- Users ', userA, ' and ', admin, ' should be part of team ', teamA, '!', 'Exiting.')) + print(("-- Users ", userA, " and ", admin, " should be part of team ", teamA, "!", "Exiting.")) sys.exit(1) # Manipulate with teamB - ok, res = sdclient.save_memberships(teamB, {userA: 'ROLE_TEAM_MANAGER', userB: 'ROLE_TEAM_READ'}) + ok, res = sdclient.save_memberships(teamB, {userA: "ROLE_TEAM_MANAGER", userB: "ROLE_TEAM_READ"}) if not ok: - print(('-- Unable to add ', userA, ' and ', userB, ' to ', teamB, ' due to: ', res, '. Exiting.')) + print(("-- Unable to add ", userA, " and ", userB, " to ", teamB, " due to: ", res, ". Exiting.")) sys.exit(1) ok, res = sdclient.list_memberships(teamB) if not ok: - print(('-- Unable to fetch team memberships:', res, '. Exiting.')) + print(("-- Unable to fetch team memberships:", res, ". Exiting.")) sys.exit(1) elif userA not in list(res.keys()) or userB not in list(res.keys()) or admin not in list(res.keys()): - print(('-- Users ', userA, ', ', userB, ' and ', admin, ' should be part of team ', teamB, '!', 'Exiting.')) + print(("-- Users ", userA, ", ", userB, " and ", admin, " should be part of team ", teamB, "!", "Exiting.")) sys.exit(1) # Update team memberships - print('-- Update team memberships') + print("-- Update team memberships") # Add new or update existing memberships - ok, res = sdclient.save_memberships(teamA, {userA: 'ROLE_TEAM_READ', userB: 'ROLE_TEAM_EDIT'}) + ok, res = sdclient.save_memberships(teamA, {userA: "ROLE_TEAM_READ", userB: "ROLE_TEAM_EDIT"}) if not ok: - print(('-- Unable to modify membership for ', userA, ' and to add ', userB, ' to ', teamA, ' due to: ', res, - '. Exiting.')) + print( + ("-- Unable to modify membership for ", userA, " and to add ", userB, " to ", teamA, " due to: ", res, ". Exiting.") + ) sys.exit(1) ok, res = sdclient.list_memberships(teamA) if not ok: - print(('-- Unable to fetch team memberships:', res, '. Exiting.')) + print(("-- Unable to fetch team memberships:", res, ". Exiting.")) sys.exit(1) elif userA not in list(res.keys()) or userB not in list(res.keys()) or admin not in list(res.keys()): - print(('-- Users ', userA, ', ', userB, ' and ', admin, ' should be part of team ', teamA, '!', 'Exiting.')) + print(("-- Users ", userA, ", ", userB, " and ", admin, " should be part of team ", teamA, "!", "Exiting.")) sys.exit(1) - elif res[userA] != 'ROLE_TEAM_READ' or res[userB] != 'ROLE_TEAM_EDIT': - print(('-- Users ', userA, ' and ', userB, ' should have appropriate roles assigned for team ', teamA, '!', - 'Exiting.')) + elif res[userA] != "ROLE_TEAM_READ" or res[userB] != "ROLE_TEAM_EDIT": + print(("-- Users ", userA, " and ", userB, " should have appropriate roles assigned for team ", teamA, "!", "Exiting.")) sys.exit(1) # Remove team memberships - print('-- Remove team memberships') + print("-- Remove team memberships") ok, res = sdclient.remove_memberships(teamA, [userB]) if not ok: - print(('-- Unable to remove membership for ', userB, ' from team', teamA, ' due to: ', res, '. Exiting.')) + print(("-- Unable to remove membership for ", userB, " from team", teamA, " due to: ", res, ". Exiting.")) sys.exit(1) ok, res = sdclient.list_memberships(teamA) if not ok: - print(('-- Unable to fetch team memberships:', res, '. Exiting.')) + print(("-- Unable to fetch team memberships:", res, ". Exiting.")) sys.exit(1) elif userB in list(res.keys()): - print(('-- User ', userB, ' should not be part of team ', teamA, '!', 'Exiting.')) + print(("-- User ", userB, " should not be part of team ", teamA, "!", "Exiting.")) sys.exit(1) # Admin user cannot be removed from any team ok, res = sdclient.remove_memberships(teamB, [admin, userA]) if not ok: - print(('-- Unable to remove membership for ', userB, ' from team', teamA, ' due to: ', res, '. Exiting.')) + print(("-- Unable to remove membership for ", userB, " from team", teamA, " due to: ", res, ". Exiting.")) sys.exit(1) ok, res = sdclient.list_memberships(teamB) if not ok: - print(('-- Unable to fetch team memberships:', res, '. Exiting.')) + print(("-- Unable to fetch team memberships:", res, ". Exiting.")) sys.exit(1) elif userA in list(res.keys()): - print(('-- User ', userA, ' should not be part of team ', teamB, '!', 'Exiting.')) + print(("-- User ", userA, " should not be part of team ", teamB, "!", "Exiting.")) sys.exit(1) elif admin not in list(res.keys()): - print(('-- User ', admin, ' should be always part of all teams!', 'Exiting.')) + print(("-- User ", admin, " should be always part of all teams!", "Exiting.")) sys.exit(1) finally: # # Clean-up # - print('Cleaning up...') + print("Cleaning up...") - print('-- Deleting test teams.') + print("-- Deleting test teams.") try: ok, res = sdclient.delete_team(teamA) if not ok: - print(('-- Team \'', teamA, '\' deletion failed: ', res)) + print(("-- Team '", teamA, "' deletion failed: ", res)) except Exception as exception: - print(('-- Team \'', teamA, '\' deletion failed: ', exception)) + print(("-- Team '", teamA, "' deletion failed: ", exception)) try: ok, res = sdclient.delete_team(teamB) if not ok: - print(('-- Team \'', teamB, '\' deletion failed: ', res)) + print(("-- Team '", teamB, "' deletion failed: ", res)) except Exception as exception: - print(('-- Team \'', teamB, '\' deletion failed: ', exception)) + print(("-- Team '", teamB, "' deletion failed: ", exception)) - print('-- Deleting test users.') + print("-- Deleting test users.") try: ok, res = sdclient.delete_user(admin) if not ok: - print(('-- User \'', admin, '\' deletion failed: ', res)) + print(("-- User '", admin, "' deletion failed: ", res)) except Exception as exception: - print(('-- User \'', admin, '\' deletion failed: ', exception)) + print(("-- User '", admin, "' deletion failed: ", exception)) try: ok, res = sdclient.delete_user(userA) if not ok: - print(('-- User \'', userA, '\' deletion failed: ', res)) + print(("-- User '", userA, "' deletion failed: ", res)) except Exception as exception: - print(('-- User \'', userA, '\' deletion failed: ', exception)) + print(("-- User '", userA, "' deletion failed: ", exception)) try: ok, res = sdclient.delete_user(userB) if not ok: - print(('-- User \'', userB, '\' deletion failed: ', res)) + print(("-- User '", userB, "' deletion failed: ", res)) except Exception as exception: - print(('-- User \'', userB, '\' deletion failed: ', exception)) + print(("-- User '", userB, "' deletion failed: ", exception)) -print('All done successfully!!!') +print("All done successfully!!!") sys.exit(0) diff --git a/openapi.yaml b/openapi.yaml new file mode 100644 index 00000000..38b38bdc --- /dev/null +++ b/openapi.yaml @@ -0,0 +1,21961 @@ +openapi: 3.0.0 +info: + version: 1.1.1 + title: Sysdig Public API + description: |- + Sysdig Public API. + contact: + name: Sysdig + url: https://sysdig.com + email: info@sysdig.com + license: + name: Sysdig License + url: https://docs.sysdig.com/en/docs/administration/administration-settings/subscription/ +security: + - bearerAuth: [] +paths: + /monitor/cost-advisor/v1/pricing: + x-excluded-environments: + - OnPrem + get: + summary: List Pricing + description: | + Retrieve a paginated list of pricing.\ + \ + **Required permissions:** _cost-advisor.read_ + operationId: getPricingV1 + tags: + - Cost Advisor Custom Pricing + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - name: clusterName + in: query + description: | + The name of the Kubernetes cluster for which you want to retrive the pricing. + required: false + schema: + type: string + maxLength: 256 + example: prod-us-1 + - name: type + in: query + description: | + The type of pricing to find. + required: false + schema: + $ref: '#/components/schemas/PricingType' + responses: + '200': + description: The pricing page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetPricingPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Pricing + description: | + Change a new pricing to use as default (for cloud providers that Cost Advisor doesn't automatically support) or for a specific Kubernetes cluster.\ + \ + You need to specify hourly costs for 1 CPU, 1GB of RAM and 1GB of storage. \ + Different CPU and RAM costs can be specified for spot instances; to enable Cost Advisor to identify the spot node, a label and spot value must also be set. \ + \ + Cluster hourly cost = sum(node hourly costs) + (total storage * storage unit cost). \ + Node hourly cost = (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) \ + \ + **Required permissions:** _cost-advisor.edit_ + operationId: createPricingV1 + tags: + - Cost Advisor Custom Pricing + requestBody: + description: The payload to create pricing. Use the type field to create a default pricing or pricing for a specific Kubernetes cluster. + content: + application/json: + schema: + $ref: '#/components/schemas/CreatePricingRequestV1' + responses: + '201': + description: Pricing created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/PricingResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/cost-advisor/v1/pricing/{pricingId}: + x-excluded-environments: + - OnPrem + get: + summary: Get Pricing + description: | + Retrieve a pricing by ID.\ + \ + **Required permissions:** _cost-advisor.read_ + operationId: getPricingByIdV1 + tags: + - Cost Advisor Custom Pricing + parameters: + - $ref: '#/components/parameters/PricingIdPath' + responses: + '200': + description: Pricing found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/PricingResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Pricing + description: | + The pricing payload containing the changes you want to apply to the pricing.\ + \ + **Required permissions:** _cost-advisor.edit_ + operationId: updatePricingByIdV1 + tags: + - Cost Advisor Custom Pricing + parameters: + - $ref: '#/components/parameters/PricingIdPath' + requestBody: + description: The payload required to create the pricing. + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePricingRequestV1' + responses: + '200': + description: Pricing updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/PricingResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Pricing + description: | + Delete a pricing by its ID. If the pricing deleted is the DEFAULT one. Cost Advisor will continue to compute costs for the unsupported Kubernetes cluster using the Sysdig default pricing.\ + \ + **Required permissions:** _cost-advisor.edit_ + operationId: deletePricingByIdV1 + tags: + - Cost Advisor Custom Pricing + parameters: + - $ref: '#/components/parameters/PricingIdPath' + responses: + '204': + description: Pricing deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/cost-advisor/v1/pricing/{pricingId}/projected-costs: + x-excluded-environments: + - OnPrem + get: + summary: Get Pricing Projected Costs + description: | + Retrieve the monthly projected costs for the clusters using the specified pricing.\ + The computation is done using the total CPU and RAM for the current cluster's nodes and the total storage used by the cluster.\ + \ + Projected monthly cost = 730 * (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) + (total storage * storage unit cost). \ + \ + **Required permissions:** _cost-advisor.read_ + operationId: getPricingProjectedCostsV1 + tags: + - Cost Advisor Custom Pricing + parameters: + - $ref: '#/components/parameters/PricingIdPath' + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + responses: + '200': + description: Montlhy projected costs. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetPricingProjectedPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/cost-advisor/v1alpha1/data/workload-cost-trends: + x-excluded-environments: + - OnPrem + post: + summary: Workload Cost Trends Data + description: | + Returns workload cost trends data for a specified trend range, pivot date, optional scope, + and optional grouping. The response includes cost totals for both current + and previous periods, along with the date ranges for each period. + operationId: getWorkloadCostDataV1 + tags: + - Cost Advisor Data + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/WorkloadCostTrendsDataRequest' + responses: + '200': + description: Workload Cost Trend data + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/WorkloadCostTrendsDataResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/cost-advisor/v1alpha1/data/wasted-workload-spend: + x-excluded-environments: + - OnPrem + post: + summary: Wasted Workload Spend Data + description: | + Use this API to generate a report of Wasted Workload Spend data for a specified date range, scope, + and grouping. For details, see [Wasted Workload Spend Report](https://docs.sysdig.com/en/sysdig-monitor/cost-reports/#wasted-workload-spend-report). + operationId: getWastedWorkloadData + tags: + - Cost Advisor Data + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/WastedWorkloadDataRequest' + responses: + '200': + description: Wasted Workload Spend data + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/WastedWorkloadSpendDataResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/cost-advisor/v1alpha1/data/workload-rightsizing: + x-excluded-environments: + - OnPrem + post: + summary: Workload Rightsizing Data + description: "Use this API to generate a Workload Rightsizing data for a specified date range, algorithm and optional scope. \nThe response is automatically grouped by the following Prometheus labels:\n - kube_cluster_name\n - kube_namespace_name\n - kube_workload_name\n - container_name\n" + operationId: getWorkloadRightsizingData + tags: + - Cost Advisor Data + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/WorkloadRightsizingDataRequest' + responses: + '200': + description: Workload Rightsizing data + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/WorkloadRightsizingDataResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/alerts/v1/inhibition-rules: + get: + summary: List Inhibition Rules + description: | + Retrieve the list of inhibition rules.\ + \ + **Required permissions:** _inhibition-rules.read_ or _alerts.read_ + operationId: getInhibitionRules + tags: + - Inhibition Rules + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + responses: + '200': + description: The list of inhibition rules. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetInhibitionRulesPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Inhibition Rule + description: | + Create an inhibition rule.\ + \ + **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + operationId: createInhibitionRule + tags: + - Inhibition Rules + requestBody: + description: The inhibition rule to be created. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateInhibitionRuleRequestV1' + responses: + '201': + description: Inhibition rule created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/InhibitionRuleResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/alerts/v1/inhibition-rules/{inhibitionRuleId}: + get: + summary: Get Inhibition Rule + description: | + Retrieve an inhibition rule by ID.\ + \ + **Required permissions:** _inhibition-rules.read_ or _alerts.read_ + operationId: getInhibitionRuleById + tags: + - Inhibition Rules + parameters: + - $ref: '#/components/parameters/InhibitionRulePath' + responses: + '200': + description: Inhibition rule found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/InhibitionRuleResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Inhibition Rule + description: | + Update an inhibition rule.\ + \ + **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + operationId: updateInhibitionRule + tags: + - Inhibition Rules + parameters: + - $ref: '#/components/parameters/InhibitionRulePath' + requestBody: + description: The new version of the inhibition rule. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateInhibitionRuleRequestV1' + responses: + '200': + description: Inhibition rule updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/InhibitionRuleResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Inhibition Rule + description: | + Delete an inhibition rule by its ID.\ + \ + **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + operationId: deleteInhibitionRuleById + tags: + - Inhibition Rules + parameters: + - $ref: '#/components/parameters/InhibitionRulePath' + responses: + '204': + description: Inhibition rule deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/events/v1/events: + get: + summary: Get Events + operationId: getMonitorEventsV1 + description: "Retrieves the list of events matching the expressed search criteria.\nThe pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa.\nThe time criteria is required and can be specified in two different ways:\n- Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones.\n- Using a `cursor` the events returned will be in the before or after the event, depending on the cursor type. More details are available in the `cursor` attribute in the response.\\\n\\\n**Required permissions:** \n- _alert-events.read_ for alert events to be included in the response\n- _custom-events.read_ for custom events to be included in the response\n" + tags: + - Monitor Events + parameters: + - in: query + name: from + schema: + $ref: '#/components/schemas/MonitorEventsFrom' + - in: query + name: to + schema: + $ref: '#/components/schemas/MonitorEventsTo' + - in: query + name: cursor + schema: + $ref: '#/components/schemas/MonitorEventsCursor' + - in: query + name: filter + schema: + $ref: '#/components/schemas/MonitorEventsFilter' + - $ref: '#/components/parameters/Limit' + responses: + '200': + description: The list of events. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ListMonitorEventsResponse' + '400': + description: Bad request + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/prometheus-jobs/v1/disabled-metrics: + get: + summary: List disabled metrics collection for Jobs. + description: | + List all disabled metrics per Job.\ + \ + **Required permissions:** Integrations Read + operationId: getDisabledMetricsByJobV1 + tags: + - Metrics Collection + parameters: + - name: jobName + in: query + description: | + The name of the Prometheus Job whose excluded metrics are to be listed. + required: false + schema: + type: string + example: job-name-default + maxLength: 256 + - name: metricName + in: query + description: | + The exact name of the metric to be filtered. + required: false + schema: + type: string + example: apache_accesses_total + maxLength: 256 + responses: + '200': + description: The list of disabled metrics associated with the specified Job. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseListDisabledMetricsV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Disable or re-enable metrics collection for Jobs + description: | + Disable specific metric collection for a specified Job. \ + This API supports specifying multiple Jobs, each with its own list of metrics to be disabled. \ + Additionally, you can use the same API to re-enable metrics that were previously disabled.\ + \ + **Required permissions:** Integrations Full Access + operationId: postDisabledMetricsV1 + tags: + - Metrics Collection + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RequestBodyDisabledMetricsV1' + responses: + '200': + description: All Jobs and metrics have been disabled/re-enabled successfully. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseListDisabledMetricsV1' + '207': + description: Some metrics could not be disabled/re-enabled. Check the error information for further explanation. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseListDisabledMetricsAndErrorV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/prometheus-jobs/v1alpha1/custom-jobs: + get: + summary: List Custom Prometheus jobs + description: | + Retrieve a paginated list of custom Prometheus jobs.\ + \ + **Required permissions:** _promcat.integrations.read_ + operationId: getCustomPrometheusJobsV1 + tags: + - Metrics Collection + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + responses: + '200': + description: The custom jobs page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetCustomJobsPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}: + post: + summary: Create Custom Prometheus job + description: "Create a custom Prometheus job. \n\\\nThe body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\\\n\\\nThe custom job will be disabled by default and must be enabled with the `/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement` api.\n\\\nYou can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations\n\\\n**CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs.\n\\\n**Required permissions:** _promcat.integrations.admin_\n" + operationId: createCustomPrometheusJobV1 + tags: + - Metrics Collection + parameters: + - $ref: '#/components/parameters/JobNamePath' + requestBody: + description: The payload to create a custom job. Content must be a valid Prometheus `scrape_config`. + content: + application/yaml: + schema: + $ref: '#/components/schemas/CustomJobContentV1' + responses: + '201': + description: Custom Prometheus job created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/yaml: + schema: + $ref: '#/components/schemas/CustomJobContentV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + get: + summary: Get Custom Prometheus Job + description: | + Retrieve a custom Prometheus job by its name.\ + \ + **Required permissions:** _promcat.integrations.read_ + operationId: getCustomPrometheusJobByNameV1 + tags: + - Metrics Collection + parameters: + - $ref: '#/components/parameters/JobNamePath' + responses: + '200': + description: Custom Prometheus Job found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/yaml: + schema: + $ref: '#/components/schemas/CustomJobContentV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Custom Prometheus Job + description: "Update a custom Prometheus job. \n\\\nThe body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\\\n\\\nYou can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations\n\\\n**CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs.\n\\\n**Required permissions:** _promcat.integrations.admin_\n" + operationId: updateCustomPrometheusJobByIdV1 + tags: + - Metrics Collection + parameters: + - $ref: '#/components/parameters/JobNamePath' + requestBody: + description: The custom Prometheus job yaml content + content: + application/yaml: + schema: + $ref: '#/components/schemas/CustomJobContentV1' + responses: + '200': + description: Custom Prometheus job updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/yaml: + schema: + $ref: '#/components/schemas/CustomJobContentV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Custom Prometheus job + description: | + Delete a custom Prometheus job by its name.\ + \ + **Required permissions:** _promcat.integrations.admin_ + operationId: deleteCustomPrometheusJobByIdV1 + tags: + - Metrics Collection + parameters: + - $ref: '#/components/parameters/JobNamePath' + responses: + '204': + description: Custom Prometheus job deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement: + get: + summary: Get Custom Prometheus Job enablement + description: | + Retrieve the enablement state of a custom Prometheus job by its name.\ + \ + **Required permissions:** _promcat.integrations.admin_ + operationId: getCustomPrometheusJobEnablementV1 + tags: + - Metrics Collection + parameters: + - $ref: '#/components/parameters/JobNamePath' + responses: + '200': + description: Custom Prometheus job found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/CustomJobsEnablementV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Custom Prometheus Job enablement + description: | + Update the enablement state of a custom Prometheus job by its name.\ + \ + **Required permissions:** _promcat.integrations.admin_ + operationId: updateCustomPrometheusJobEnablementV1 + tags: + - Metrics Collection + parameters: + - $ref: '#/components/parameters/JobNamePath' + requestBody: + description: The payload required to enable the custom Prometheus job. + content: + application/json: + schema: + $ref: '#/components/schemas/CustomJobsEnablementV1' + responses: + '200': + description: Custom Prometheus job enablement updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/CustomJobsEnablementV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /prometheus/api/v1/query: + get: + summary: Instant Query + description: | + This endpoint evaluates an instant query at a single point in time. + \ + **Required permissions:** _metrics-data.read_ + operationId: getQueryV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/Query' + - $ref: '#/components/parameters/Time' + - $ref: '#/components/parameters/Timeout' + - $ref: '#/components/parameters/LimitQuery' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Instant query result. + content: + application/json: + schema: + $ref: '#/components/schemas/QueryResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + post: + summary: Instant Query + description: | + This endpoint evaluates an instant query at a single point in time. + \ + **Required permissions:** _metrics-data.read_ + operationId: postQueryV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/Query' + - $ref: '#/components/parameters/Time' + - $ref: '#/components/parameters/Timeout' + - $ref: '#/components/parameters/LimitQuery' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Instant query result. + content: + application/json: + schema: + $ref: '#/components/schemas/QueryResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + /prometheus/api/v1/query_range: + get: + summary: Range Query + description: | + This endpoint evaluates an expression query over a specified time range. + \ + **Required permissions:** _metrics-data.read_ + operationId: getQueryRangeV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/Query' + - $ref: '#/components/parameters/TimeStartQuery' + - $ref: '#/components/parameters/TimeEndQuery' + - $ref: '#/components/parameters/Step' + - $ref: '#/components/parameters/Timeout' + - $ref: '#/components/parameters/LimitQuery' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Range query result. + content: + application/json: + schema: + $ref: '#/components/schemas/QueryResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '422': + $ref: '#/components/responses/UnprocessableEntityPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + post: + summary: Range Query + description: | + This endpoint evaluates an expression query over a specified time range. + \ + **Required permissions:** _metrics-data.read_ + operationId: postQueryRangeV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/Query' + - $ref: '#/components/parameters/TimeStartQuery' + - $ref: '#/components/parameters/TimeEndQuery' + - $ref: '#/components/parameters/Step' + - $ref: '#/components/parameters/Timeout' + - $ref: '#/components/parameters/LimitQuery' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Range query result. + content: + application/json: + schema: + $ref: '#/components/schemas/QueryResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '422': + $ref: '#/components/responses/UnprocessableEntityPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + /prometheus/api/v1/series: + get: + summary: Series Query + description: | + The following endpoint returns the list of time series that match a specified label set. + \ + **Required permissions:** _metrics-data.read_ + operationId: getSeriesV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/MatchSeries' + - $ref: '#/components/parameters/TimeStartSeries' + - $ref: '#/components/parameters/TimeEndSeries' + - $ref: '#/components/parameters/LimitSeries' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: List of time series. + content: + application/json: + schema: + $ref: '#/components/schemas/SeriesResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '422': + $ref: '#/components/responses/UnprocessableEntityPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + post: + summary: Series Query + description: | + The following endpoint returns the list of time series that match a specified label set. + \ + **Required permissions:** _metrics-data.read_ + operationId: postSeriesV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/MatchSeries' + - $ref: '#/components/parameters/TimeStartSeries' + - $ref: '#/components/parameters/TimeEndSeries' + - $ref: '#/components/parameters/LimitSeries' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: List of time series. + content: + application/json: + schema: + $ref: '#/components/schemas/SeriesResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '422': + $ref: '#/components/responses/UnprocessableEntityPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + /prometheus/api/v1/labels: + get: + summary: Labels Query + description: | + The following endpoint returns a list of label names: + \ + **Required permissions:** _metrics-data.read_ + operationId: getLabelsV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/TimeStartUnsupported' + - $ref: '#/components/parameters/TimeEndUnsupported' + - $ref: '#/components/parameters/MatchLabelNames' + - $ref: '#/components/parameters/LimitSeries' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: List of labels. + content: + application/json: + schema: + $ref: '#/components/schemas/LabelsResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + post: + summary: Labels Query + description: | + The following endpoint returns a list of label names: + \ + **Required permissions:** _metrics-data.read_ + operationId: postLabelsV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/TimeStartUnsupported' + - $ref: '#/components/parameters/TimeEndUnsupported' + - $ref: '#/components/parameters/MatchLabelNames' + - $ref: '#/components/parameters/LimitSeries' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: List of labels. + content: + application/json: + schema: + $ref: '#/components/schemas/LabelsResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + /prometheus/api/v1/label/{labelName}/values: + get: + summary: Labels Values Query + description: | + The following endpoint returns a list of label names: + \ + **Required permissions:** _metrics-data.read_ + operationId: getLabelValuesV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/TimeStartUnsupported' + - $ref: '#/components/parameters/TimeEndUnsupported' + - $ref: '#/components/parameters/LabelNamePath' + - $ref: '#/components/parameters/MatchLabelValues' + - $ref: '#/components/parameters/LimitLabelValues' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: List of labels. + content: + application/json: + schema: + $ref: '#/components/schemas/LabelValuesResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + /prometheus/api/v1/metadata: + get: + summary: Querying metric metadata + description: | + The following endpoint returns a list of label names: + \ + **Required permissions:** _metrics-data.read_ + operationId: getMetadataV1 + tags: + - Prometheus + parameters: + - $ref: '#/components/parameters/LimitPerMetricUnsupported' + - $ref: '#/components/parameters/LimitMetrics' + - $ref: '#/components/parameters/MetricName' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/MetadataResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + /prometheus/api/v1/rules: + get: + summary: Rules + description: "The /rules API endpoint returns the list of alerting rules. It also returns the currently active alerts fired by the Prometheus instance of each alerting rule. \n\\\nSysdig currently does not support recording rules.\n\\\n**Required permissions:** _alerts.read_\n" + operationId: getRulesV1 + tags: + - Prometheus + parameters: + - name: type + in: query + required: false + schema: + type: string + enum: + - alert + description: This endpoint only returns alerting rules (`type=alert`). When absent or empty, only alerting rules are returned. + - name: rule_name[] + in: query + required: false + schema: + type: array + maxItems: 100 + items: + type: string + maxLength: 255 + style: form + explode: true + description: Only return rules with the given rule name. If repeated, rules with any of the provided names are returned. + - name: rule_group[] + in: query + required: false + schema: + type: array + maxItems: 100 + items: + type: string + maxLength: 255 + style: form + explode: true + description: Only return rules with the given rule group name. If repeated, rules with any of the provided group names are returned. + - name: file[] + in: query + required: false + schema: + type: array + maxItems: 100 + items: + type: string + maxLength: 255 + style: form + explode: true + description: UNSUPPORTED - Sysdig does not support this parameter. + - name: exclude_alerts + in: query + required: false + schema: + type: boolean + description: This endpoint supports only returning alerting rules (`exclude_alerts=true`). + - name: match[] + in: query + required: false + schema: + type: array + maxItems: 100 + items: + type: string + maxLength: 512 + style: form + explode: true + description: Only return rules with configured labels that satisfy the label selectors. + - name: group_limit + in: query + required: false + schema: + $ref: '#/components/schemas/UnlimitedLong' + description: Limit the number of rule groups returned in a single response. + - name: group_next_token + in: query + required: false + schema: + type: string + maxLength: 255 + description: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: List of rules. + content: + application/json: + schema: + $ref: '#/components/schemas/RulesResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + /prometheus/api/v1/alerts: + get: + summary: Alerts + description: | + Returns a list of active alerts that are currently firing in Prometheus. + \ + **Required permissions:** _alerts.read_ + operationId: getAlertsV1 + tags: + - Prometheus + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: List of alerts. + content: + application/json: + schema: + $ref: '#/components/schemas/AlertsResponseV1' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + /prometheus/api/v1/write: + post: + summary: Ingest metric data (remote write) + description: | + Accepts a Protobuf-encoded Snappy-compressed request containing time series data. Used for remote write integrations. + \ + **Required permissions:** _ingest.prws_ + operationId: remoteWriteV1 + tags: + - Prometheus + requestBody: + required: true + content: + application/x-protobuf: + schema: + type: string + format: binary + description: Protobuf-encoded and Snappy-compressed WriteRequest message. + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Confirmation message. + content: + text/plain: + schema: + type: string + maxLength: 10000 + example: '' + '400': + $ref: '#/components/responses/BadRequestPrometheus' + '401': + $ref: '#/components/responses/UnauthorizedPrometheus' + '404': + $ref: '#/components/responses/NotFoundPrometheus' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerErrorPrometheus' + /prometheus/api/v1/format_query: + get: + summary: Format Query + description: | + This endpoint is NOT SUPPORTED. + operationId: getFormatQueryV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + post: + summary: Format Query + description: | + This endpoint is NOT SUPPORTED. + operationId: postFormatQueryV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/parse_query: + get: + summary: Parse Query + description: | + This endpoint is NOT SUPPORTED. + operationId: getParseQueryV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + post: + summary: Parse Query + description: | + This endpoint is NOT SUPPORTED. + operationId: postParseQueryV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/query_exemplars: + get: + summary: Query Exemplars + description: | + This endpoint is NOT SUPPORTED. + operationId: getExemplarsV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + post: + summary: Query Exemplars + description: | + This endpoint is NOT SUPPORTED. + operationId: postExemplarsV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/targets: + get: + summary: Targets + description: | + This endpoint is NOT SUPPORTED. + operationId: getTargetsV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/targets/metadata: + get: + summary: Querying target metadata + description: | + This endpoint is NOT SUPPORTED. + operationId: getTargetsMetadataV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1//alertmanagers: + get: + summary: Alertmanagers + description: | + This endpoint is NOT SUPPORTED. + operationId: getAlertManagersV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/status/config: + get: + summary: Config + description: | + This endpoint is NOT SUPPORTED. + operationId: getStatusConfigV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/status/flags: + get: + summary: Flags + description: | + This endpoint is NOT SUPPORTED. + operationId: getStatusFlagsV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/status/runtimeinfo: + get: + summary: Runtime Information + description: | + This endpoint is NOT SUPPORTED. + operationId: getStatusRuntimeInfoV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/status/buildinfo: + get: + summary: Build Information + description: | + This endpoint is NOT SUPPORTED. + operationId: getStatusBuildInfoV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/status/tsdb: + get: + summary: TSDB Stats + description: | + This endpoint is NOT SUPPORTED. + operationId: getStatusTsdbV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/status/walreplay: + get: + summary: WAL Replay + description: | + This endpoint is NOT SUPPORTED. + operationId: getStatusWalReplayV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/admin/tsdb/snapshot: + post: + summary: Snapshot + description: | + This endpoint is NOT SUPPORTED. + operationId: getAdminTsdbSnapshotV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + put: + summary: Snapshot + description: | + This endpoint is NOT SUPPORTED. + operationId: postAdminTsdbSnapshotV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/admin/tsdb/delete_series: + post: + summary: Delete Series + description: | + This endpoint is NOT SUPPORTED. + operationId: getAdminTsdbDeleteSeriesV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + put: + summary: Delete Series + description: | + This endpoint is NOT SUPPORTED. + operationId: postAdminTsdbDeleteSeriesV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/admin/tsdb/clean_tombstones: + post: + summary: Clean Tombstones + description: | + This endpoint is NOT SUPPORTED. + operationId: getAdminTsdbCleanTombstonesV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + put: + summary: Clean Tombstones + description: | + This endpoint is NOT SUPPORTED. + operationId: postAdminTsdbCleanTombstonesV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/notifications: + get: + summary: Active Notifications + description: | + This endpoint is NOT SUPPORTED. + operationId: getNotificationsV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /prometheus/api/v1/notifications/live: + get: + summary: Live Notifications + description: | + This endpoint is NOT SUPPORTED. + operationId: getLiveNotificationsV1 + tags: + - Prometheus + responses: + '410': + $ref: '#/components/responses/GonePrometheus' + /platform/v1/platform-audit-events: + x-excluded-environments: + - IBM + get: + summary: Get Platform Audit Events + description: | + Retrieve a paginated list of Platform Audit Events.\ + \ + **Required permissions:** _audit-trail-events.read_ + operationId: getPlatformAuditEventsV1 + tags: + - Platform Audit + parameters: + - in: query + name: from + schema: + $ref: '#/components/schemas/From' + - in: query + name: to + schema: + $ref: '#/components/schemas/To' + - in: query + name: cursor + schema: + $ref: '#/components/schemas/Cursor' + - in: query + name: filter + schema: + $ref: '#/components/schemas/AuditEventsFeedFilter' + - in: query + name: limit + schema: + $ref: '#/components/schemas/AuditEventsFeedLimit' + responses: + '200': + description: List of Platform Audit Events. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ListAuditEventsResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/jira/v1/integrations: + summary: The following are the operations applicable to the Jira integrations. + get: + summary: List Jira integrations + description: | + This operation returns a paginated list of Jira integrations from the Sysdig platform. + + **Required permissions:** *ticketing-integration.read* + operationId: getJiraIntegrationsV1 + tags: + - Jira integrations + parameters: + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Enabled' + responses: + '200': + description: List of Jira integrations + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedIntegrationsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Jira integration + description: | + This operation creates a Jira integration on the Sysdig platform. + + **Required permissions:** *ticketing-integration.write* + operationId: createJiraIntegrationV1 + tags: + - Jira integrations + requestBody: + description: A Jira integration to create + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIntegrationRequestV1' + required: true + responses: + '201': + description: Created Jira integration + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/jira/v1/integrations/{integrationId}: + summary: The following are the operations applicable to the specific Jira integration. + get: + summary: Get Jira integration + description: | + This operation returns a specific Jira integration from the Sysdig platform. + + **Required permissions:** *ticketing-integration.read* + operationId: getJiraIntegrationV1 + tags: + - Jira integrations + parameters: + - $ref: '#/components/parameters/JiraIntegrationId' + responses: + '200': + description: Specific Jira integration + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Jira integration + description: | + This operation updates a specific Jira integration on the Sysdig platform. + + **Required permissions:** *ticketing-integration.write* + operationId: updateJiraIntegrationV1 + tags: + - Jira integrations + parameters: + - $ref: '#/components/parameters/JiraIntegrationId' + requestBody: + description: The Jira integration to update + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIntegrationRequestV1' + responses: + '200': + description: Updated Jira integration + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Jira integration + description: | + This operation deletes a specific Jira integration on the Sysdig platform. + + **Required permissions:** *ticketing-integration.write* + operationId: deleteJiraIntegrationV1 + tags: + - Jira integrations + parameters: + - $ref: '#/components/parameters/JiraIntegrationId' + responses: + '204': + description: Jira integration deleted successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/jira/v1/integrations/{integrationId}/issue-types: + summary: The following are the operations applicable to the Jira issue types. + get: + summary: List Jira issue types + description: | + This operation returns a list of Jira issue types from the Sysdig platform, associated with a particular Jira integration. + + **Required permissions:** *ticketing-integration.read* + operationId: getJiraIssueTypesV1 + tags: + - Jira integrations + parameters: + - $ref: '#/components/parameters/JiraIntegrationId' + responses: + '200': + description: List of Jira issue types for the particular Jira integration + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IssueTypesResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Jira issue type + description: | + This operation creates a Jira issue type on the Sysdig platform for the particular Jira integration. + + **Required permissions:** *ticketing-integration.write* + operationId: createJiraIssueTypeV1 + tags: + - Jira integrations + parameters: + - $ref: '#/components/parameters/JiraIntegrationId' + requestBody: + description: A Jira issue type to create + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIssueTypeRequestV1' + required: true + responses: + '201': + description: Created Jira issue type + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IssueTypeResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId}: + summary: The following are the operations applicable to the specific Jira issue type. + get: + summary: Get Jira issue type + description: | + This operation returns a specific Jira issue type from the Sysdig platform. + + **Required permissions:** *ticketing-integration.read* + operationId: getJiraIssueTypeV1 + tags: + - Jira integrations + parameters: + - $ref: '#/components/parameters/JiraIntegrationId' + - $ref: '#/components/parameters/IssueTypeId' + responses: + '200': + description: Specific Jira issue type + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IssueTypeResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Jira issue type + description: | + This operation updates a specific Jira issue type on the Sysdig platform. + + **Required permissions:** *ticketing-integration.write* + operationId: updateJiraIssueTypeV1 + tags: + - Jira integrations + parameters: + - $ref: '#/components/parameters/JiraIntegrationId' + - $ref: '#/components/parameters/IssueTypeId' + requestBody: + description: A Jira issue type to update + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIssueTypeRequestV1' + responses: + '200': + description: Updated Jira issue type + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IssueTypeResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Jira issue type + description: | + This operation deletes a specific Jira issue type on the Sysdig platform. + + **Required permissions:** *ticketing-integration.write* + operationId: deleteJiraIssueTypeV1 + tags: + - Jira integrations + parameters: + - $ref: '#/components/parameters/JiraIntegrationId' + - $ref: '#/components/parameters/IssueTypeId' + responses: + '204': + description: Jira issue type deleted successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/notification-channels: + get: + summary: List Notification Channels + description: | + Retrieve a paginated list of notification channels.\ + \ + **Required permissions:** _notification-channels.read_ + operationId: getNotificationChannels + tags: + - Notification Channels + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + responses: + '200': + description: A page of notification channels. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetNotificationChannelsPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Notification Channel + description: | + Create a notification channel.\ + \ + **Required permissions:** _notification-channels.edit_ + operationId: createNotificationChannel + tags: + - Notification Channels + requestBody: + description: The payload required to create a notification channel + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + responses: + '201': + description: Notification Channel created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationChannelResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/notification-channels/{notificationChannelId}: + summary: The following are the operations applicable to a specific notification channel. + get: + summary: Get Notification Channel + description: | + Returns a specific notification channel by its ID.\ + \ + **Required permissions:** _notification-channels.read_ + operationId: getNotificationChannelById + tags: + - Notification Channels + parameters: + - $ref: '#/components/parameters/NotificationChannelIdPath' + responses: + '200': + description: Notification Channel found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationChannelResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Notification Channel + description: | + Update a notification channel by its ID.\ + \ + **Required permissions:** _notification-channels.edit_ + operationId: updateNotificationChannelById + tags: + - Notification Channels + parameters: + - $ref: '#/components/parameters/NotificationChannelIdPath' + requestBody: + description: The payload required to update the notification channel + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + responses: + '200': + description: Notification channel updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationChannelResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Notification Channel + description: | + Delete a notification channel by its ID.\ + \ + **Required permissions:** _notification-channels.edit_ + operationId: deleteNotificationChannelById + tags: + - Notification Channels + parameters: + - $ref: '#/components/parameters/NotificationChannelIdPath' + responses: + '204': + description: Notification Channel deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/teams: + get: + summary: List Teams + description: | + Retrieve a paginated list of teams.\ + \ + **Required permissions:** _customer-teams.read_ + operationId: getTeamsV1 + tags: + - Teams + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/OrderBy' + - $ref: '#/components/parameters/Filter' + responses: + '200': + description: The teams page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetTeamsPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Team + description: | + Create a new team.\ + \ + **Required permissions:** _teams.create_ + operationId: createTeamV1 + tags: + - Teams + requestBody: + description: The payload required to create a new team. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTeamRequestV1' + responses: + '201': + description: Team created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/teams/{teamId}: + get: + summary: Get Team + description: | + Return a team by ID.\ + \ + **Required permissions:** _customer-teams.read_ + operationId: getTeamByIdV1 + tags: + - Teams + parameters: + - $ref: '#/components/parameters/TeamIdPath' + responses: + '200': + description: Team found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Team + description: | + Update a team by its ID.\ + \ + **Required permissions:** _teams.edit_ + operationId: updateTeamByIdV1 + tags: + - Teams + parameters: + - $ref: '#/components/parameters/TeamIdPath' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTeamRequestV1' + responses: + '200': + description: Team updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Team + description: | + Delete a team by its ID.\ + \ + **Required permissions:** _teams.edit_ + operationId: deleteTeamByIdV1 + tags: + - Teams + parameters: + - $ref: '#/components/parameters/TeamIdPath' + responses: + '204': + description: Team deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/teams/{teamId}/users: + get: + summary: List Memberships + description: | + Retrieve a paginated list of memberships in a given team ID.\ + \ + **Required permissions:** _memberships.read_ + operationId: getTeamUsersV1 + tags: + - Teams + parameters: + - $ref: '#/components/parameters/TeamIdPath' + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - name: withAdminUsers + in: query + description: Include admin users in the response. + required: false + schema: + default: false + type: boolean + responses: + '200': + description: The memberships page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetTeamUsersPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/teams/{teamId}/users/{userId}: + get: + summary: Get Membership + description: | + Return a membership by its ID.\ + \ + **Required permissions:** _memberships.read_ + operationId: getTeamUserByIdV1 + tags: + - Teams + parameters: + - $ref: '#/components/parameters/TeamIdPath' + - $ref: '#/components/parameters/UserIdPath' + responses: + '200': + description: Membership found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/TeamUserResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Save Membership + description: | + Add or update a membership. + + | Permission | Description | + | -----------------------| --------------------------------------------------------------------------------------------------------| + | memberships.edit | Required to create a new membership. | + | memberships-roles.edit | Required to change roles of an existing membership or to create a new membership with a specific role. | + operationId: saveTeamUserV1 + tags: + - Teams + parameters: + - $ref: '#/components/parameters/TeamIdPath' + - $ref: '#/components/parameters/UserIdPath' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SaveTeamUserRequestV1' + responses: + '200': + description: Membership updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/TeamUserResponseV1' + '201': + description: Membership created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/TeamUserResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Membership + description: | + Delete a membership defined by its ID.\ + \ + **Required permissions:** _memberships.edit_ + operationId: deleteTeamUserByIdV1 + tags: + - Teams + parameters: + - $ref: '#/components/parameters/TeamIdPath' + - $ref: '#/components/parameters/UserIdPath' + responses: + '204': + description: Membership deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/users: + get: + summary: List Users + description: | + Retrieve a paginated list of users.\ + \ + **Required permissions:** _users.read_ + operationId: getUsersV1 + tags: + - Users + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/OrderBy' + - $ref: '#/components/parameters/Filter' + responses: + '200': + description: The users page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetUsersPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create User + description: | + Create a new user.\ + \ + **Required permissions:** _users.create_ + operationId: createUserV1 + tags: + - Users + parameters: + - name: activationFlow + in: query + description: | + The activation flow is used to send an invitation email to the user that is being created.\ + \ + **NOTE: it is required to set at least one product in the payload in order to send the appropriate email.** + required: false + schema: + type: boolean + default: false + example: true + requestBody: + description: The payload required to create a new user. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateUserRequestV1' + required: true + responses: + '201': + description: User created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '409': + $ref: '#/components/responses/Conflict' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/users/{userId}: + get: + summary: Get User + description: | + Display a user by ID.\ + \ + **Required permissions:** _users.read_ + operationId: getUserByIdV1 + tags: + - Users + parameters: + - $ref: '#/components/parameters/UserIdPath' + responses: + '200': + description: User found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update User + description: | + Update a user by its ID. \ + \ + **Required permissions:** _users.edit_ + operationId: updateUserV1 + tags: + - Users + parameters: + - $ref: '#/components/parameters/UserIdPath' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserRequestV1' + required: true + responses: + '200': + description: User updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete User + description: | + Delete a user by its ID.\ + \ + **Required permissions:** _users.edit_ + operationId: deleteUserByIdV1 + tags: + - Users + parameters: + - $ref: '#/components/parameters/UserIdPath' + responses: + '204': + description: User deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/configuration/user-deactivation: + get: + summary: Get User Deactivation Configuration + description: | + Retrieve the user deactivation configuration.\ + \ + **Required permissions:** _customer-user-deactivation-configuration.read_ + operationId: getUserDeactivationConfigurationV1 + tags: + - User Deactivation + responses: + '200': + description: Display the User Deactivation Configuration. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/UserDeactivationConfigurationResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update or Create User Deactivation Configuration + description: | + Update or Create User deactivation configuration.\ + \ + **Required permissions:** _customer-user-deactivation-configuration.edit_ + operationId: updateUserDeactivationConfigurationByIdV1 + tags: + - User Deactivation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserDeactivationConfigurationRequestV1' + responses: + '200': + description: User Configuration updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/UserDeactivationConfigurationResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/configuration/capture-storage: + get: + summary: Get Capture Storage Configuration + description: | + Retrieve the capture storage configuration.\ + \ + **Required permissions:** _sysdig-storage.read_ + operationId: getCaptureStorageConfigurationV1 + tags: + - Capture Storage + responses: + '200': + description: Display the Capture Storage Configuration. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/CaptureStorageConfigurationResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update or Create Capture Storage Configuration + description: | + Update or Create Capture Storage configuration.\ + \ + **Required permissions:** _sysdig-storage.edit_ + operationId: updateCaptureStorageConfigurationV1 + tags: + - Capture Storage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SaveCaptureStorageConfigurationRequestV1' + responses: + '200': + description: Capture Storage updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/CaptureStorageConfigurationResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/access-keys: + get: + summary: List Access Keys + description: | + Retrieve a paginated list of access keys.\ + \ + **Required permissions:** _customer-access-keys.read_ + operationId: getAccessKeysV1 + tags: + - Access Keys + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/OrderBy' + - $ref: '#/components/parameters/MultiFilter' + responses: + '200': + description: The access keys page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetAccessKeysPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Access Key + description: | + Create a new access key.\ + \ + **Required permissions:** _customer-access-keys.edit_ + operationId: createAccessKeyV1 + tags: + - Access Keys + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAccessKeyRequestV1' + responses: + '201': + description: Access key created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/AccessKeyResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/access-keys/{accessKeyId}: + get: + summary: Get Access Key + description: | + Return an access key by id.\ + \ + **Required permissions:** _customer-access-keys.read_ + operationId: getAccessKeyByIdV1 + tags: + - Access Keys + parameters: + - $ref: '#/components/parameters/AccessKeyIdPath' + responses: + '200': + description: Access key found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/AccessKeyResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Access Key + description: | + Update an access key by id.\ + \ + **Required permissions:** _customer-access-keys.edit_ + operationId: updateAccessKeyByIdV1 + tags: + - Access Keys + parameters: + - $ref: '#/components/parameters/AccessKeyIdPath' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateAccessKeyRequestV1' + responses: + '200': + description: Access key updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/AccessKeyResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Access Key + description: | + Delete an access key by id.\ + \ + **Required permissions:** customer-access-keys.edit_ + operationId: deleteAccessKeyByIdV1 + tags: + - Access Keys + parameters: + - $ref: '#/components/parameters/AccessKeyIdPath' + responses: + '204': + description: Access key deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/group-mappings: + get: + summary: List Group Mappings + description: | + Retrieve a paginated list of group mappings.\ + \ + **Required permissions:** _group-mappings.read_ + operationId: getGroupMappingsV1 + tags: + - Group Mappings + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/OrderBy' + - $ref: '#/components/parameters/Filter' + responses: + '200': + description: Group mappings paginated response. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GroupMappingsPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Group Mapping + description: | + Create a new group mapping.\ + \ + **Required permissions:** _group-mappings.edit_ + operationId: createGroupMappingV1 + tags: + - Group Mappings + requestBody: + description: The payload required to create group mapping. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateGroupMappingRequestV1' + responses: + '201': + description: Group Mapping created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GroupMappingResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/group-mappings/{groupMappingId}: + get: + summary: Get Group Mapping + description: | + Return a group mapping by its ID.\ + \ + **Required permissions:** _group-mappings.read_ + operationId: getGroupMappingByIdV1 + tags: + - Group Mappings + parameters: + - $ref: '#/components/parameters/GroupMappingIdPath' + responses: + '200': + description: Group Mapping found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GroupMappingResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Group Mapping + description: | + Update a group mapping by its ID.\ + \ + **Required permissions:** _group-mappings.edit_ + operationId: updateGroupMappingByIdV1 + tags: + - Group Mappings + parameters: + - $ref: '#/components/parameters/GroupMappingIdPath' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateGroupMappingRequestV1' + responses: + '200': + description: Group Mapping updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GroupMappingResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Group Mapping + description: | + Delete a group mapping by its ID.\ + \ + **Required permissions:** _group-mappings.edit_ + operationId: deleteGroupMappingByIdV1 + tags: + - Group Mappings + parameters: + - $ref: '#/components/parameters/GroupMappingIdPath' + responses: + '204': + description: Group mapping deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/group-mappings-settings: + get: + summary: Get Group Mappings Settings + description: | + Retrieves your group mapping settings.\ + \ + **Required permissions:** _group-mappings.read_ + operationId: getGroupMappingSettingsV1 + tags: + - Group Mappings + responses: + '200': + description: Group mappings page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GroupMappingSettingsV1' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Save Group Mapping settings + description: | + Saves your group mapping settings.\ + \ + **Required permissions:** _group-mappings.edit_ + operationId: saveGroupMappingSettingsV1 + tags: + - Group Mappings + requestBody: + description: The payload required to save group mapping settings. + content: + application/json: + schema: + $ref: '#/components/schemas/GroupMappingSettingsV1' + responses: + '200': + description: Group Mapping settings saved. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GroupMappingSettingsV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/sso-settings: + get: + summary: List SSO Settings + description: | + Retrieve a paginated list of SSO settings.\ + \ + **Required permissions:** _sso-settings.read_ + operationId: getSsoSettingsV1 + tags: + - SSO Settings + parameters: + - $ref: '#/components/parameters/Filter' + responses: + '200': + description: List all SSO settings response. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/AllSsoSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create SSO Settings + description: | + Create a new SSO settings.\ + \ + **Required permissions:** _sso-setting.edit_ + operationId: createSsoSettingsV1 + tags: + - SSO Settings + requestBody: + description: The payload required to create SSO settings. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSsoSettingsRequestV1' + responses: + '201': + description: SSO settings created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/SsoSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/sso-settings/{ssoSettingsId}: + get: + summary: Get SSO Settings + description: | + Return SSO settings by ID.\ + \ + **Required permissions:** _sso-settings.read_ + operationId: getSsoSettingsByIdV1 + tags: + - SSO Settings + parameters: + - $ref: '#/components/parameters/SsoSettingsIdPath' + responses: + '200': + description: SSO settings found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/SsoSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update SSO Settings + description: | + Update SSO settings by its ID.\ + \ + **Required permissions:** _sso-settings.edit_ + operationId: updateSsoSettingsByIdV1 + tags: + - SSO Settings + parameters: + - $ref: '#/components/parameters/SsoSettingsIdPath' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSsoSettingsRequestV1' + responses: + '200': + description: SSO setting updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/SsoSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete SSO Settings + description: | + Delete SSO settings by its ID.\ + \ + **Required permissions:** _sso-settings.edit_ + operationId: deleteSsoSettingsByIdV1 + tags: + - SSO Settings + parameters: + - $ref: '#/components/parameters/SsoSettingsIdPath' + responses: + '204': + description: SSO settings deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/global-sso-settings/{ssoProductId}: + get: + summary: Get Global SSO Settings + description: | + Get Global SSO Settings.\ + \ + **Required permissions:** _sso-settings.read_ + operationId: getGlobaSsoSettingsV1 + tags: + - SSO Settings + parameters: + - $ref: '#/components/parameters/SsoProductIdPath' + responses: + '200': + description: Global SSO Settings. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GlobalSsoSettingsResponseV1' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Global SSO Settings + description: | + Update Global SSO Settings.\ + \ + **Required permissions:** _sso-setting.edit_ + operationId: updateGlobalSsoSettingsV1 + tags: + - SSO Settings + parameters: + - $ref: '#/components/parameters/SsoProductIdPath' + requestBody: + description: The payload required to update the Global SSO Settigs. + content: + application/json: + schema: + $ref: '#/components/schemas/GlobalSsoSettingsRequestV1' + required: true + responses: + '200': + description: Global SSO Settings updated successfully. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GlobalSsoSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/teams/{teamId}/service-accounts/notification-settings: + x-excluded-environments: + - IBM + post: + summary: Create Service Accounts Notification Settings + description: | + Create a new Notification Settings for Service Accounts which belong to a specific team.\ + \ + **Required permissions:** _service-accounts-notification-settings.edit_ + operationId: createServiceAccountsNotificationSettingsV1 + tags: + - Service Accounts Notification Settings + parameters: + - $ref: '#/components/parameters/TeamIdPath' + requestBody: + description: The payload required to create Service Accounts Notification Settings. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateServiceAccountsNotificationSettingsRequestV1' + responses: + '201': + description: Service Accounts Notification Settings created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountsNotificationSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + get: + summary: Get Service Accounts Notification Settings + description: | + Return Service Accounts Notification Settings for a given team.\ + \ + **Required permissions:** _service-accounts-notification-settings.read_ + operationId: getServiceAccountsNotificationSettingsV1 + tags: + - Service Accounts Notification Settings + parameters: + - $ref: '#/components/parameters/TeamIdPath' + responses: + '200': + description: Service Accounts Notification Settings found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountsNotificationSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Service Accounts Notification Settings + description: | + Update Service Accounts Notification Settings for a given team.\ + \ + **Required permissions:** _service-accounts-notification-settings.edit_ + operationId: updateServiceAccountsNotificationSettingsV1 + tags: + - Service Accounts Notification Settings + parameters: + - $ref: '#/components/parameters/TeamIdPath' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateServiceAccountsNotificationSettingsRequestV1' + responses: + '200': + description: Service Accounts Notification Settings updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountsNotificationSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Service Accounts Notification Settings + description: | + Delete Service Accounts Notification Settings for a given team.\ + \ + **Required permissions:** _service-accounts-notification-settings.edit_ + operationId: deleteServiceAccountsNotificationSettingsV1 + tags: + - Service Accounts Notification Settings + parameters: + - $ref: '#/components/parameters/TeamIdPath' + responses: + '204': + description: Service Accounts Notification Settings deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/service-accounts/notification-settings: + x-excluded-environments: + - IBM + post: + summary: Create Global Service Accounts Notification Settings + description: | + Create a new Notification Settings for Global Service Accounts.\ + \ + **Required permissions:** _global-service-accounts-notification-settings.edit_ + operationId: createGlobalServiceAccountsNotificationSettingsV1 + tags: + - Service Accounts Notification Settings + requestBody: + description: The payload required to create Service Accounts Notification Settings. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateServiceAccountsNotificationSettingsRequestV1' + responses: + '201': + description: Service Accounts Notification Settings created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountsNotificationSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + get: + summary: Get Global Service Accounts Notification Settings + description: | + Return Notification Settings for Global Service Accounts.\ + \ + **Required permissions:** _global-service-accounts-notification-settings.read_ + operationId: getGlobalServiceAccountsNotificationSettingsV1 + tags: + - Service Accounts Notification Settings + responses: + '200': + description: Service Accounts Notification Settings found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountsNotificationSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Global Service Accounts Notification Settings + description: | + Update Notification Settings for Global Service Accounts.\ + \ + **Required permissions:** _global-service-accounts-notification-settings.edit_ + operationId: updateGlobalServiceAccountsNotificationSettingsV1 + tags: + - Service Accounts Notification Settings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateServiceAccountsNotificationSettingsRequestV1' + responses: + '200': + description: Service Accounts Notification Settings updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountsNotificationSettingsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Global Service Accounts Notification Settings + description: | + Delete Notification Settings for Global Service Accounts.\ + \ + **Required permissions:** _global-service-accounts-notification-settings.edit_ + operationId: deleteGlobalServiceAccountsNotificationSettingsV1 + tags: + - Service Accounts Notification Settings + responses: + '204': + description: Service Accounts Notification Settings deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/ip-filters: + x-excluded-environments: + - OnPrem + get: + summary: List IP Filters + description: | + Retrieve a paginated list of IP filters.\ + \ + **Required permissions:** _ip-filters.read_ + operationId: getIpFiltersV1 + tags: + - IP Filtering + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/Filter' + responses: + '200': + description: List all IP filters response. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IpFiltersPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create IP Filter + description: | + Create a new IP filter.\ + \ + **Required permissions:** _ip-filters.edit_ + operationId: createIpFilterV1 + tags: + - IP Filtering + requestBody: + description: The payload required to create IP filter. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIpFilterV1' + responses: + '201': + description: IP filter created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IpFilterResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/ip-filters/{ipFilterId}: + x-excluded-environments: + - OnPrem + get: + summary: Get IP Filter by ID + description: | + Get IP Filter by ID.\ + \ + **Required permissions:** _ip-filters.read_ + operationId: getIpFilterByIdV1 + tags: + - IP Filtering + parameters: + - $ref: '#/components/parameters/IpFilterIdPath' + responses: + '200': + description: IP filter found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IpFilterResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update IP Filter + description: | + Update IP filter by its ID. \ + \ + **Required permissions:** _ip-filters.edit_ + operationId: updateIpFilterV1 + tags: + - IP Filtering + parameters: + - $ref: '#/components/parameters/IpFilterIdPath' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIpFilterV1' + required: true + responses: + '200': + description: IP filter updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IpFilterResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete IP Filter + description: | + Delete IP filter by its ID.\ + \ + **Required permissions:** _ip-filters.edit_ + operationId: deleteIpFilterByIdV1 + tags: + - IP Filtering + parameters: + - $ref: '#/components/parameters/IpFilterIdPath' + responses: + '204': + description: IP filter deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/ip-filters-settings: + x-excluded-environments: + - OnPrem + get: + summary: Get IP Filters Settings + description: | + Retrieves your IP filters settings.\ + \ + **Required permissions:** _ip-filters.read_ + operationId: getIpFiltersSettingsV1 + tags: + - IP Filtering + responses: + '200': + description: IP filters settings. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IpFiltersSettingsV1' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Save IP Filters settings + description: | + Saves your IP filters settings.\ + \ + **Required permissions:** _ip-filters.edit_ + operationId: saveIpFiltersSettingsV1 + tags: + - IP Filtering + requestBody: + description: The payload required to save IP filters settings. + content: + application/json: + schema: + $ref: '#/components/schemas/IpFiltersSettingsV1' + responses: + '200': + description: IP filters settings saved. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IpFiltersSettingsV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/permissions: + get: + summary: Get Customer Permissions + description: | + Retrieve a list of permissions that are used in custom roles.\ + \ + **Required permissions:** _permissions.read_ + operationId: getPermissionsV1 + tags: + - Permissions + parameters: + - $ref: '#/components/parameters/PermissionsFilter' + responses: + '200': + description: Display Permissions. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetPermissionsResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/roles: + x-excluded-environments: + - IBM + get: + summary: List Roles + description: | + Retrieve a paginated list of roles.\ + \ + **Required permissions:** _roles.read_ + operationId: getRolesV1 + tags: + - Roles + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/OrderBy' + - $ref: '#/components/parameters/Filter' + responses: + '200': + description: The roles page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetRolesPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Role + description: | + Create a new role.\ + \ + **Required permissions:** _roles.edit_ + operationId: createRoleV1 + tags: + - Roles + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RoleRequestV1' + responses: + '201': + description: Role created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/RoleResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/roles/{roleId}: + x-excluded-environments: + - IBM + get: + summary: Get Role + description: | + Return a role by its ID.\ + \ + **Required permissions:** _roles.read_ + operationId: getRoleByIdV1 + tags: + - Roles + parameters: + - $ref: '#/components/parameters/RoleIdPath' + responses: + '200': + description: Role found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/RoleResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Role + description: | + Update a role by its ID.\ + \ + **Required permissions:** _roles.edit_ + operationId: updateRoleByIdV1 + tags: + - Roles + parameters: + - $ref: '#/components/parameters/RoleIdPath' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RoleRequestV1' + responses: + '200': + description: Role updated. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/RoleResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Role + description: | + Delete a role by its ID.\ + \ + **Required permissions:** _roles.edit_ + operationId: deleteRoleByIdV1 + tags: + - Roles + parameters: + - $ref: '#/components/parameters/RoleIdPath' + responses: + '204': + description: Role deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/service-accounts: + x-excluded-environments: + - IBM + get: + summary: List Global Service Accounts + description: | + Retrieve a paginated list of all service accounts.\ + \ + **Required permissions:** _global-service-accounts.read_ + operationId: getGlobalServiceAccountsV1 + tags: + - Service Accounts + parameters: + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/OrderBy' + - $ref: '#/components/parameters/MultiFilter' + responses: + '200': + description: Service accounts page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetServiceAccountsPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create a Global Service Account + description: | + Create a new global service account.\ + \ + **Required permissions:** _global-service-accounts.edit_ + operationId: createGlobalServiceAccountV1 + tags: + - Service Accounts + requestBody: + description: The payload required to create a new global service account. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateGlobalServiceAccountRequestV1' + responses: + '201': + description: Global service account created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountWithKeyResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/teams/{teamId}/service-accounts: + x-excluded-environments: + - IBM + get: + summary: List Team Service Accounts + description: | + Retrieve a paginated list of team service accounts.\ + \ + **Required permissions:** _team-service-accounts.read_ + operationId: getTeamServiceAccountsV1 + tags: + - Service Accounts + parameters: + - $ref: '#/components/parameters/TeamIdPath' + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/OrderBy' + - $ref: '#/components/parameters/MultiFilter' + responses: + '200': + description: The team service accounts page. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetServiceAccountsPaginatedResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create a Team Service Account + description: | + Create a new team service account.\ + \ + **Required permissions:** _team-service-accounts.edit_ + operationId: createTeamServiceAccountV1 + tags: + - Service Accounts + parameters: + - $ref: '#/components/parameters/TeamIdPath' + requestBody: + description: The payload required to create a new team service account. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTeamServiceAccountRequestV1' + responses: + '201': + description: Team service account created. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountWithKeyResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '409': + $ref: '#/components/responses/Conflict' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/service-accounts/{serviceAccountId}: + x-excluded-environments: + - IBM + get: + summary: Get a Global Service Account + description: | + Return a global service account by ID.\ + \ + **Required permissions:** _global-service-accounts.read_ + operationId: getGlobalServiceAccountByIdV1 + tags: + - Service Accounts + parameters: + - $ref: '#/components/parameters/ServiceAccountIdPath' + responses: + '200': + description: Global service account found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete a Global Service Account + description: | + Delete a global service account by ID.\ + \ + **Required permissions:** _global-service-accounts.edit_ + operationId: deleteGlobalServiceAccountByIdV1 + tags: + - Service Accounts + parameters: + - $ref: '#/components/parameters/ServiceAccountIdPath' + responses: + '204': + description: Global service account deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/teams/{teamId}/service-accounts/{serviceAccountId}: + x-excluded-environments: + - IBM + get: + summary: Get a Team Service Account + description: | + Return a team service account by ID.\ + \ + **Required permissions:** _team-service-accounts.read_ + operationId: getTeamServiceAccountByIdV1 + tags: + - Service Accounts + parameters: + - $ref: '#/components/parameters/TeamIdPath' + - $ref: '#/components/parameters/ServiceAccountIdPath' + responses: + '200': + description: Team service account found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAccountResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete a Team Service Account + description: | + Delete a team service account by ID.\ + \ + **Required permissions:** _team-service-accounts.edit_ + operationId: deleteTeamServiceAccountByIdV1 + tags: + - Service Accounts + parameters: + - $ref: '#/components/parameters/TeamIdPath' + - $ref: '#/components/parameters/ServiceAccountIdPath' + responses: + '204': + description: Team service account deleted. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/reporting/v1/schedules: + get: + summary: List Report Schedules + description: | + Retrieve a paginated list of Report Schedules.\ + \ + **Required permissions:** platform.reporting.schedules.read + operationId: listSchedulesV1 + tags: + - Reporting + responses: + '200': + description: List of Report schedules + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ListSchedules' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/reporting/v1/jobs: + get: + summary: List Report Job Runs + description: | + Retrieve a list of Report Job runs.\ + \ + **Required permissions:** platform.reporting.report-downloads.read + operationId: listJobsV1 + tags: + - Reporting + parameters: + - name: scheduleId + in: query + description: ID of the Schedule + required: true + schema: + type: string + maxLength: 512 + example: 2pUnGeLvrOo5qoWuvXg5H9nEH2g + - name: reportId + in: query + description: ID of the Report + required: false + schema: + type: integer + format: int64 + minimum: 0 + maximum: 1000000 + example: 1 + - name: isReportTemplate + in: query + description: Indicates whether the report is a template. + required: false + schema: + type: string + enum: + - 'true' + - 'false' + example: 'true' + - name: completedOn + in: query + description: Date the job was completed in epoch milliseconds. + required: false + schema: + $ref: '#/components/schemas/UnlimitedLong' + - name: jobType + in: query + description: Type of the job. + required: false + schema: + type: string + enum: + - ON_DEMAND + - SCHEDULED + example: SCHEDULED + - name: status + in: query + description: Status of the job. + required: false + schema: + type: string + enum: + - RUNNING + - COMPLETED + - FAILED + - CREATED + example: COMPLETED + - name: kind + in: query + description: Kind of the report. + required: false + schema: + type: string + enum: + - compliance_readiness + - vulnerability_management + example: compliance_readiness + - name: policies + in: query + description: List of policy IDs in string format. + required: false + schema: + type: string + maxLength: 8192 + example: '[1,2,3]' + - name: zones + in: query + description: List of zone IDs in string format. + required: false + schema: + type: string + maxLength: 8192 + example: '[1,2,3]' + responses: + '200': + description: List of Report job runs. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ListJobs' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/activity-audit/v1/entries: + get: + summary: List entries + description: | + Retrieves the list of entries matching the expressed search criteria. + The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. + The time criteria is required and can be specified in two different ways: + - Using `from` and `to`, the list of entries within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. + - Using a `cursor` the entries returned will be in the before, after or around the entry, depending on the entry the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. + The entry content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels. + + **Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + operationId: GetActivityAuditEntriesV1 + tags: + - Activity Audit + parameters: + - in: query + name: from + schema: + $ref: '#/components/schemas/From' + - in: query + name: to + schema: + $ref: '#/components/schemas/To' + - in: query + name: cursor + schema: + $ref: '#/components/schemas/Cursor' + - in: query + name: zones + schema: + type: array + items: + $ref: '#/components/schemas/ZoneId' + maxItems: 100 + - in: query + name: filter + schema: + $ref: '#/components/schemas/SysdigQueryLanguageFilter' + - $ref: '#/components/parameters/Limit' + - in: query + name: types + schema: + $ref: '#/components/schemas/Types' + responses: + '200': + description: The list of entries. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/EntriesResponse' + '400': + description: Bad Request + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/activity-audit/v1/entries/{entryId}: + get: + summary: Get entry + description: | + Retrieves an Actvity Audit entry given its id. + **Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + operationId: GetActivityAuditEntryV1 + tags: + - Activity Audit + parameters: + - in: path + name: entryId + required: true + schema: + $ref: '#/components/schemas/EntryId' + responses: + '200': + description: The Activity Audit entry. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/EntryResponse' + '400': + description: Bad Request + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/activity-audit/v1/supported-filters: + get: + summary: Get available filters + description: | + Activity Audit entries can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + operationId: GetActivityAuditEntriesSupportedFiltersV1 + tags: + - Activity Audit + responses: + '200': + description: The list of supported attributes for filtering Activity Audit entries. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/AuditSupportedFiltersResponse' + '400': + description: Bad request + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/certman/v1/csr: + post: + summary: Create CSR + operationId: createCSRV1 + description: | + Creates a Certificate Signing Request generated from the customer unique + private key. The CSR is generated on the fly.\ + \ + **Required permissions:** _certman.read_ + tags: + - Certificates + responses: + '200': + description: The Certificate Signing Request plaintext content + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + text/plain: + schema: + type: string + maxLength: 10000 + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/certman/v1/certificates: + post: + summary: Upload Certificate + operationId: uploadCertificateV1 + description: | + Uploads a certificate that has been created by signing a CSR obtained + via Certificates Management.\ + \ + **Required permissions:** _certman.edit_ + tags: + - Certificates + requestBody: + description: The content of the upload certificate request. + required: true + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/UploadCertificateRequest' + responses: + '201': + description: The certificate has been upload correctly. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Certificate' + '400': + description: Operation failed due to invalid certificate + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + type: object + title: Invalid certificate + required: + - type + - message + properties: + type: + type: string + example: parsing_error + enum: + - parsing_error + message: + type: string + enum: + - could not parse the provided certificate + example: could not parse the provided certificate + details: + type: array + items: {} + maxItems: 1 + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + get: + summary: List Certificates + description: | + Returns the list of certificates.\ + \ + **Required permissions:** _certman.read_ + operationId: getCertificatesV1 + tags: + - Certificates + responses: + '200': + description: List of certificates. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/CertificatesResponse' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/certman/v1/certificates/{certId}: + get: + summary: Get Certificate + description: | + Get a single certificate.\ + \ + **Required permissions:** _certman.read_ + operationId: getCertificateV1 + tags: + - Certificates + parameters: + - $ref: '#/components/parameters/PathCertificateId' + responses: + '200': + description: The certificate. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Certificate' + '400': + description: Invalid certificate ID + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Certificate + description: | + Deletes a certificate given its id. + + A certificate cannot be deleted if + it's being used (i.e. by the events forwarder to connect to third + parties).\ + \ + **Required permissions:** _certman.edit_ + operationId: deleteCertificateV1 + tags: + - Certificates + parameters: + - $ref: '#/components/parameters/PathCertificateId' + responses: + '204': + description: The certificate has been deleted successfully. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '409': + description: | + The certificate cannot be deleted because it's currently being used. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/certman/v1/certificates/{certId}/services: + get: + summary: List Services + description: | + Returns he list of integrations using this certificate.\ + \ + **Required permissions:** _certman.read_ + operationId: GetCertificateRegistrationV1 + tags: + - Certificates + parameters: + - $ref: '#/components/parameters/PathCertificateId' + responses: + '200': + description: List of certificates registrations. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ServicesResponse' + '400': + description: Invalid certificate ID + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/events/v1/events: + get: + summary: List events + operationId: getEventsV1 + description: "Retrieves the list of events matching the expressed search criteria.\nThe pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa.\nThe time criteria is required and can be specified in two different ways:\n- Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones.\n- Using a `cursor` the events returned will be in the before, after or around the event, depending on the event the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. \nThe event content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels.\n" + tags: + - Secure Events + parameters: + - in: query + name: from + schema: + $ref: '#/components/schemas/From' + - in: query + name: to + schema: + $ref: '#/components/schemas/To' + - in: query + name: cursor + schema: + $ref: '#/components/schemas/Cursor' + - in: query + name: zones + schema: + type: array + items: + $ref: '#/components/schemas/ZoneId' + maxItems: 100 + - in: query + name: filter + schema: + $ref: '#/components/schemas/EventsFeedFilter' + - in: query + name: limit + schema: + $ref: '#/components/schemas/EventsFeedLimit' + responses: + '200': + description: The list of events. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ListEventsResponse' + '400': + description: Bad request + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/events/v1/events/{eventId}: + get: + summary: Get event + description: | + Retrieves an event given its id. + operationId: getEventV1 + tags: + - Secure Events + parameters: + - $ref: '#/components/parameters/EventId' + responses: + '200': + description: The secure event. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Event' + '400': + description: Bad request + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/events/v1/supported-filters: + get: + summary: Get available filters + operationId: getEventsSupportedFiltersV1 + description: | + Events can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + tags: + - Secure Events + responses: + '200': + description: The list of supported attributes for filtering events. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/SupportedFiltersResponse' + '400': + description: Bad request + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/events-forwarder/v1/types: + get: + summary: List Integrations types + description: Returns the list of supported integrations, to which Events Forwarder can send data + operationId: listEFOIntegrationsTypesV1 + tags: + - Events Forwarder + responses: + '200': + description: The list of supported Events Forwarder integrations in Sysdig Secure + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationTypesResponse' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/events-forwarder/v1/channels: + get: + summary: List Channels + description: Returns the list of supported Channels (Data types) for a given integration type + operationId: listEFOChannelsByIntegrationV1 + tags: + - Events Forwarder + parameters: + - name: type + in: query + description: the Events Forwarder Integration Type + required: true + schema: + $ref: '#/components/schemas/IntegrationType' + responses: + '200': + description: A list of supported Events Forwarder integrations channels in Sysdig Secure + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationChannelsResponse' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/events-forwarder/v1/integrations: + get: + summary: List Integrations + description: Returns the Events Forwarder integrations set up + operationId: listEFOIntegrationsV1 + tags: + - Events Forwarder + responses: + '200': + description: The list of Events Forwarder Integrations + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ListIntegrationsResponse' + '401': + $ref: '#/components/responses/Unauthorized' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Integration + description: Configures a new integration to forward a data type to a destination, given the specified connection parameters + operationId: createEFOInegrationV1 + tags: + - Events Forwarder + requestBody: + description: Configuration for the new integration + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIntegrationRequest' + required: true + responses: + '201': + description: Integration created successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/events-forwarder/v1/integrations/{integrationId}: + get: + summary: Get Integration + description: Returns the configuration for an integration + operationId: getEFOIntegrationByIdV1 + tags: + - Events Forwarder + parameters: + - $ref: '#/components/parameters/IntegrationId' + responses: + '200': + description: An integration is returned + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + description: Integration not found with the specified ID + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Integration + description: Delete an integration + operationId: deleteEFOIntegrationByIDV1 + tags: + - Events Forwarder + parameters: + - $ref: '#/components/parameters/IntegrationId' + responses: + '204': + description: Integration deleted successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + description: Integration not found + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Integration + description: Updates an integration, replacing its configuration + operationId: updateEFOIntegrationByIdV1 + tags: + - Events Forwarder + parameters: + - $ref: '#/components/parameters/IntegrationId' + requestBody: + description: Update an events forwarder integration in Sysdig Secure + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIntegrationRequest' + required: true + responses: + '200': + description: Integration updated successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + description: Integration not found + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/inventory/v1/resources: + x-excluded-environments: + - OnPrem + get: + tags: + - Inventory + summary: List Resources + description: Search for Inventory Resources based on the given filter. + operationId: getResources + parameters: + - name: filter + in: query + description: | + Query language expression for filtering results. + Operators: + - `and` and `not` logical operators + - `=`, `!=` + - `in` + - `contains` and `startsWith` to check partial values of attributes + - `exists` to check if a field exists and not empty + + List of supported fields: + - `account` + - Type: string + - Example: `account in ("285211435247")` + - Description: DEPRECATED. The account that will be included in the results. + - `accountName` + - Type: string + - Example: `accountName in ("some-account-name")` + - Description: The account name that will be included in the results. + - `accountId` + - Type: string + - Example: `accountId in ("345224567")` + - Description: The account id that will be included in the results. + - `cluster` + - Type: string + - Example: `cluster in ("cluster1")` + - Description: The kubernetes cluster that will be included in the results. + - `externalDNS` + - Type: string + - Example: `externalDNS in ("ec2-102-34-15-23.compute-1.amazonaws.com")` + - Description: The external DNS that will be included in the results. + - `distribution` + - Type: string + - Example: `distribution in ("gke", "vanilla")` + - Description: The kubernetes distribution that will be included in the results. + - `integrationName` + - Type: string + - Example: `integrationName = "github-integration"` + - Description: The name of the integration an IaC resource belongs to. + - `labels` + - Type: string + - Example: `not labels exists` + - Description: The resource labels that will be included in the results. + - `location` + - Type: string + - Example: `location starts with "https://bitbucket.org/organizations-workspace/teams-repository/src"` + - Description: The web address of an IaC Manifest. + - `name` + - Type: string + - Example: `name starts with "acl"` + - Description: The names that will be included in the results. + - `namespace` + - Type: string + - Example: `namespace contains "production"` + - Description: The namespace that will be included in the results. + - `nodeType` + - Type: string + - Example: `nodeType="Worker"` + - Description: The nodeType that will be included in the results. + - `osName` + - Type: string + - Example: `osName != "linux"` + - Description: The operating system that will be included in the results. + - `osImage` + - Type: string + - Example: `osImage = "Ubuntu 18.04.6 LTS"` + - Description: The operating system image that will be included in the results. + - `organization` + - Type: string + - Example: `organization = "s-xqe92dwe61"` + - Description: The organization that will be included in the results. + - `platform` + - Type: string + - Example: `platform = "AWS"` + - Description: The platform that will be included in the results. + - `control.accepted` + - Type: boolean + - Example: `control.accepted exists` + - Description: Include (or Exclude) only resources with accepted results. Supported operators: exists and not exists. + - `policy` + - Type: string + - Example: `policy in ("CIS Docker Benchmark")` + - Description: Include resources that applied the selected policies. Supported operators: in, not in, exists, not exists. + - `control.severity` + - Type: string + - Example: `control.severity in ("High")` + - Description: Include resources that have violated risks in the selected severities. Supported operators: in, not in. + - `control.failed` + - Type: string + - Example: `control.failed in ("/etc/default/docker owned by root:root")` + - Description: Include resources that have violated the selected risks. Supported operators: in, not in, exists, not exists. + - `policy.failed` + - Type: string + - Example: `policy.failed in ("PCI DSS (Payment Card Industry Data Security Standard) v3.2.1")` + - Description: Include resources that failed the selected policies. Supported operators: in, not in, exists, not exists. + - `policy.passed` in ("CIS Kubernetes V1.20 Benchmark") + - Type: string + - Example: `policy.passed in ("CIS Kubernetes V1.20 Benchmark")` + - Description: Include resources that passed the selected policies. Supported operators: in, not in, exists, not exists. + - `project` + - Type: string + - Example: `project = "project1"` + - Description: DEPRECATED. The project that will be included in the results. + - `projectName` + - Type: string + - Example: `projectName = "project123"` + - Description: The project name that will be included in the results. + - `projectId` + - Type: string + - Example: `projectId = "1235495521"` + - Description: The project id that will be included in the results. + - `region` + - Type: string + - Example: `region in ("europe-west1")` + - Description: The regions that will be included in the results. + - `repository` + - Type: string + - Example: `repository in ("e2e-repo")` + - Description: The Repository an IaC resource belongs to. + - `resourceOrigin` + - Type: string + - Example: `resourceOrigin = "Code"` + - Description: Origin of the resource. Supported values: Code, Deployed. + - `type` + - Type: string + - Example: `type = "Account"` + - Description: The resource types that will be included in the results. + - `subscription` + - Type: string + - Example: `subscription = "Azure subscription 1"` + - Description: DEPRECATED. The Azure subscription that will be included in the results. + - `subscriptionName` + - Type: string + - Example: `subscriptionName = "subscription abc"` + - Description: The Azure subscription name that will be included in the results. + - `subscriptionId` + - Type: string + - Example: `subscriptionId = "568634664353"` + - Description: The Azure subscription id that will be included in the results. + - `sourceType` + - Type: string + - Example: `sourceType = "YAML"` + - Description: The source type of an IaC resource. Supported values: YAML, Kustomize, Terraform, Helm. + - `version` + - Type: string + - Example: `version = "1.1"` + - Description: OCP Cluster versions that will be included in the results. + - `zone` + - Type: string + - Example: `zone in ("zone1")` + - Description: The zones that will be included in the results. + - `category` + - Type: string + - Example: `category in ("Compute", "IAM")` + - Description: The category that will be included in the results. Supported operators: in, not in. + - `isExposed` + - Type: boolean + - Example: `isExposed exists` + - Description - Specifies whether the resource to return is exposed to the internet. Supported operators: exists and not exists. + - `validatedExposure` + - Type: boolean + - Example: `validatedExposure exists` + - Description - Specifies whether the resource to return is exposed to the internet and could be reach by our network exposure validator. Supported operators: exists and not exists. + - `arn` + - Type: string + - Example: `arn in ("arn:aws:ec2:eu-central-1:843232641625:instance/i-0c1dedd325e71138d")` + - Description - The AWS ARN of the resource. + - `resourceId` + - Type: string + - Example: `resourceId = "//compute.googleapis.com/projects/project1/global/routes/default-route-192ae83214caddd"` + - Description - The Azure or GCP Resource Identifier of the resource. + - `container.name` + - Type: string + - Example: `container.name in ("sysdig-container")` + - Description - Filters the resource by a container. + - `architecture` + - Type: string + - Example: `architecture = "arm64"` + - Description - Image architecture. + - `baseOS` + - Type: string + - Example: `baseOS = "debian 11.6"` + - Description - Image Base OS. + - `digest` + - Type: string + - Example: `digest = "sha256:21829f4f033ac2805aa43a412bcdf60e98eee4124d565a06dee184c97efff6091"` + - Description - Image Digest. + - `imageId` + - Type: string + - Example: `imageId in ("sha256:3768ff6176e29a35ce1354622977a1e5c013045cbc4f30754ef3459218be8ac")` + - Description - Image Id. + - `os` + - Type: string + - Example: `os = "linux"` + - Description - Image OS. + - `container.imageName` + - Type: string + - Example: `container.imageName in ("registry.k8s.io/kube-image:v1.2.4")` + - Description - Image Pullstring. + - `image.registry` + - Type: string + - Example: `image.registry = "quay.io"` + - Description - Image Registry. + - `image.tag` + - Type: string + - Example: `image.tag in ("tag1")` + - Description - Image tag. + - `package.inUse` + - Type: boolean + - Example: `package.inUse exists` + - Description - Package in use filter. Supported operators: exists and not exists. + - `package.info` + - Type: string + - Example: `package.info in ("github.com/golang/protobuf - v1.5.2")` + - Description - Filters by a package using the format [packge name] - [version]. + - `package.path` + - Type: string + - Example: `package.path in ("/app")` + - Description - Filters by package path. + - `package.type` + - Type: string + - Example: `package.type in ("Golang")` + - Description - Package type. + - `vuln.cvssScore` + - Type: string + - Example: `vuln.cvssScore >= "3"` + - Description - Filter by vulnerability CVSS. Supported operators: `=` and `>=`. + - `vuln.hasExploit` + - Type: boolean + - Example: `vuln.hasExploit exists` + - Description - Filters resources by the existence of vulnerabilities with exploits. Supported operators: exists and not exists. + - `vuln.hasFix` + - Type: boolean + - Example: `vuln.hasFix exists` + - Description - Filters resources by the existence of vulnerabilities with fixes. Supported operators: exists and not exists. + - `vuln.name` + - Type: string + - Example: `vuln.name in ("CVE-2023-0049")` + - Description - Filter by vulnerability name. + - `vuln.severity` + - Type: string + - Example: `vuln.severity in ("Critical")` + - Description - Filter by vulnerability severity. Supported operators: in, not in, exists and not exists. + - `machineImage` + - Type: string + - Example: `machineImage = "ami-0b22b359fdfabe1b5"` + - Description - Filter by host machine image. + + **Note**: Whenever you filter for values with special characters, ensure that you encode the values. + If the special characters are " or \, use the escape character \ and then encode the values. + required: false + example: platform = "AWS" and policy.failed in ("CIS Amazon Web Services Foundations Benchmark") + schema: + type: string + maxLength: 8192 + - name: pageNumber + in: query + required: false + schema: + type: integer + format: int32 + minimum: 1 + maximum: 2147483647 + example: 1 + description: Page number. Defaults to 1. + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + minimum: 1 + maximum: 1000 + example: 20 + description: Page size. Defaults to 20. + - name: withEnrichedContainers + in: query + required: false + schema: + type: boolean + description: If true then for kubernetes workload resources additional container information will be included. + responses: + '200': + description: Successfully returned Inventory v1 resources. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/InventoryResourceResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/inventory/v1/resources/{hash}: + x-excluded-environments: + - OnPrem + get: + tags: + - Inventory + summary: Get Resource + description: Retrieve an Inventory Resource by its unique hash value. + operationId: getResource + parameters: + - in: path + name: hash + schema: + type: string + maxLength: 64 + required: true + description: resource hash + responses: + '200': + description: Successfully returned an Inventory v1 resource. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/InventoryResourceExtended' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1/registry-results: + get: + tags: + - Vulnerability Management + summary: Get a list of registry scan results + description: Retrieves a list of registry scan results discovered by the registry scanner that match a filter given a specified cursor. + operationId: ScannerAPIService_ListRegistryResults + parameters: + - $ref: '#/components/parameters/vulnerabilityCursor' + - name: limit + in: query + description: Limit for pagination + schema: + type: integer + format: int64 + default: 1000 + minimum: 1 + maximum: 1000 + - name: filter + in: query + schema: + type: string + description: query filter expression + example: freeText = "alpine:latest" and vendor = "docker" + maxLength: 1024 + description: "Query language expression for filtering results. It is a subset of\nthe full metrics query language used in monitoring.\n\nOperators:\n- `and`, `or` logical operators (i.e.\n`freeText = \"alpine:latest\" and vendor = \"docker\"`)\n\n- `=` and `!=` comparison operators (i.e.\n`vendor = \"ecr\"`)\n\nThis query language does not support the full set of metrics\nsupported in the monitor query language, but instead supports a set of fields\nproper to each Scan Result type.\n \nThe supported fields are: `freeText`, `vendor`. \n- `vendor` as string value \n- `freeText` as string value (note that it will search on the full image name)" + responses: + '200': + description: A successful response + content: + application/json: + schema: + $ref: '#/components/schemas/RegistryResultsResponse' + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/response-actions/v1alpha1/action-executions: + post: + summary: Submit the execution of an action + operationId: submitActionExecutionv1 + description: | + Submits the execution of an action. The action will be executed asynchronously and the response will contain the action execution ID.\ + **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + tags: + - Response actions + requestBody: + description: Configuration for the new integration + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitActionExecutionRequest' + required: true + responses: + '201': + description: The Response Action execution request has been submitted correctly. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ActionExecution' + '400': + description: Operation failed due to invalid or inconsistent parameters + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + type: object + title: Invalid request + required: + - type + - message + properties: + type: + type: string + example: missing_required_parameter + maxLength: 256 + message: + type: string + example: Missing required parameter + maxLength: 256 + details: + type: array + items: {} + maxItems: 1 + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + get: + summary: Returns the list of Response Actions executions. You can filter them with the available query parameters. + operationId: getActionExecutionsv1 + description: | + Returns a list of action executions. + **Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. + tags: + - Response actions + parameters: + - in: query + name: callerId + schema: + $ref: '#/components/schemas/CallerId' + - in: query + name: filter + schema: + $ref: '#/components/schemas/SysdigQueryLanguageFilter' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/Offset' + - in: query + name: from + schema: + $ref: '#/components/schemas/From' + - in: query + name: to + schema: + $ref: '#/components/schemas/To' + responses: + '200': + description: The executions list has been returned correctly. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ActionExecutions' + '400': + description: Operation failed due to invalid or inconsistent parameters. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + type: object + title: Invalid request + required: + - type + - message + properties: + type: + type: string + example: parsing_error + enum: + - parsing_error + message: + type: string + enum: + - could not parse the provided certificate + example: could not parse the provided certificate + details: + type: array + items: {} + maxItems: 1 + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/response-actions/v1alpha1/action-executions/{actionExecutionId}: + get: + summary: Get Action Execution + description: | + Get an action execution.\ + \ + **Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. Results will include the executions of the Response Actions you are allowed to see. + operationId: getActionExecutionV1 + tags: + - Response actions + parameters: + - $ref: '#/components/parameters/ActionExecutionId' + responses: + '200': + description: The action execution. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ActionExecution' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Undoes an Action Execution + description: | + Undoes an action execution.\ + \ + **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + operationId: undoActionExecutionV1 + tags: + - Response actions + parameters: + - $ref: '#/components/parameters/ActionExecutionId' + - name: callerId + in: query + schema: + $ref: '#/components/schemas/CallerId' + responses: + '200': + description: The undo action execution. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ActionExecution' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/response-actions/v1alpha1/action-executions/{actionExecutionId}/acquired-file: + get: + summary: Get Acquired File + description: | + Download a Capture file created by an executed "File Acquire" Response Action.\ + \ + **Required permissions:** _data-gathering-response-actions.read_ + operationId: getActionExecutionFileAcquireV1 + tags: + - Response actions + parameters: + - $ref: '#/components/parameters/ActionExecutionId' + responses: + '200': + description: The content of the capture file created by a "File Acquire" response action. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/octet-stream: + schema: + type: string + format: binary + maxLength: 5497558138880 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/response-actions/v1alpha1/actions: + get: + summary: Get All Response Actions + description: | + Get the list of available executable Response Actions.\ + \ + **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + operationId: getActionsV1 + tags: + - Response actions + parameters: + - in: query + name: context + required: false + schema: + $ref: '#/components/schemas/ExecutionContext' + responses: + '200': + description: The action execution. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Actions' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1/runtime-results: + get: + tags: + - Vulnerability Management + summary: Get a list of runtime scan results + description: Retrieves a list of runtime scan results discovered by the runtime scanner that match a filter given a specified cursor. + operationId: ScannerAPIService_ListRuntimeResults + parameters: + - $ref: '#/components/parameters/vulnerabilityCursor' + - name: limit + in: query + description: Limit for pagination + schema: + type: integer + format: int64 + default: 1000 + minimum: 1 + maximum: 1000 + - name: filter + in: query + schema: + type: string + description: query filter expression + example: kubernetes.cluster.name="staging" and kubernetes.pod.container.name="docker.internal.sysdig.tools" + maxLength: 1024 + description: |- + Query language expression for filtering results. It is a subset of + the full metrics query language used in monitoring. + + Operators: + - `and`, `or` logical operators (i.e. + `kubernetes.cluster.name="production" and kubernetes.pod.container.name = "docker.internal.sysdig.tools"`) + + - `=` and `!=` comparison operators (i.e. + `kubernetes.cluster.name="staging"`) + + This query language does not support the full set of metrics + supported in the monitor query language, but instead supports a set of fields + proper to each Scan Result type. + + The supported fields are the all the fields of the `Scope`, plus: `freeText`, `hasRunningVulns` and `hasRunningVulns`. + - name: sort + in: query + description: |- + Field used to sort the results + vulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity + runningVulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity for running assets + schema: + type: string + example: runningVulnTotalBySeverity + default: vulnTotalBySeverity + enum: + - vulnTotalBySeverity + - runningVulnTotalBySeverity + - name: order + in: query + description: Ordering of the results for the sort field + schema: + type: string + example: asc + default: desc + enum: + - desc + - asc + responses: + '200': + description: A successful response + content: + application/json: + schema: + $ref: '#/components/schemas/RuntimeResultsResponse' + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1/pipeline-results: + get: + tags: + - Vulnerability Management + summary: Get a list of pipeline scan results + description: Retrieves a list of scan results produced by pipelines that match a filter given a specified cursor. No sorting is supported, the items are sorted in a stable way by their ID. + parameters: + - $ref: '#/components/parameters/vulnerabilityCursor' + - name: limit + in: query + description: Limit for pagination + schema: + type: integer + format: int64 + default: 1000 + minimum: 1 + maximum: 1000 + - name: filter + in: query + description: |- + Query language expression for filtering results. It is a subset of + the full metrics query language used in monitoring. + + Only the freeText parameter is supported: + - `freeText` as string value (note that it will search on the full image name) + schema: + type: string + maxLength: 1024 + example: freeText in ("nginx") + responses: + '200': + description: A successful response + content: + application/json: + schema: + $ref: '#/components/schemas/PipelineResultsResponse' + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1/results/{resultId}: + get: + tags: + - Vulnerability Management + summary: Get full scan result + description: Retrieve a full scan result produced by any scanner that match a given ID + parameters: + - name: resultId + in: path + description: The ID of a single scan result. Could be retrieved by one of the listing endpoints. + required: true + schema: + type: string + example: 176c77d16ee6bdd2f7482d4ec0fd0542 + maxLength: 255 + responses: + '200': + description: A successful response + content: + application/json: + schema: + $ref: '#/components/schemas/ScanResultResponse' + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /api/sysql/v2/query: + x-excluded-environments: + - OnPrem + get: + deprecated: true + tags: + - SysQL + summary: Execute SysQL query via GET + description: | + [DEPRECATED] Retrieve resources from the graph datastore using the GET method. + + > The GET method for this endpoint is deprecated and will be removed in future versions. + > Please use the POST method instead, which provides better support for complex queries. + operationId: querySysqlGet + parameters: + - in: query + name: q + schema: + type: string + required: true + description: The SysQL statement. + example: MATCH IAMUser AS a WHERE a.customerId = 1234567890 RETURN a.name AS name, a.arn AS arn; + - in: query + name: limit + required: false + schema: + type: integer + format: int32 + default: 50 + minimum: 1 + maximum: 1000 + description: "The limit parameter defines the maximum number of items returned in the result set, specifically within \nthe items array in the response.\n\nThis parameter is optional. The recommended approach is to define the limit directly in the SysQL statement \nusing the LIMIT clause. If specified in the request URL, it will override the limit set in the statement. \nIf not specified, a default limit of 50 will be applied.\n" + title: Pagination Limit + example: 100 + - in: query + name: offset + required: false + schema: + type: integer + format: int32 + default: 0 + minimum: 0 + maximum: 10000 + description: "The offset parameter specifies how many result set objects to skip in a MATCH statement. Use it when you \nwant to ignore the first few items in the result set.\n\nThis parameter is optional. The recommended approach is to set the offset directly in the SysQL statement \nusing the OFFSET clause. If specified in the request URL, it will override the offset in the statement. \nIf not specified, a default offset of 0 will be applied.\n\nUse limit and offset together in SysQL to paginate results, splitting them into pages with a defined number \nof items for display.\n" + title: Pagination Offset + example: 0 + - in: query + name: deterministic_order + required: false + schema: + type: boolean + default: false + description: "The deterministic_order parameter controls whether consistent ordering is enforced in the result set. \nOrdering is implicitly applied when pagination options, such as limit and offset, are specified in the \nrequest. This is an optional parameter.\n" + title: Deterministic Order Control + example: true + responses: + '200': + description: | + Successfully retrieved resources from the graph database using the provided SysQL statement. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/QueryResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + tags: + - SysQL + summary: Execute SysQL query via POST + description: Retrieve resources from the graph datastore using the POST method. + operationId: querySysqlPost + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - q + properties: + q: + type: string + description: The SysQL statement. + example: MATCH IAMUser AS a WHERE a.customerId = 1234567890 RETURN a.name AS name, a.arn AS arn; + limit: + type: integer + format: int32 + default: 50 + minimum: 1 + maximum: 1000 + description: "The limit parameter defines the maximum number of items returned in the result set, specifically \nwithin the items array in the response. \n\nThis parameter is optional. The recommended approach is to define the limit directly in the SysQL \nstatement using the LIMIT clause. If specified in the request body, it will override the limit set \nin the statement. If not specified, a default limit of 50 will be applied.\n" + title: Pagination Limit + example: 100 + offset: + type: integer + format: int32 + default: 0 + minimum: 0 + maximum: 10000 + description: "The offset parameter specifies how many result set objects to skip in a MATCH statement. Use it when \nyou want to ignore the first few items in the result set. \n\nThis parameter is optional. The recommended approach is to set the offset directly in the SysQL \nstatement using the OFFSET clause. If specified in the request body, it will override the offset \nin the statement. If not specified, a default offset of 0 will be applied.\n\nUse limit and offset together in SysQL to paginate results, splitting them into pages with a defined \nnumber of items for display.\n" + title: Pagination Offset + example: 0 + deterministic_order: + type: boolean + default: false + description: "The deterministic_order parameter controls whether consistent ordering is enforced in the result set. \nOrdering is implicitly applied when pagination options, such as limit and offset, are specified in the \nrequest. This is an optional parameter.\n" + title: Deterministic Order Control + example: true + responses: + '200': + description: | + Successfully retrieved resources from the graph database using the provided SysQL statement. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/QueryResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /api/sysql/v2/schema: + x-excluded-environments: + - OnPrem + get: + tags: + - SysQL + summary: Get SysQL Schema + description: | + Retrieve the schema information for all entities and their relationships in YAML format. + This endpoint returns the graph schema definition that describes available entities, + their fields, and relationships. + operationId: getSysqlSchema + responses: + '200': + description: Successfully retrieved the schema information. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + type: string + description: YAML formatted schema definition. + maxLength: 1000000 + example: | + index: + - type: Entity + name: KubeNode + category: Kubernetes + provider: Kubernetes + description: A KubeNode represents a node in a Kubernetes cluster. + fields: + - name: category + type: String + description: The category of the node. + - name: clusterName + type: String + description: The name of the cluster. + relationships: + zones: + entity: Zone + relationship_name: IN + display_name: With + direction: out + # ... More entities and their definitions omitted for brevity. + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1/policies: + get: + tags: + - Vulnerability Management + summary: List Policies + description: Retrieves all Policy definitions + parameters: + - $ref: '#/components/parameters/vulnerabilityCursor' + - name: limit + in: query + description: Limit for pagination + schema: + type: integer + format: int64 + default: 1000 + minimum: 1 + maximum: 1000 + - name: name + in: query + schema: + type: string + maxLength: 1024 + description: Filter policies by name + example: policy-test + - name: stages + in: query + schema: + type: array + maxItems: 4 + items: + type: string + enum: + - registry + - pipeline + - runtime + - admission_control + description: Filter policies by applied stages + example: + - pipeline + responses: + '200': + description: List of Policy definitions + content: + application/json: + schema: + $ref: '#/components/schemas/ListPoliciesResponse' + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + tags: + - Vulnerability Management + summary: Create a new Policy + description: | + Creates a Policy definition. + The Policy definition is validated for structural correctness + and partially for semantic correctness. However, semantic + correctness cannot be fully guaranteed, and checks will be performed + on a best-effort basis. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreatePolicyRequest' + responses: + '201': + description: Policy definition + content: + application/json: + schema: + $ref: '#/components/schemas/GetPolicyResponse' + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1/policies/{policyId}: + get: + summary: Get a Policy + description: Retrieves a specific Policy definition + tags: + - Vulnerability Management + parameters: + - name: policyId + description: The Policy ID + in: path + required: true + schema: + type: integer + format: int64 + example: 1234 + minimum: 0 + maximum: 9223372036854776000 + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Policy definition + content: + application/json: + schema: + $ref: '#/components/schemas/GetPolicyResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Edit a Policy + description: | + Edits a specific Policy definition. The Policy definition is validated for both + structural and partial semantic correctness. However, semantic + correctness cannot be fully guaranteed, and checks will be performed + on a best-effort basis. + tags: + - Vulnerability Management + parameters: + - name: policyId + description: The Policy ID + in: path + required: true + schema: + type: integer + format: int64 + example: 1234 + minimum: 0 + maximum: 9223372036854776000 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreatePolicyRequest' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Policy definition + content: + application/json: + schema: + $ref: '#/components/schemas/GetPolicyResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete a Policy + description: | + Deletes an existing Policy definition. Subsequent calls to the service + will not return that Policy anymore. However, some instances of the Inline + Scanner might be running concurrently and may have already downloaded the + Policy. + tags: + - Vulnerability Management + parameters: + - name: policyId + description: The Policy ID + in: path + required: true + schema: + type: integer + format: int64 + example: 1234 + minimum: 0 + maximum: 9223372036854776000 + responses: + '200': + description: Policy deleted successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1/bundles: + get: + summary: List Bundles + description: | + Retrieves all bundles, including those defined by users and those defined by Sysdig. + tags: + - Vulnerability Management + parameters: + - $ref: '#/components/parameters/vulnerabilityCursor' + - name: limit + in: query + description: Limit for pagination + schema: + type: integer + format: int64 + default: 1000 + minimum: 1 + maximum: 1000 + responses: + '200': + description: List of Bundle definitions + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ListBundlesResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create a new Bundle + description: | + Creates a new Bundle definition. + The Bundle definition is tested for structural correctness. + tags: + - Vulnerability Management + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBundleRequest' + responses: + '201': + description: Bundle definition + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/GetBundleResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1/bundles/{bundleId}: + get: + summary: Get a Bundle + description: | + Retrieves a specific rule bundle. + tags: + - Vulnerability Management + parameters: + - name: bundleId + description: The Policy Bundle ID + in: path + required: true + schema: + type: integer + format: int64 + example: 1234 + minimum: 0 + maximum: 9223372036854776000 + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Bundle definition + content: + application/json: + schema: + $ref: '#/components/schemas/GetBundleResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Edit Bundle + description: | + Edits a specific Rule Bundle definition. The Bundle definition is + tested for structural correctness. If the Bundle being edited is a + Sysdig predefined one, no modifications are applied, and an HTTP error is + returned. + tags: + - Vulnerability Management + parameters: + - name: bundleId + description: The Policy Bundle ID + in: path + required: true + schema: + type: integer + format: int64 + example: 1234 + minimum: 0 + maximum: 9223372036854776000 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBundleRequest' + responses: + '200': + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + description: Bundle definition + content: + application/json: + schema: + $ref: '#/components/schemas/GetBundleResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Bundle + description: | + Deletes an existing Rule Bundle only if it is not used by any Policy. + An HTTP error is returned if the Bundle being deleted is the only one currently attached to any Policy. + Once deleted, subsequent calls to the Service will not return that Bundle anymore. + However, some instances of the Inline Scanner might be running concurrently and may have already downloaded a Policy containing that Bundle. + tags: + - Vulnerability Management + parameters: + - name: bundleId + description: The Policy Bundle ID + in: path + required: true + schema: + type: integer + format: int64 + example: 1234 + minimum: 0 + maximum: 9223372036854776000 + responses: + '200': + description: Bundle deleted successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1beta1/sboms: + get: + tags: + - SBOM + summary: Get SBOM + description: Retrieve a SBOM (Software Bill Of Material) in CycloneDX format. + operationId: GetSBOMV1beta1 + parameters: + - name: assetId + in: query + description: | + The ID of the asset for which we want to retrieve the SBOM. It's the imageId for container-image and the hostId for hosts + Provide this with assetType if not providing bomIdentifier + schema: + type: string + example: sha256:6147d53c2a3a4d99b8343665430e5d420eb7ee65cb89995b6bea1af2595be53a + maxLength: 512 + - name: assetType + in: query + description: The type of the asset for which we want to retrieve the SBOM. Provide this with assetId if not providing bomIdentifier + schema: + type: string + enum: + - container-image + - host + - name: bomIdentifier + in: query + description: The ID of a single SBOM. Either provide this or both assetId and assetType + schema: + type: string + example: urn:uuid:6536eeee-b8f2-4865-b996-adc991c28202 + maxLength: 512 + responses: + '200': + description: A successful response, contains the requested SBOM. + content: + application/json: + schema: + $ref: '#/components/schemas/SbomResultResponse' + headers: + Content-Type: + schema: + type: string + maxLength: 512 + example: application/vnd.cyclonedx+json; version=1.5 + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '406': + description: Server can't produce a response in the content-type requested by the client + content: + application/json: + schema: + type: string + maxLength: 512 + example: application/vnd.cyclonedx+xml; version=1.4, application/vnd.cyclonedx+xml; version=1.3 + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1beta1/accepted-risks: + post: + summary: Create Accepted Risk + description: Creates an Accepted Risk + operationId: postAcceptedRiskV1 + tags: + - Vulnerability Management + requestBody: + description: The Accepted Risk definition + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRiskAcceptedRequest' + responses: + '201': + description: Accepted Risk created successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/RiskAcceptedResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + get: + summary: List all Accepted Risks + description: List all Accepted Risks for a given account + operationId: getAcceptedRisksV1 + tags: + - Vulnerability Management + parameters: + - $ref: '#/components/parameters/vulnerabilityFilter' + - $ref: '#/components/parameters/order' + - $ref: '#/components/parameters/vulnerabilityCursor' + - $ref: '#/components/parameters/Limit' + - name: sort + in: query + description: The sorting string + required: false + schema: + type: string + enum: + - expirationDate + - acceptanceDate + example: acceptanceDate + responses: + '200': + description: The list of Accepted Risks + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ListRiskAcceptedResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID}: + get: + summary: Get Accepted Risk + description: Get the Accepted Risk given the ID + operationId: getAcceptedRiskV1 + tags: + - Vulnerability Management + parameters: + - $ref: '#/components/parameters/acceptedRiskID' + responses: + '200': + description: The Accepted Risk + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/RiskAcceptedResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete an Accepted Risk + description: Delete an Accepted Risk + operationId: deleteAcceptedRiskV1 + tags: + - Vulnerability Management + parameters: + - $ref: '#/components/parameters/acceptedRiskID' + responses: + '204': + description: Accepted Risk deleted successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update an Accepted Risk + description: Update an Accepted Risk by changing the expirationDate, reason, or description. + operationId: updateAcceptedRiskV1 + tags: + - Vulnerability Management + parameters: + - $ref: '#/components/parameters/acceptedRiskID' + requestBody: + description: Update an Accepted Risk expirationDate, reason, or description. + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRiskAccepted' + required: true + responses: + '200': + description: Integration updated successfully + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/RiskAcceptedResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/zones: + get: + summary: List Zones + description: | + Retrieve a paginated list of Zones.\ + \ + **Required permissions:** zones.read or teams.edit + operationId: listZonesV1 + tags: + - Zones + parameters: + - $ref: '#/components/parameters/MultiFilter' + - $ref: '#/components/parameters/Limit' + - $ref: '#/components/parameters/Offset' + - $ref: '#/components/parameters/MultiOrderBy' + responses: + '200': + description: A list of Zones + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ListZonesResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + post: + summary: Create Zone + description: | + Create a new Zone.\ + \ + **Required permissions:** zones.edit + operationId: createZoneV1 + tags: + - Zones + requestBody: + description: Request body for creating a new Zone + content: + application/json: + schema: + $ref: '#/components/schemas/CreateZoneRequestV1' + required: true + responses: + '200': + description: A Single Zone + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ZoneResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '409': + $ref: '#/components/responses/Conflict' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + /platform/v1/zones/{zoneId}: + get: + summary: Get Zone + description: | + Retrieve a single Zone by ID.\ + \ + **Required permissions:** zones.read + operationId: getZoneByIdV1 + tags: + - Zones + parameters: + - name: zoneId + required: true + in: path + schema: + $ref: '#/components/schemas/ZoneId' + responses: + '200': + description: A Single Zone + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ZoneResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + put: + summary: Update Zone + description: | + Update an existing Zone by its ID.\ + \ + **Required permissions:** zones.edit + operationId: editZoneV1 + tags: + - Zones + parameters: + - name: zoneId + required: true + in: path + schema: + $ref: '#/components/schemas/ZoneId' + requestBody: + description: Request body for editing an existing zone + content: + application/json: + schema: + $ref: '#/components/schemas/CreateZoneRequestV1' + required: true + responses: + '200': + description: A Single Zone + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/ZoneResponseV1' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + delete: + summary: Delete Zone + description: | + Delete a Zone by its ID.\ + \ + **Required permissions:** zones.edit + operationId: deleteZoneV1 + tags: + - Zones + parameters: + - name: zoneId + required: true + in: path + schema: + $ref: '#/components/schemas/ZoneId' + responses: + '204': + description: Zone successfully deleted + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '409': + $ref: '#/components/responses/Conflict' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' +components: + securitySchemes: + bearerAuth: + type: http + scheme: bearer + parameters: + Offset: + name: offset + in: query + description: The offset number of items to start with + required: false + schema: + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + default: 0 + example: 30 + Limit: + name: limit + in: query + description: The number of items to return + required: false + schema: + type: integer + format: int32 + minimum: 1 + maximum: 200 + default: 25 + example: 25 + PricingIdPath: + name: pricingId + in: path + description: The pricing ID. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + InhibitionRulePath: + name: inhibitionRuleId + in: path + description: The inhibition rule ID. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + JobNamePath: + name: jobName + in: path + description: The custom Prometheus job name. + required: true + schema: + type: string + maxLength: 256 + minLength: 1 + example: my-custom-job + Query: + name: query + in: query + description: The Prometheus expression query string. + required: true + schema: + type: string + maxLength: 50000 + example: up + Time: + name: time + in: query + description: The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. + required: false + schema: + $ref: '#/components/schemas/QueryTime' + example: '2023-03-21T14:30:00Z' + Timeout: + name: timeout + in: query + description: The evaluation timeout. The default is 2 minutes. + required: false + schema: + $ref: '#/components/schemas/Duration' + LimitQuery: + name: limit + in: query + description: The maximum number of returned series. To disable the limit, set the value to 0. + required: false + schema: + $ref: '#/components/schemas/UnlimitedLong' + TimeStartQuery: + name: start + in: query + description: The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. + required: true + schema: + $ref: '#/components/schemas/QueryTime' + example: '2023-03-21T14:30:00Z' + TimeEndQuery: + name: end + in: query + description: The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. + required: true + schema: + $ref: '#/components/schemas/QueryTime' + example: '2023-03-30T14:30:00Z' + Step: + name: step + in: query + description: The query resolution step width, specified as a duration or a floating-point number of seconds. + required: true + schema: + oneOf: + - $ref: '#/components/schemas/Duration' + - $ref: '#/components/schemas/UnlimitedLong' + MatchSeries: + name: match[] + in: query + description: A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. + required: true + schema: + type: array + maxItems: 100 + items: + type: string + maxLength: 255 + style: form + explode: true + example: + - up + - process_start_time_seconds{job="prometheus"} + TimeStartSeries: + name: start + in: query + description: The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. + required: false + schema: + $ref: '#/components/schemas/QueryTime' + example: '2023-03-21T14:30:00Z' + TimeEndSeries: + name: end + in: query + description: The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. + required: false + schema: + $ref: '#/components/schemas/QueryTime' + example: '2023-03-30T14:30:00Z' + LimitSeries: + name: limit + in: query + description: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + required: false + schema: + $ref: '#/components/schemas/UnlimitedLong' + TimeStartUnsupported: + name: start + in: query + description: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + required: false + schema: + $ref: '#/components/schemas/QueryTime' + example: '2023-03-21T14:30:00Z' + TimeEndUnsupported: + name: end + in: query + description: UNSUPPORTED - Sysdig does not support this parameter. + required: false + schema: + $ref: '#/components/schemas/QueryTime' + example: '2023-03-30T14:30:00Z' + MatchLabelNames: + name: match[] + in: query + description: A repeated series selector argument that specifies the series from which to read the label names. + required: false + schema: + type: array + maxItems: 100 + items: + type: string + maxLength: 255 + style: form + explode: true + example: + - '{job="prometheus"}' + LabelNamePath: + name: labelName + in: path + required: true + description: The name of the label to retrieve values for. + schema: + type: string + maxLength: 10000 + example: job + MatchLabelValues: + name: match[] + in: query + description: A repeated series selector argument that specifies the series from which to read the label values. + required: false + schema: + type: array + maxItems: 100 + items: + type: string + maxLength: 255 + style: form + explode: true + example: + - '{job="prometheus"}' + LimitLabelValues: + name: limit + in: query + description: The maximum number of returned labels. This is 5,000 by default. To disable the limit, set the value to 0. + required: false + schema: + $ref: '#/components/schemas/UnlimitedLong' + LimitPerMetricUnsupported: + name: limit_per_metric + in: query + description: UNSUPPORTED - Sysdig does not support this parameter. + required: false + schema: + $ref: '#/components/schemas/UnlimitedLong' + LimitMetrics: + name: limit + in: query + description: The maximum number of metrics to return. To disable the limit, set the value to 0. + required: false + schema: + $ref: '#/components/schemas/UnlimitedLong' + MetricName: + name: metric + in: query + required: false + description: A specific metric name to filter metadata for. If omitted, metadata for all metrics is retrieved. + schema: + type: string + maxLength: 255 + example: up + Enabled: + name: enabled + in: query + description: Enabled status of the integration + required: false + schema: + type: boolean + example: false + JiraIntegrationId: + name: integrationId + in: path + description: Jira integration identifier + required: true + x-go-name: IntegrationID + schema: + $ref: '#/components/schemas/UnlimitedLong' + IssueTypeId: + name: issueTypeId + in: path + description: Jira issue type identifier + required: true + x-go-name: IssueTypeID + schema: + $ref: '#/components/schemas/UnlimitedLong' + NotificationChannelIdPath: + name: notificationChannelId + in: path + description: The Notification Channel Identifier + required: true + x-go-name: NotificationChannelID + schema: + $ref: '#/components/schemas/UnlimitedLong' + OrderBy: + name: orderby + in: query + description: The order by field separated by a colon for the direction + required: false + schema: + type: string + maxLength: 256 + default: '' + example: name:asc + Filter: + name: filter + in: query + description: The filter by field separated by a colon for the filter value + required: false + schema: + type: string + maxLength: 8192 + default: '' + example: name:filter + TeamIdPath: + name: teamId + in: path + description: The team ID. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + UserIdPath: + name: userId + in: path + description: The user ID. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + MultiFilter: + name: filter + in: query + description: | + Filters to apply in the form of `key:value`.\ + Multiple filters can be applied by repeating the `filter` parameter:\ + `&filter=key1:value1&filter=key2:value2` + required: false + style: form + schema: + type: array + maxItems: 4 + default: [] + items: + type: string + maxLength: 512 + default: '' + example: first_name:john + AccessKeyIdPath: + name: accessKeyId + in: path + description: The access key id. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + GroupMappingIdPath: + name: groupMappingId + in: path + description: The group mapping ID. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + SsoSettingsIdPath: + name: ssoSettingsId + in: path + description: SSO settings ID. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + SsoProductIdPath: + name: ssoProductId + in: path + description: Sysdig Product. + required: true + schema: + type: string + example: secure + enum: + - monitor + - secure + IpFilterIdPath: + name: ipFilterId + in: path + description: IP Filter ID. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + PermissionsFilter: + name: filter + description: | + Filter by products when getting permissions for custom roles.\ + Avaliable products are: SDS, SDC.\ + You can specify a single product or a list of products separated by commas.\ + Product names are case-sensitive.\ + If not specified, all permissions are returned. + in: query + required: false + schema: + type: string + maxLength: 8192 + default: '' + example: products:SDS + RoleIdPath: + name: roleId + in: path + description: The role id. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + ServiceAccountIdPath: + name: serviceAccountId + in: path + description: The service account ID. + required: true + schema: + $ref: '#/components/schemas/UnlimitedLong' + PathCertificateId: + name: certId + in: path + description: ID of the certificate + required: true + schema: + type: string + maxLength: 20 + EventId: + name: eventId + description: The event id. + required: true + in: path + schema: + type: string + example: 179854fbe16a1279f2ebeb558f1ebe99 + maxLength: 32 + IntegrationId: + name: integrationId + in: path + description: ID of the integration to return + required: true + schema: + type: integer + format: int64 + minimum: 1 + maximum: 9223372036854776000 + vulnerabilityCursor: + name: cursor + in: query + required: false + description: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + schema: + type: string + maxLength: 300 + example: MTI0MjM0Cg== + ActionExecutionId: + name: actionExecutionId + in: path + description: ID of the action execution + required: true + schema: + type: string + maxLength: 64 + example: '1234567890123456789012345678901234567890123456789012345678901234' + vulnerabilityFilter: + name: filter + in: query + description: The filtering string in secure-querylang syntax. + required: false + schema: + type: string + maxLength: 200 + example: freeText in ("postgres") and status = "expired" + order: + name: order + in: query + description: The sorting order + required: false + schema: + type: string + enum: + - asc + - desc + default: desc + example: asc + acceptedRiskID: + name: acceptedRiskID + in: path + description: The Accepted Risk ID + required: true + schema: + type: string + maxLength: 32 + example: 17af8bade67c9a208e632df001fcea2c + MultiOrderBy: + name: orderby + in: query + description: | + Ordering to apply in the form of `field:direction` where `direction` can either be `asc` or `desc`.\ + Multiple orderings can be applied by repeating the `orderby` parameter:\ + `&orderby=key1:direction1&orderby=key2:direction2` + required: false + style: form + schema: + type: array + maxItems: 4 + default: + - id:desc + items: + type: string + maxLength: 256 + example: name:desc + schemas: + PricingType: + title: Pricing type + description: The type of the pricing. + type: string + enum: + - DEFAULT + - CLUSTER + example: CLUSTER + OffsetPaginatedResponse: + type: object + title: Offset Paginated Response + properties: + page: + description: Page information. + type: object + properties: + previous: + type: string + maxLength: 8192 + nullable: true + example: '10' + next: + type: string + maxLength: 8192 + nullable: true + example: '30' + total: + type: integer + format: int64 + minimum: 0 + example: 1 + data: + description: Paginated data. + type: array + maxItems: 200 + items: {} + UnlimitedLong: + description: ' ' + type: integer + format: int64 + minimum: 0 + example: 1 + UnitPricingV1: + type: object + title: Unit Pricing V1 + description: The unit pricing configuration used to compute costs. + required: + - cpu + - ram + - storage + properties: + cpu: + description: Hourly cost of one CPU. + type: number + example: 0.031611 + ram: + description: Hourly cost of one GB of RAM. + type: number + example: 0.004237 + storage: + description: Hourly cost of one GB of storage. + type: number + example: 0.00005479452 + spotCpu: + description: Hourly cost of one CPU for a spot node. + type: number + nullable: true + spotRam: + description: Hourly cost of one GB of RAM for a spot node. + type: number + nullable: true + PricingResponseV1: + type: object + title: Pricing Response V1 + description: The pricing configuration used to compute costs. + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + type: + $ref: '#/components/schemas/PricingType' + clusterName: + description: The name of the cluster. Required when `type` is `CLUSTER`. + type: string + maxLength: 256 + nullable: true + example: My pricing + name: + description: The name of the pricing profile. + type: string + maxLength: 256 + example: My pricing + unitPricing: + description: The unit pricing configuration used to compute costs. + allOf: + - $ref: '#/components/schemas/UnitPricingV1' + spotLabel: + description: The name of a node label that is used to identify the node as a spot node. + type: string + maxLength: 256 + nullable: true + example: cost-advisor-spot-node + spotLabelValue: + description: The value of the spot node label. + type: string + maxLength: 256 + nullable: true + example: 'true' + version: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + description: | + The current version of the resource. + GetPricingPaginatedResponseV1: + title: Get Paginated Pricing Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/PricingResponseV1' + maxItems: 200 + Error: + title: Error + type: object + properties: + type: + description: The error code. + type: string + maxLength: 512 + example: resource_not_found + message: + description: A human readable error message. + type: string + maxLength: 8192 + example: Error message + details: + description: A list of details related to the error. + type: array + maxItems: 512 + items: {} + CreatePricingRequestV1: + title: Create Pricing Request + type: object + required: + - type + - name + - unitPricing + properties: + type: + $ref: '#/components/schemas/PricingType' + clusterName: + description: The name of the cluster. Required when `type` is `CLUSTER`. + type: string + maxLength: 256 + nullable: true + example: My pricing + name: + description: The name of the pricing configuration. + type: string + maxLength: 256 + example: My pricing + unitPricing: + description: The unit pricing configuration used to compute costs. + allOf: + - $ref: '#/components/schemas/UnitPricingV1' + spotLabel: + description: The name of a node label that is used to identify the node as a spot node. + type: string + maxLength: 256 + nullable: true + example: cost-advisor-spot-node + spotLabelValue: + description: The value of the spot node label. + type: string + maxLength: 256 + nullable: true + example: 'true' + UpdatePricingRequestV1: + title: Update Pricing Request + type: object + required: + - version + - type + - name + - unitPricing + properties: + type: + $ref: '#/components/schemas/PricingType' + clusterName: + description: The name of the cluster. Required when `type` is `CLUSTER`. + type: string + maxLength: 256 + nullable: true + example: My pricing + name: + description: The name of the pricing profile. + type: string + maxLength: 256 + example: My pricing + unitPricing: + description: The unit pricing configuration used to compute costs. + allOf: + - $ref: '#/components/schemas/UnitPricingV1' + spotLabel: + description: The name of a node label that is used to identify the node as a spot node. + type: string + maxLength: 256 + nullable: true + example: cost-advisor-spot-node + spotLabelValue: + description: The value of the spot node label. + type: string + maxLength: 256 + nullable: true + example: 'true' + version: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + description: | + The current version of the resource. + PricingProjectedResponseV1: + type: object + title: Pricing Projected Response V1 + description: The monthly projected cost for a specific cluster. + properties: + clusterName: + description: The name of the cluster. + type: string + maxLength: 256 + example: My pricing + monthlyProjectedCost: + description: Monthly projected cost. + type: number + example: 113114.72 + GetPricingProjectedPaginatedResponseV1: + title: Get Paginated Pricing Projected Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/PricingProjectedResponseV1' + maxItems: 200 + PrometheusLabel: + title: PrometheusLabel + type: string + description: A valid Prometheus label name. Must match ^[a-zA-Z_][a-zA-Z0-9_]*$ + minLength: 1 + maxLength: 1024 + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + example: kube_cluster_name + PromqlMatcher: + title: PromQL Matcher + type: object + description: | + A PromQL-style filter that narrows the dataset to resources + matching specific labels. If not provided, no additional filtering + is applied. + required: + - label + - operator + - value + properties: + label: + $ref: '#/components/schemas/PrometheusLabel' + operator: + type: string + enum: + - EQUAL + - NOT_EQUAL + - REGEX_MATCH + - REGEX_NOT_MATCH + description: | + The operator to use in the filter: + - `EQUAL` (`=`): Exact match + - `NOT_EQUAL` (`!=`): Exclude exact match + - `REGEX_MATCH` (`=~`): Regular expression match + - `REGEX_NOT_MATCH` (`!~`): Regular expression mismatch + example: REGEX_MATCH + value: + type: string + description: The value to match against. + example: my_service.* + minLength: 1 + maxLength: 1024 + WorkloadCostTrendsDataRequest: + title: Workload Cost Trends Data Request + required: + - trendRangeInDays + - date + properties: + trendRangeInDays: + description: | + Specifies the number of days used to calculate and extract cost data. + Must be a positive integer. + type: number + minimum: 1 + maximum: 30 + example: 10 + date: + description: "The reference date used to define the time window for cost trend calculation.\nWhen combined with `trendRangeInDays`, this date represents the inclusive upper bound\nof the time range — the trend is calculated from (`date - trendRangeInDays`).\nFor example, if `date` is 2025-02-12 and `trendRangeInDays` is 10, the time range\nused for calculation is from 2025-02-03 to 2025-02-12 (inclusive). \nMust be in YYYY-MM-DD format.\n" + type: string + format: date + example: '2025-02-12' + scope: + description: A list of PromQL-style filters + type: array + items: + $ref: '#/components/schemas/PromqlMatcher' + maxItems: 512 + groupBy: + type: array + items: + $ref: '#/components/schemas/PrometheusLabel' + maxItems: 10 + DateRange: + title: DateRange + type: object + description: A date range with inclusive start and end dates. + required: + - startDate + - endDate + properties: + startDate: + description: The beginning of the date range. + type: string + format: date + example: '2025-02-17' + x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")' + endDate: + description: The end of the date range. + type: string + format: date + example: '2025-02-19' + x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")' + WorkloadCostTrendsDataResponse: + type: object + title: Workload Cost Trends Data Response + description: Cost trends observed between two consecutive time periods in the past. + properties: + currentRange: + allOf: + - description: | + The date range for the current cost data. + It represents the most recent time window used for cost calculation. + This range starts `trendRangeInDays` days before the requested `date`, + and ends on the `date`. Both `startDate` and `endDate` are inclusive. + For example, if `date` is 2025-02-12 and `trendRangeInDays` is 10, + the current range will be from 2025-02-03 to 2025-02-12. + - $ref: '#/components/schemas/DateRange' + previousRange: + allOf: + - description: | + The date range for the previous cost data used for comparison. + This range immediately precedes the current range, with the same duration. + It ends one day before `currentRange.startDate`, and both `startDate` + and `endDate` are inclusive. + For example, if the current range is from 2025-02-03 to 2025-02-12, + the previous range will be from 2025-01-24 to 2025-02-02. + - $ref: '#/components/schemas/DateRange' + total: + description: Aggregated cost values for the current and previous ranges. + type: object + properties: + current: + description: The total cost for the current range. + type: number + format: double + example: 33.754530610617486 + previous: + description: The total cost for the previous range. + type: number + format: double + example: 34.36367482352418 + change: + description: The difference between the current and the previous cost periods expressed in percentages. + type: number + format: double + example: -1.77 + groupByData: + type: array + description: Grouped cost data for each combination of label values. + items: + type: object + properties: + group: + description: Key-value pairs representing the grouping labels. + type: object + additionalProperties: + type: string + example: kube_cluster_name:test-k8s-cluster + maxLength: 1024 + current: + description: The cost for the current range within this group. + type: number + format: double + example: 33.754530610617486 + previous: + description: The cost for the previous range within this group. + type: number + format: double + example: 34.36367482352418 + change: + description: The difference in cost between current and previous ranges for this group. + type: number + format: double + example: -0.6091442129 + maxItems: 10000 + WastedWorkloadDataRequest: + title: Wasted Workload Spend Data Request + required: + - dateRange + properties: + dateRange: + allOf: + - description: | + The date range used to calculate the Wasted Workload Spend report. Both `startDate` and `endDate` are inclusive. + - $ref: '#/components/schemas/DateRange' + scope: + description: A list of PromQL-style filters + type: array + items: + $ref: '#/components/schemas/PromqlMatcher' + maxItems: 512 + groupBy: + description: | + Specifies Prometheus labels to group the report data by. + By default, the following labels will always be included: + - kube_cluster_name + - kube_namespace_name + - kube_workload_name + A maximum of 7 additional custom labels can be specified. + type: array + items: + $ref: '#/components/schemas/PrometheusLabel' + maxItems: 7 + WastedWorkloadSpendDataResponse: + type: object + title: Wasted Workload Spend Data Response + description: Aggregated and grouped cost data representing Wasted Workload Spend over a specific date range. + properties: + total: + type: object + description: Aggregated cost values for the specified time range. + properties: + accrued: + type: number + format: double + description: Total cost accrued during the reporting period. + example: 31.59 + estimated: + type: number + format: double + description: Estimated efficient cost during the reporting period. + example: 5.6 + wasted: + type: number + format: double + description: Difference between accrued and estimated cost. + example: 25.73 + groupByData: + type: array + description: Grouped cost data for each combination of Prometheus label values. + items: + type: object + example: + group: + kube_cluster_name: test-k8s-cluster + accrued: 26.59 + estimated: 3.6 + wasted: 22.99 + properties: + group: + type: object + description: Key-value pairs representing grouping labels. + additionalProperties: + type: string + example: kube_cluster_name:test-k8s-cluster + maxLength: 1024 + accrued: + type: number + format: double + description: Accrued cost for this group. + example: 26.59 + estimated: + type: number + format: double + description: Estimated cost for this group. + example: 3.6 + wasted: + type: number + format: double + description: Wasted cost for this group. + example: 22.99 + maxItems: 10000 + WorkloadRightsizingDataRequest: + title: Workload Rightsizing Data Request + required: + - dateRange + - algorithm + properties: + dateRange: + allOf: + - description: | + The date range used to calculate the Workload Rightsizing report. Both `startDate` and `endDate` are inclusive. + - $ref: '#/components/schemas/DateRange' + algorithm: + description: "Aggregation algorithm used for rightsizing analysis. Currently supported values are:\n- AVG \n- P95 \n- MAX\nThis field is case-sensitive and may support more values in the future.\n" + type: string + maxLength: 64 + scope: + description: A list of PromQL-style filters + type: array + items: + $ref: '#/components/schemas/PromqlMatcher' + maxItems: 512 + WorkloadRightsizingDataResponse: + type: object + title: Workload Rightsizing Data Response + description: Cost data representing Workload Rightsizing over a specific date range. + properties: + groupByData: + type: array + description: Grouped workload rightsizing data by cluster, namespace, workload, and container. + items: + type: object + properties: + group: + type: object + description: | + Key-value pairs representing the logical grouping keys. + + The data is grouped by the following dimensions: + - cluster + - namespace + - workload + - container + example: + cluster: test-cluster + namespace: prod + workload: web-api + container: web-api-container + additionalProperties: + type: string + example: cluster:test-cluster + maxLength: 1024 + suggestedCpu: + type: number + format: double + description: Suggested CPU allocation (in milicores). + example: 100 + suggestedMemory: + type: number + format: double + description: Suggested memory allocation (in MiB). + example: 1024 + monthlyCost: + type: number + format: double + description: Estimated current monthly cost in USD. + example: 10.02 + monthlyPotentialSavings: + type: number + format: double + description: Estimated potential monthly savings in USD. + example: 2 + workloadType: + type: string + example: Deployment + description: | + Type of Kubernetes workload. + Possible values include: + - Deployment + - StatefulSet + - DaemonSet + - Job + - CronJob + - ReplicaSet + - ReplicationController + maxLength: 64 + numberOfPods: + type: integer + format: int32 + description: Number of pods currently running in the workload. + example: 1 + minimum: 0 + maximum: 2147483647 + requestedCpu: + type: number + format: double + description: CPU requested by the container (in milicores). + example: 120 + requestedMemory: + type: number + format: double + description: Memory requested by the container (in MiB). + example: 2048 + maxItems: 10000 + LabelMatcherV1: + type: object + title: Label matcher v1 + description: Matcher to match alerts to inhibition rules. + required: + - labelName + - operator + - value + properties: + labelName: + type: string + description: Label to match. + minLength: 1 + maxLength: 1024 + example: myLabel + operator: + type: string + description: Match operator. + enum: + - EQUALS + - NOT_EQUALS + - REGEXP_MATCHES + - NOT_REGEXP_MATCHES + example: EQUALS + value: + type: string + description: Label value to match in case operator is of type equality, or regular expression in case of operator is of type regex. + minLength: 0 + maxLength: 1024 + example: regexExample[s]? + InhibitionRuleResponseV1: + title: Inhibition Rule Response v1 + properties: + id: + description: Unique ID of the resource. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + version: + description: The current version of the resource. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + createdOn: + description: Creation date. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + modifiedOn: + description: Last modification date. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + customerId: + description: ID of customer that owns the inhibition rule. + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 12 + teamId: + description: ID of team that owns the inhibition rule. + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 13 + isEnabled: + type: boolean + default: true + description: Indicates if the inhibition rule is enabled or not. + example: false + name: + type: string + description: Name of the inhibition rule. + example: this is an example name + maxLength: 255 + nullable: true + description: + type: string + description: Description of the inhibition rule. + example: this is an example description + maxLength: 8192 + nullable: true + sourceMatchers: + type: array + description: List of source matchers for which one or more alerts have to exist for the inhibition to take effect. + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/LabelMatcherV1' + targetMatchers: + type: array + description: List of target matchers that have to be fulfilled by the target alerts to be muted. + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/LabelMatcherV1' + equal: + type: array + description: List of labels that must have an equal value in the source and target alert for the inhibition to take effect. + minItems: 1 + maxItems: 100 + nullable: true + items: + type: string + description: Name of a label. + example: myLabel + minLength: 1 + maxLength: 1024 + GetInhibitionRulesPaginatedResponseV1: + title: Get Inhibition Rules Response v1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/InhibitionRuleResponseV1' + maxItems: 200 + CreateInhibitionRuleRequestV1: + title: Create Inhibition Rule Request v1 + required: + - sourceMatchers + - targetMatchers + properties: + isEnabled: + type: boolean + default: true + description: Indicates if the inhibition rule is enabled or not. + example: false + name: + type: string + description: Name of the inhibition rule. If provided, must be unique. + example: this is an example name + maxLength: 255 + nullable: true + description: + type: string + description: Description of the inhibition rule. + example: this is an example description + maxLength: 8192 + nullable: true + sourceMatchers: + type: array + description: List of source matchers for which one or more alerts have to exist for the inhibition to take effect. + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/LabelMatcherV1' + targetMatchers: + type: array + description: List of target matchers that have to be fulfilled by the target alerts to be muted. + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/LabelMatcherV1' + equal: + type: array + description: List of labels that must have an equal value in the source and target alert for the inhibition to take effect. + minItems: 1 + maxItems: 100 + nullable: true + items: + type: string + description: Name of a label. + example: myLabel + minLength: 1 + maxLength: 1024 + UpdateInhibitionRuleRequestV1: + title: Update Inhibition Rule Request v1 + required: + - sourceMatchers + - targetMatchers + - version + properties: + isEnabled: + type: boolean + default: true + description: Indicates if the inhibition rule is enabled or not. + example: false + name: + type: string + description: Name of the inhibition rule. If provided, must be unique. + example: this is an example name + maxLength: 255 + nullable: true + description: + type: string + description: Description of the inhibition rule. + example: this is an example description + maxLength: 8192 + nullable: true + sourceMatchers: + type: array + description: List of source matchers for which one or more alerts have to exist for the inhibition to take effect. + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/LabelMatcherV1' + targetMatchers: + type: array + description: List of target matchers that have to be fulfilled by the target alerts to be muted. + minItems: 1 + maxItems: 100 + items: + $ref: '#/components/schemas/LabelMatcherV1' + equal: + type: array + description: List of labels that must have an equal value in the source and target alert for the inhibition to take effect. + minItems: 1 + maxItems: 100 + nullable: true + items: + type: string + description: Name of a label. + example: myLabel + minLength: 1 + maxLength: 1024 + version: + description: The current version of the resource. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + MonitorEventsFrom: + description: | + From, expressed in Unix nanoseconds timestamp. The difference between `from` and `to` + cannot be greater than 30 days. If defined, `cursor` cannot be used. + type: integer + format: int64 + minimum: 0 + example: 1546300800000000000 + maximum: 4133980799000000000 + MonitorEventsTo: + description: | + To, expressed in Unix nanoseconds timestamp. The difference between `from` and `to` + cannot be greater than 30 days. If defined, `cursor` cannot be used. + type: integer + format: int64 + minimum: 0 + example: 1546300800000000000 + maximum: 4133980799000000000 + MonitorEventsCursor: + description: | + Cursor is a string used to retrieve paginated data. It acts as a pointer to a page of data. When a cursor is defined, the `from` and `to` parameters must not be used. + type: string + example: LTltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 512 + MonitorEventsFilter: + description: | + Query language expression for filtering results. + The filter is the result of logical concatenations, + using "and" and "or" binary operators and the "not" unary prefix operator (i.e. `pid = 1 and not ppid = 2`), + of attribute comparisons. Attribute comparisons can be: + - scalar, using `=`, `!=` + - scalar for string values, using `starts with`, `contains`, operators + - vector, using `in` to check the equality among one of the values provided between parenthesis (i.e. `pid in (1, 2)`) + Depending on the attribute, only some operators can be available. + Values containing double-quotes `"` need escaping using backslash `\`, i.e. name = "sample \"quoted\" value". + Supported attributes are: + * `id` - the event id, using `=`, `!=`, `starts with`, `contains`, `in` + * `type` - the event type, using `=`, `!=` + * `source` - the event source, using `=`, `!=`, `starts with`, `contains` + * `severity` - the event severity, using `=`, `!=`, `in` + * `labels.` - the event scope label, using `=`, `!=`, `starts with`, `contains`, `in` + type: string + example: type = 'ALERT' and severity in (3,4,5) and labels.kube_cluster_name = 'my-cluster' + maxLength: 2048 + MonitorEventsPage: + type: object + description: Pagination information. + required: + - total + properties: + total: + type: integer + format: int64 + description: | + The number of events matching the search criteria. This number is always major or equal to the number of events returned. + example: 10 + minimum: 0 + maximum: 9223372036854776000 + prev: + type: string + description: | + `prev` is a string pointing to the previous page of data. + Use this as the `cursor` to get the previous page of data. + example: LTltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 512 + next: + type: string + description: "`next` is a string pointing to the next page of data.\nUse this as the `cursor` to scroll paginated results and get the next page of data. \nIf not included, the current response is the last page.\n" + example: KzltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 512 + MonitorScopeLabel: + type: object + title: Scope Label v1 + description: Scope Label. + properties: + key: + type: string + description: The label key. + minLength: 1 + maxLength: 1024 + example: kube_cluster_name + value: + description: The scope label value(s) + type: array + minItems: 0 + maxItems: 1024 + items: + type: string + example: myCluster + minLength: 1 + maxLength: 1024 + BaseMonitorEvent: + description: Base Monitor Event + required: + - id + - createdOn + - occurredAt + - name + - severity + - type + properties: + id: + type: string + description: The event id. + example: 15cbf54e34df95404caad1c988cf7c42 + maxLength: 32 + createdOn: + type: string + format: date-time + maxLength: 64 + description: Timestamp when the event was created in the system + example: '2024-11-21T20:29:01.415528Z' + occurredAt: + type: string + format: date-time + maxLength: 64 + description: Event logical timestamp (when the event occurred). For alert events, this is the time when the alert was triggered. + example: '2024-11-21T20:29:01.415528Z' + name: + type: string + description: The event name + example: Launch Privileged Container + maxLength: 64 + description: + type: string + description: Description of the event. + example: | + Back-off restarting failed container + maxLength: 1024 + severity: + type: integer + format: int32 + description: The event severity. A lower value means more severe, with 0 being the highest severity and 7 being the lowest. + minimum: 0 + maximum: 7 + example: 4 + scopeLabels: + type: array + description: List of scope labels, including those from initial scope and those coming from the enrichment process. + nullable: true + minItems: 1 + maxItems: 1024 + items: + $ref: '#/components/schemas/MonitorScopeLabel' + scope: + type: string + description: Initial event scope + maxLength: 50000 + example: kube_namespace_name = 'test' + MonitorEvent: + type: object + description: | + Monitor Event + properties: + type: + $ref: '#/components/schemas/MonitorEventType' + discriminator: + propertyName: type + mapping: + ALERT: '#/components/schemas/AlertMonitorEvent' + CUSTOM: '#/components/schemas/CustomMonitorEvent' + AlertId: + type: integer + format: int64 + description: ID of the alert that generated the event + example: 2 + maximum: 9223372036854776000 + minimum: 1 + AlertMonitorEvent: + description: Monitor Alert Event + allOf: + - $ref: '#/components/schemas/BaseMonitorEvent' + - $ref: '#/components/schemas/MonitorEvent' + - type: object + properties: + alertId: + $ref: '#/components/schemas/AlertId' + endedAt: + type: string + format: date-time + maxLength: 64 + description: Timestamp when the alert resolved + example: '2024-11-21T20:29:01.415528Z' + alertState: + type: string + description: The alert state. Current supported values are TRIGGERED, RESOLVED. + maxLength: 32 + example: TRIGGERED + acknowledged: + type: boolean + description: Whether the alert has been acknowledged. + example: false + manuallyResolved: + type: boolean + description: Whether the alert has been manually resolved. + example: false + silenced: + type: boolean + description: Whether the alert has been silenced. + example: false + CustomMonitorEvent: + description: Monitor Custom Event + allOf: + - $ref: '#/components/schemas/BaseMonitorEvent' + - $ref: '#/components/schemas/MonitorEvent' + - type: object + properties: + source: + type: string + description: The event source. Well known sources include kubernetes, docker, containerd. User created events have a value of api for this field, unless specifically overwritten at creation time + example: kubernetes + maxLength: 32 + MonitorEventType: + type: string + description: The type of the event. Current supported values are ALERT, CUSTOM. As the list of supported event types may change in the future, clients should handle unknown event types gracefully. + example: ALERT + maxLength: 50 + ListMonitorEventsResponse: + type: object + description: The list of events matching a search criteria. + required: + - page + - data + properties: + page: + $ref: '#/components/schemas/MonitorEventsPage' + data: + description: The list of events + type: array + items: + $ref: '#/components/schemas/MonitorEvent' + maxItems: 20000 + MetricV1: + type: object + description: Get Disabled Metrics by Job name Response + properties: + metricName: + description: | + Specifies the name of the disabled metric. + type: string + example: apache_accesses_total + maxLength: 256 + modifiedDate: + description: | + The timestamp during which the metric was disabled + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + userId: + description: | + The UserId responsible for disabling the metric + type: integer + format: int64 + minimum: 0 + maximum: 99999999999999 + example: 1234 + userName: + description: | + User name of the person who disabled the metric + type: string + example: John Smith + maxLength: 256 + ListJobAndDisabledMetricsV1: + type: object + description: Get Disabled Metrics by Job name Response. + properties: + jobName: + description: | + The name of the Job reporting the metric. + type: string + example: k8s-pods + maxLength: 256 + metrics: + type: array + description: | + List of metrics that are disabled for the Job. + maxItems: 1000 + items: + $ref: '#/components/schemas/MetricV1' + MetricErrorV1: + type: object + description: Get Disabled Metrics by Job name Response + properties: + metricName: + description: | + The metric name which could not be disabled or enabled. + type: string + example: apache_accesses_total + maxLength: 256 + jobName: + description: | + Specifies the name of the job that caused the error. + type: string + example: k8s-pods + maxLength: 256 + message: + description: | + Describes the job and metric error. + type: string + example: This is not a valid metric name. + maxLength: 256 + ResponseListDisabledMetricsV1: + type: object + description: Get Disabled Metrics by Job name Response + required: + - data + properties: + data: + type: array + maxItems: 1000 + items: + $ref: '#/components/schemas/ListJobAndDisabledMetricsV1' + errors: + type: array + maxItems: 0 + items: + $ref: '#/components/schemas/MetricErrorV1' + DisableMetricV1: + type: object + description: Get Disabled Metrics by Job name Response. + properties: + metricName: + description: | + The name of the metric to be disabled or re-enabled. + type: string + example: apache_accesses_total + maxLength: 256 + isDisabled: + description: | + Set as `true` to disable a metric. \ + Set as `false` to re-enable a metric. + type: boolean + example: true + DisableJobsAndMetricsV1: + type: object + description: Get Disabled Metrics by Job name Response + properties: + jobName: + description: | + The Prometheus Job for which the collection of one or more metrics is disabled. + type: string + example: k8s-pods + maxLength: 256 + metrics: + type: array + description: | + List of metrics to be disabled. + maxItems: 1000 + items: + $ref: '#/components/schemas/DisableMetricV1' + RequestBodyDisabledMetricsV1: + type: object + description: Change Disabled Metrics per JobName + required: + - data + properties: + data: + type: array + maxItems: 1000 + items: + $ref: '#/components/schemas/DisableJobsAndMetricsV1' + ResponseListDisabledMetricsAndErrorV1: + type: object + description: Get Disabled Metrics by Job name Response + required: + - data + - errors + properties: + data: + type: array + maxItems: 1000 + items: + $ref: '#/components/schemas/ListJobAndDisabledMetricsV1' + errors: + type: array + maxItems: 1000 + items: + $ref: '#/components/schemas/MetricErrorV1' + CustomJobV1: + type: object + title: Custom Prometheus Job V1 + description: Custom Prometheus job name and enablement status + properties: + name: + description: Job name + type: string + maxLength: 256 + example: my-custom-job + enabled: + description: Enablement status + type: boolean + example: false + enablementByCluster: + description: Enablement overrides by cluster + type: object + example: + my-cluster: true + additionalProperties: + type: boolean + example: true + GetCustomJobsPaginatedResponseV1: + title: Get Paginated Custom Prometheus Job Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/CustomJobV1' + maxItems: 200 + CustomJobContentV1: + type: string + title: Custom Prometheus Job Content + description: | + The yaml content of a custom Prometheus job. Must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config + example: | + job_name: apache-exporter-default + tls_config: + insecure_skip_verify: true + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: keep + source_labels: [__meta_kubernetes_pod_host_ip] + regex: __HOSTIPS__ + CustomJobsEnablementV1: + type: object + title: Custom Prometheus Job Enablement V1 + description: The enablement status of a custom Prometheus job + required: + - enabled + properties: + enabled: + description: Enablement status + type: boolean + example: false + enablementByCluster: + description: Enablement overrides by cluster + type: object + example: + my-cluster: true + additionalProperties: + type: boolean + example: true + QueryTime: + description: Time defined as RFC3339 or a unix timestamp + oneOf: + - type: string + format: date-time + maxLength: 30 + - type: integer + format: int64 + minimum: 0 + maximum: 4102444800 + Duration: + description: Time defined as a Golang-style duration type + type: string + maxLength: 50 + example: 1m30s + QueryResponseV1: + type: object + title: Query Response V1 + properties: + status: + description: Query status. + type: string + enum: + - success + - error + example: success + data: + type: object + description: The result of the query. + properties: + resultType: + type: string + enum: + - vector + - scalar + - matrix + - string + description: Type of the result set. + example: vector + result: + anyOf: + - description: Scalar result + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: number + example: 1750075945 + - type: string + example: +Inf + example: + - 1750075945 + - +Inf + - description: Vector result + type: array + minItems: 0 + items: + type: object + required: + - metric + - value + properties: + metric: + type: object + additionalProperties: + type: string + maxLength: 100 + example: '1749637260' + example: + instance: minikube + maxProperties: 50 + value: + type: array + minItems: 2 + maxItems: 2 + items: + type: string + maxLength: 100 + example: '1' + example: + - '1749637701' + - '1' + example: + - metric: + instance: minikube + value: + - '1749637701' + - '1' + - description: Matrix result + type: array + minItems: 0 + items: + type: object + required: + - metric + - values + properties: + metric: + type: object + additionalProperties: + type: string + maxLength: 100 + example: '1749637260' + example: + instance: minikube + values: + type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + type: string + maxLength: 100 + example: '0' + example: + - '1749636900' + - '0' + example: + - metric: {} + values: + - - '1749636900' + - '0' + - - '1749636910' + - '0' + warnings: + description: A set of warning messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + infos: + description: A set of information messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + PrometheusError: + title: PrometheusError + type: object + properties: + status: + type: string + enum: + - error + description: Indicates an error response. + example: error + errorType: + type: string + description: Type of error encountered. + maxLength: 255 + example: gone + error: + type: string + description: Error message describing the issue. + maxLength: 1024 + example: This API endpoint is not supported. + SeriesResponseV1: + type: object + title: Series Response V1 + properties: + status: + description: Query status. + type: string + enum: + - success + - error + example: success + data: + type: array + description: List of matching time series, each represented as a set of labels. + items: + type: object + example: + - __name__: up + instance: localhost:9090 + job: prometheus + - __name__: process_start_time_seconds + instance: localhost:9090 + job: prometheus + warnings: + description: A set of warning messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + infos: + description: A set of information messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + LabelsResponseV1: + type: object + title: Labels Response V1 + properties: + status: + description: Query status. + type: string + enum: + - success + - error + example: success + data: + type: array + description: List of label names. + items: + type: string + maxLength: 255 + example: __name__ + example: + - __name__ + - instance + - job + warnings: + description: A set of warning messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + infos: + description: A set of information messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + LabelValuesResponseV1: + type: object + title: Label Values Response V1 + properties: + status: + description: Query status. + type: string + enum: + - success + - error + example: success + data: + type: array + description: List of values associated with the specified label. + items: + type: string + maxLength: 255 + example: prometheus + example: + - prometheus + - node-exporter + warnings: + description: A set of warning messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + infos: + description: A set of information messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + MetadataResponseV1: + type: object + title: Metadata Response V1 + properties: + status: + description: Query status. + type: string + enum: + - success + - error + example: success + data: + type: object + description: Metric metadata indexed by metric name. + additionalProperties: + type: array + description: Metadata details for a specific metric. + items: + type: object + required: + - type + - help + - unit + properties: + type: + type: string + enum: + - counter + - gauge + - histogram + - summary + - unknown + description: The type of the metric. + example: counter + help: + type: string + maxLength: 1024 + description: A brief description of the metric. + example: Number of HTTP requests + unit: + type: string + maxLength: 255 + description: The unit of measurement for the metric. + example: '' + warnings: + description: A set of warning messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + infos: + description: A set of information messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + RulesResponseV1: + type: object + title: Rules Response V1 + properties: + status: + description: Request status. + type: string + enum: + - success + - error + example: success + data: + type: object + description: Response payload containing rule groups. + properties: + groups: + type: array + description: List of rule groups. + items: + type: object + required: + - name + - file + - rules + - interval + properties: + name: + type: string + maxLength: 255 + description: Name of the rule group. + example: HTTP Alerts + interval: + type: string + maxLength: 30 + description: Evaluation interval of the rule group. + example: 30s + rules: + type: array + description: List of rules in the group. + items: + type: object + required: + - type + - name + - query + - health + properties: + type: + type: string + enum: + - alerting + - recording + description: Type of rule (alerting or recording). + example: alerting + name: + type: string + maxLength: 255 + description: Name of the rule. + example: HighCPUUsage + query: + type: string + maxLength: 5000 + description: PromQL query associated with the rule. + example: avg by(instance) (rate(cpu_usage[5m])) > 0.9 + duration: + type: string + maxLength: 30 + description: Duration for which the rule must be active before triggering. + example: 5m + labels: + type: object + description: Labels assigned to the rule. + additionalProperties: + type: string + maxLength: 255 + example: critical + example: + severity: critical + annotations: + type: object + description: Annotations providing additional information about the rule. + additionalProperties: + type: string + maxLength: 1024 + example: CPU usage is high + example: + description: CPU usage is above 90% for more than 5 minutes. + alerts: + type: array + description: List of active alerts for this rule (only for alerting rules). + items: + type: object + required: + - state + - activeAt + - value + properties: + state: + type: string + enum: + - pending + - firing + description: Current state of the alert. + example: firing + activeAt: + type: string + format: date-time + maxLength: 30 + description: Timestamp when the alert became active. + example: '2023-10-05T14:30:00Z' + value: + type: string + maxLength: 20 + description: The numerical value that triggered the alert. + example: '1e+00' + additionalProperties: false + warnings: + description: A set of warning messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + infos: + description: A set of information messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + AlertsResponseV1: + type: object + title: Alerts Response V1 + properties: + status: + description: Request status. + type: string + enum: + - success + - error + example: success + data: + type: object + description: Response payload containing active alerts. + properties: + alerts: + type: array + description: List of currently active alerts. + items: + type: object + required: + - labels + - state + - activeAt + - annotations + - value + properties: + activeAt: + type: string + format: date-time + maxLength: 30 + description: Timestamp when the alert became active. + example: '2024-10-07T10:17:02Z' + annotations: + type: object + description: Additional metadata about the alert. + additionalProperties: + type: string + maxLength: 1024 + example: application + example: {} + labels: + type: object + description: Key-value pairs identifying the alert. + additionalProperties: + type: string + maxLength: 255 + example: my-alert + example: + alertname: High request latency alert + state: + type: string + enum: + - pending + - firing + description: Current state of the alert. + example: firing + value: + type: string + maxLength: 20 + description: The numerical value that triggered the alert. + example: '1e+00' + additionalProperties: false + warnings: + description: A set of warning messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + infos: + description: A set of information messages attached to the response. + type: array + items: + type: string + example: '' + example: [] + From: + description: | + From, expressed in Unix nanoseconds timestamp. The difference between `from` and `to` + cannot be greater than 2 weeks. + If defined, `cursor` cannot be used. + type: integer + format: int64 + minimum: 0 + example: 1546300800000000000 + maximum: 9223372036854776000 + To: + description: | + To, expressed in Unix nanoseconds timestamp. The difference between `from` and `to` cannot be greater than 2 weeks. + If defined, `cursor` cannot be used. + type: integer + format: int64 + minimum: 0 + example: 1546300800000000000 + maximum: 9223372036854776000 + Cursor: + description: | + Cursor is a string used to retrieve paginated data. It acts as a pointer to the next page of data. When a cursor is defined, the `from` and `to` parameters must not be used. + type: string + example: LTltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 512 + AuditEventsFeedFilter: + description: | + Query language expression for filtering results. + The filter is the result of logical concatenations, + using "and" and "or" binary operators and the "not" unary prefix operator (i.e. `auditTrail.requestMethod = 'GET' and auditTrail.entityType = 'user'`), + of attribute comparisons. Attribute comparisons can be: + - scalar, using `=`, `!=` comparison operators (i.e. `auditTrail.teamName = 'Test team'`) + type: string + example: auditTrail.requestMethod = 'GET' and auditTrail.entityType = 'user' + maxLength: 2048 + AuditEventsFeedLimit: + description: The number of items to return + type: integer + format: int32 + minimum: 1 + maximum: 999 + default: 100 + example: 50 + AuditPage: + type: object + description: Pagination information. + required: + - total + properties: + total: + type: integer + format: int64 + description: | + The number of events matching the search criteria. This number is always major or equal to the number of events returned. + example: 10 + minimum: 0 + maximum: 9223372036854776000 + prev: + type: string + description: | + `prev` is a string pointing to the previous page of data. + Use this as the `cursor` to get the previous page of data. + example: LTltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 512 + next: + type: string + description: "`next` is a string pointing to the next page of data.\nUse this as the `cursor` to scroll paginated results and get the next page of data. \nIf not included, the current response is the last page.\n" + example: KzltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 512 + AuditTrailContent: + description: Content object for Platform Audit Event. + properties: + timestampNs: + type: integer + format: int64 + description: The event timestamp in nanoseconds. + example: 1617220000000000000 + maximum: 9223372036854776000 + minimum: 0 + userId: + type: integer + description: ID of user that was preforming some action. + format: int32 + minimum: 0 + maximum: 2147483647 + example: 122 + username: + type: string + description: Username of the user that was preforming some action. + maxLength: 64 + example: joendoe + teamId: + type: integer + description: Team ID, that user who preformed some action was logged in. + format: int32 + minimum: 0 + maximum: 2147483647 + example: 13 + teamName: + type: string + description: Name of the team, that user who preformed action was logged in. + maxLength: 256 + example: Security Operations + requestMethod: + type: string + description: HTTP request method that was used to preform action. + enum: + - GET + - POST + - PUT + - DELETE + - PATCH + example: GET + requestUri: + type: string + description: URI of the request that was used to preform action. + maxLength: 4096 + example: /api/v1/audit + userOriginIP: + type: string + description: IP address of the user that was preforming action. + format: ipv4 or ipv6 + maxLength: 43 + example: 22.220.145.219 + queryString: + type: string + description: Query string of the request that was used to preform action. + maxLength: 8192 + example: controlId=1&resourceKind=workload + responseStatusCode: + type: integer + description: HTTP response status code of the request that was used to preform action. + format: int32 + minimum: 0 + maximum: 2147483647 + example: 200 + entityType: + type: string + description: | + Type of entity that was affected by the action. Full list of possible values can be found in the our documentation + https://docs.sysdig.com/en/docs/administration/administration-settings/app-status-and-audit/sysdig-platform-audit/#sysdig-monitor-and-sysdig-platform. + maxLength: 64 + example: policy + entityId: + type: string + description: ID of the entity that was affected by the action. + maxLength: 64 + example: '' + entityPayload: + type: string + description: Payload of the entity that was affected by the action. + maxLength: 1024 + example: SAMLResponse=***&RelayState=%23%2F%26customer%3D5 + serviceAccountId: + type: integer + description: ID of the service account that was used to preform action. + format: int32 + minimum: 0 + maximum: 2147483647 + example: 123 + serviceAccountName: + type: string + description: Name of the service account that was used to preform action. + maxLength: 256 + example: service-account-1 + AuditEvent: + description: Platform Audit Event + properties: + id: + type: string + description: The event id. + example: 15cbf54e34df95404caad1c988cf7c42 + maxLength: 32 + cursor: + type: string + description: | + The cursor that can be used to fetch a set of events surrounding + this same event. By providing this value as `cursor` in a GET + request, you will get the set of events surrounding + this current event. + example: LTltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 64 + timestamp: + type: integer + format: int64 + description: The event timestamp in nanoseconds. + example: 1617220000000000000 + maximum: 9223372036854776000 + minimum: 0 + content: + $ref: '#/components/schemas/AuditTrailContent' + labels: + type: object + description: | + Key value pairs of values, represents entityType where the Audit Event was generated. + additionalProperties: + type: string + maxLength: 256 + example: entityType:auth + example: + entityType: auth + ListAuditEventsResponse: + type: object + description: The list of events matching a search criteria. + required: + - page + - data + properties: + page: + $ref: '#/components/schemas/AuditPage' + data: + description: The list of Audit events. + type: array + items: + $ref: '#/components/schemas/AuditEvent' + maxItems: 999 + CheckboxFieldValueV1: + title: Jira Checkbox Field Value V1 + type: object + required: + - id + - value + properties: + id: + description: Jira checkbox field id. + type: string + maxLength: 512 + example: id + x-go-name: ID + x-order: 1 + value: + description: Jira checkbox field value. + type: string + maxLength: 512 + example: value + x-order: 2 + IssueTypeFieldResponseV1: + title: Jira Issue Type Field Response V1 + type: object + required: + - id + - jiraId + - jiraName + - type + - isRequired + - hasDefaultValue + properties: + id: + description: Issue type field id. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + x-go-name: ID + x-order: 1 + jiraId: + description: Issue type field id on Jira. + type: string + maxLength: 512 + example: jira-id + x-go-name: JiraID + x-order: 2 + jiraName: + description: Jira issue type field name. + type: string + maxLength: 512 + example: jira-name + x-order: 3 + type: + description: Issue type field type. + type: string + enum: + - user + - checkbox + - number + - label + - text + - document + example: checkbox + x-order: 4 + isRequired: + description: Indicates if the field is required. + type: boolean + example: true + x-order: 5 + hasDefaultValue: + description: Indicates if the field has a default value. + type: boolean + example: false + x-order: 6 + allowedValues: + description: Allowed values for the field. + type: array + maxItems: 500 + x-order: 7 + items: + oneOf: + - $ref: '#/components/schemas/CheckboxFieldValueV1' + IssueTypeResponseV1: + title: Jira Issue Type Response V1 + type: object + required: + - id + - jiraId + - jiraName + - jiraHierarchyLevel + - jiraOpenStatusId + - jiraInProgressStatusId + - jiraClosedStatusId + - standardFields + properties: + id: + description: Issue type ID. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + x-go-name: ID + x-order: 1 + jiraId: + description: Issue type ID on Jira. + type: string + maxLength: 512 + example: '1' + x-go-name: JiraID + x-order: 2 + jiraName: + description: Jira issue type name. + type: string + maxLength: 512 + example: jira-name + x-order: 3 + jiraHierarchyLevel: + description: Issue type hierarchy level on Jira. + type: integer + format: int32 + minimum: 1 + maximum: 2147483647 + example: 1 + x-order: 4 + jiraOpenStatusId: + description: Jira status ID mapped to open status. + type: string + maxLength: 512 + example: '1000' + x-go-name: JiraOpenStatusID + x-order: 5 + jiraInProgressStatusId: + description: Jira status ID mapped to in progress status. + type: string + maxLength: 512 + example: '1001' + x-go-name: JiraInProgressStatusID + x-order: 6 + jiraClosedStatusId: + description: Jira status ID mapped to closed status. + type: string + maxLength: 512 + example: '1002' + x-go-name: JiraClosedStatusID + x-order: 7 + standardFields: + description: Standard fields for the issue type. + type: array + maxItems: 500 + x-order: 8 + items: + $ref: '#/components/schemas/IssueTypeFieldResponseV1' + customFields: + description: Custom fields for the issue type. + type: array + maxItems: 500 + x-order: 9 + items: + $ref: '#/components/schemas/IssueTypeFieldResponseV1' + IntegrationResponseV1: + title: Jira Integration Response V1 + type: object + required: + - id + - name + - createdAt + - modifiedAt + - customerId + - isEnabled + - isValid + - isAllTeams + - jiraProjectId + - jiraUrl + - jiraEmail + properties: + id: + description: Integration id. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + x-go-name: ID + x-order: 1 + name: + description: Integration name. + type: string + maxLength: 512 + example: name + x-order: 2 + createdAt: + description: Integration creation date. + type: string + format: date-time + maxLength: 64 + example: '2023-09-06T12:30:45Z' + x-order: 3 + modifiedAt: + description: Integration modification date. + type: string + format: date-time + maxLength: 64 + example: '2023-09-06T12:30:45Z' + x-order: 4 + deletedAt: + description: Integration deletion date. + type: string + format: date-time + maxLength: 64 + example: '2023-09-06T12:30:45Z' + x-order: 5 + customerId: + description: Customer identifier for which the integration was created. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + x-go-name: CustomerID + x-order: 6 + isEnabled: + description: Integration enabled status. + type: boolean + example: false + x-order: 7 + isValid: + description: Integration valid status. + type: boolean + example: false + x-order: 8 + isAllTeams: + description: | + **True** if the integration is enabled for all teams, **false** otherwise and the *teamIds* for which is accessible will be defined. + type: boolean + example: false + x-order: 9 + teamIds: + description: The list of internal Sysdig team ids that the integration is enabled for. + type: array + maxItems: 500 + x-go-name: TeamIDs + x-order: 10 + items: + $ref: '#/components/schemas/UnlimitedLong' + jiraProjectId: + description: Jira project id. + type: string + maxLength: 512 + example: '10000' + x-go-name: JiraProjectID + x-order: 11 + jiraProjectName: + description: Jira project name. + type: string + maxLength: 512 + example: jira-project-name + x-order: 12 + jiraUrl: + description: Customer's Jira URL. + type: string + format: url + maxLength: 512 + example: https://atlassian-url.com + x-go-name: JiraURL + x-order: 13 + jiraEmail: + description: User's Jira email. + type: string + format: email + maxLength: 512 + example: jira.user@email.com + x-order: 14 + jiraAssignee: + description: The default assignee account id for this integration. + type: string + maxLength: 512 + example: 5b10ac8d82e05b22cc7d4ef5 + x-order: 15 + jiraLabels: + description: The list of labels available for this integration. + type: array + maxItems: 500 + x-order: 16 + items: + type: string + maxLength: 512 + example: label + parentIssueType: + description: Parent issue type for the integration. + allOf: + - $ref: '#/components/schemas/IssueTypeResponseV1' + x-order: 17 + childIssueType: + description: Child issue type for the integration. + allOf: + - $ref: '#/components/schemas/IssueTypeResponseV1' + x-order: 18 + PaginatedIntegrationsResponseV1: + title: Jira Integrations Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + maxItems: 500 + items: + $ref: '#/components/schemas/IntegrationResponseV1' + CreateIntegrationRequestV1: + title: Create Jira Integration Request V1 + type: object + required: + - name + - jiraProject + - jiraUrl + - jiraEmail + - jiraAccessToken + properties: + name: + description: Integration name. + type: string + maxLength: 512 + example: name + x-order: 1 + isAllTeams: + description: | + If **true**, the integration will be enabled for all teams. + If **false**, the integration will be enabled for the teams specified in the *teamIds* field. + type: boolean + example: false + x-order: 2 + teamIds: + description: | + List of Sysdig's internal team ids for which the integration will be enabled. + This field is required if *isAllTeams* is **false**. + type: array + maxItems: 500 + x-go-name: TeamIDs + x-order: 3 + items: + $ref: '#/components/schemas/UnlimitedLong' + jiraProject: + description: | + Associated Jira project id. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects#api-group-projects "Jira project documentation") for more info. + type: string + maxLength: 512 + example: '10000' + x-order: 4 + jiraUrl: + description: Customer's Jira URL. + type: string + format: url + maxLength: 512 + example: https://atlassian-url.com + x-go-name: JiraURL + x-order: 5 + jiraEmail: + description: User's email associated with the Jira account. + type: string + format: email + maxLength: 512 + example: jira.user@email.com + x-order: 6 + jiraAccessToken: + description: Jira access token for the provided Jira account. + type: string + maxLength: 512 + example: jira-access-token + x-order: 7 + jiraAssignee: + description: | + The default assignee Jira account id for this integration. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-user-search/#api-group-user-search "Jira user documentation") for more info. + type: string + maxLength: 512 + example: 5b10ac8d82e05b22cc7d4ef5 + x-order: 8 + jiraLabels: + description: | + The list of Jira labels available for this integration. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-labels/#api-group-labels "Jira labels documentation") for more info. + type: array + maxItems: 500 + x-order: 9 + items: + type: string + maxLength: 512 + example: label + UpdateIntegrationRequestV1: + title: Update Jira Integration Request V1 + type: object + required: + - name + - isEnabled + - isAllTeams + - teamIds + - jiraUrl + - jiraEmail + - jiraAccessToken + - jiraAssignee + - jiraLabels + - parentIssueTypeId + - childIssueTypeId + properties: + name: + description: Integration name. + type: string + maxLength: 512 + example: name + x-order: 1 + isEnabled: + description: Integration enabled status. + type: boolean + x-go-type: '*bool' + example: false + x-order: 2 + isAllTeams: + description: | + If **true**, the integration will be enabled for all teams. + If **false**, the integration will be enabled for the teams specified in the *teamIds* field. + type: boolean + x-go-type: '*bool' + example: false + x-order: 3 + teamIds: + description: | + List of Sysdig's internal team ids for which the integration will be enabled. + This field is required if *isAllTeams* is **false**. + type: array + maxItems: 500 + x-go-name: TeamIDs + x-order: 4 + items: + $ref: '#/components/schemas/UnlimitedLong' + jiraUrl: + description: Customer's Jira URL. + type: string + format: url + maxLength: 512 + example: https://atlassian-url.com + x-go-name: JiraURL + x-order: 5 + jiraEmail: + description: The user email associated with the Jira account. + type: string + format: email + maxLength: 512 + example: jira.user@email.com + x-order: 6 + jiraAccessToken: + description: Jira access token for the provided Jira account. + type: string + maxLength: 512 + example: jira-access-token + x-order: 7 + jiraAssignee: + description: | + The default assignee Jira account ID for this integration. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-user-search/#api-group-user-search "Jira user documentation") for more info. + type: string + nullable: true + maxLength: 512 + example: 5b10ac8d82e05b22cc7d4ef5 + x-order: 8 + jiraLabels: + description: | + The list of Jira labels available for this integration. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-labels/#api-group-labels "Jira labels documentation") for more info. + type: array + maxItems: 500 + x-order: 9 + items: + type: string + maxLength: 512 + example: label + parentIssueTypeId: + description: | + Internal Sysdig's issue type id, which will act as a parent issue type for the integration. + nullable: true + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + x-go-name: ParentIssueTypeID + x-order: 10 + childIssueTypeId: + description: | + Internal Sysdig's issue type id, which will act as a child issue type for the integration. + nullable: true + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + x-go-name: ChildIssueTypeID + x-order: 11 + IssueTypesResponseV1: + title: Jira Issue Types Response V1 + type: object + properties: + data: + description: List of issue types. + type: array + maxItems: 500 + items: + $ref: '#/components/schemas/IssueTypeResponseV1' + CreateIssueTypeRequestV1: + title: Create Jira Issue Type Request V1 + type: object + required: + - jiraId + - jiraOpenStatusId + - jiraInProgressStatusId + - jiraClosedStatusId + properties: + jiraId: + description: | + Jira issue type id. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-types/#api-group-issue-types "Jira issue types documentation") for more info. + type: string + maxLength: 512 + example: '1' + x-go-name: JiraID + x-order: 1 + jiraOpenStatusId: + description: | + Jira status id mapped to open status. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. + type: string + maxLength: 512 + example: '1000' + x-go-name: JiraOpenStatusID + x-order: 2 + jiraInProgressStatusId: + description: | + Jira status id mapped to in progress status. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. + type: string + maxLength: 512 + example: '1001' + x-go-name: JiraInProgressStatusID + x-order: 3 + jiraClosedStatusId: + description: | + Jira status id mapped to closed status. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. + type: string + maxLength: 512 + example: '1002' + x-go-name: JiraClosedStatusID + x-order: 4 + customFieldIds: + description: | + List of supported custom field ids for the issue type. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-createmeta-get "Jira issue type fields documentation") for more info. + type: array + maxItems: 500 + x-go-name: CustomFieldIDs + x-order: 5 + items: + type: string + maxLength: 512 + example: custom-field-id + UpdateIssueTypeRequestV1: + title: Update Jira Issue Type Request V1 + type: object + required: + - jiraOpenStatusId + - jiraInProgressStatusId + - jiraClosedStatusId + - customFieldIds + properties: + jiraOpenStatusId: + description: | + Jira status id mapped to open status. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. + type: string + maxLength: 512 + example: '1000' + x-go-name: JiraOpenStatusID + x-order: 1 + jiraInProgressStatusId: + description: | + Jira status id mapped to in progress status. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. + type: string + maxLength: 512 + example: '1001' + x-go-name: JiraInProgressStatusID + x-order: 2 + jiraClosedStatusId: + description: | + Jira status id mapped to closed status. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. + type: string + maxLength: 512 + example: '1002' + x-go-name: JiraClosedStatusID + x-order: 3 + customFieldIds: + description: | + List of supported custom field ids for the issue type. + Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-createmeta-get "Jira issue type fields documentation") for more info. + type: array + maxItems: 500 + x-go-name: CustomFieldIDs + x-order: 4 + items: + type: string + maxLength: 512 + example: custom-field-id + NotificationChannelResponseV1: + title: Notification Channel Response v1 + allOf: + - type: object + description: Notification Channel Response Base Schema + required: + - type + properties: + type: + type: string + maxLength: 50 + example: EMAIL + customerId: + description: ID of customer that owns the notification channel. + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 12 + id: + description: Unique ID of the resource. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + version: + description: The current version of the resource. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + createdOn: + description: Creation date. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + modifiedOn: + description: Last modification date. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + discriminator: + propertyName: type + mapping: + CUSTOM_WEBHOOK: '#/components/schemas/CustomWebhookNotificationChannelResponseV1' + EMAIL: '#/components/schemas/EmailNotificationChannelResponseV1' + GCHAT: '#/components/schemas/GchatNotificationChannelResponseV1' + IBM_EVENT_NOTIFICATIONS: '#/components/schemas/IbmEventNotificationsNotificationChannelResponseV1' + MS_TEAMS: '#/components/schemas/MsTeamsNotificationChannelResponseV1' + OPSGENIE: '#/components/schemas/OpsgenieNotificationChannelResponseV1' + PAGER_DUTY: '#/components/schemas/PagerDutyNotificationChannelResponseV1' + PROMETHEUS_ALERT_MANAGER: '#/components/schemas/PrometheusAlertManagerNotificationChannelResponseV1' + SLACK: '#/components/schemas/SlackNotificationChannelResponseV1' + SNS: '#/components/schemas/SnsNotificationChannelResponseV1' + TEAM_EMAIL: '#/components/schemas/TeamEmailNotificationChannelResponseV1' + VICTOROPS: '#/components/schemas/VictorOpsNotificationChannelResponseV1' + WEBHOOK: '#/components/schemas/WebhookNotificationChannelResponseV1' + NotificationChannelV1: + title: Notification Channel V1 + type: object + required: + - name + properties: + teamId: + description: ID of team that owns the notification channel. If null, this will be a global notification channel + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 13 + nullable: true + isEnabled: + type: boolean + default: false + description: Indicates if the notification channel is enabled or not. + example: false + name: + type: string + description: Name of the notification channel. It must be unique. + example: Sample Notification Channel Name + maxLength: 255 + hasTestNotificationEnabled: + type: boolean + description: Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource + example: false + default: false + NotificationChannelOptionsV1: + title: Notification Channel Options V1 + type: object + properties: + hasHidingOfSensitiveInfo: + description: Whether the notification info should be hidden when notifications are sent to this notification channel + type: boolean + example: true + CustomWebhookNotificationChannelOptionsV1: + title: Custom Webhook Notification Channel Options V1 + description: The custom webhook notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + required: + - url + - template + properties: + url: + description: The url to which the request should be sent + type: string + maxLength: 255 + example: http://some-website/some-path + template: + description: The custom template used by this webhook, currently a JSON potentially enriched by Sysdig Templating Language + type: string + maxLength: 16384 + example: '{"test" : "notification"}' + httpMethod: + description: The HTTP method to use when doing the request to the target url + type: string + default: POST + example: PUT + enum: + - GET + - POST + - PUT + - DELETE + - PATCH + isAllowsInsecureConnections: + description: Specifies if the channel allows insecure connections (e.g. plain http, self-signed https) + type: boolean + example: false + additionalHeaders: + description: Additional headers to send as part of the request to the target url + type: object + additionalProperties: + type: string + maxLength: 255 + example: CUSTOM_HEADER + maxProperties: 10 + CustomWebhookNotificationChannelResponseV1: + type: object + title: Custom Webhook Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - $ref: '#/components/schemas/NotificationChannelV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/CustomWebhookNotificationChannelOptionsV1' + EmailNotificationChannelOptionsV1: + title: Email Notification Channel Options V1 + description: The email notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + properties: + emailRecipients: + type: array + description: List of email recipients to which notifications should be sent + minItems: 1 + maxItems: 100 + uniqueItems: true + items: + type: string + format: email + maxLength: 255 + example: test@sysdig.com + required: + - emailRecipients + EmailNotificationChannelResponseV1: + type: object + title: Email Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/EmailNotificationChannelOptionsV1' + GchatNotificationChannelOptionsV1: + title: Google Chat Notification Channel Options V1 + description: The Google Chat notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + required: + - url + properties: + url: + type: string + description: Google Chat Webhook URL + maxLength: 255 + example: https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=KEY&token=TOKEN + GchatNotificationChannelResponseV1: + type: object + title: Google Chat Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/GchatNotificationChannelOptionsV1' + IbmEventNotificationsNotificationChannelOptionsV1: + title: IBM Event Notifications Notification Channel Options V1 + description: The IBM Event Notifications notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + required: + - instanceId + properties: + instanceId: + description: The IBM Event Notification Service Instance Id + type: string + maxLength: 255 + example: service-instance-id + IbmEventNotificationsNotificationChannelResponseV1: + type: object + title: IBM Event Notifications Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/IbmEventNotificationsNotificationChannelOptionsV1' + MsTeamsNotificationChannelOptionsV1: + title: Microsoft Teams Notification Channel Options V1 + description: The Microsoft Teams notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + required: + - url + properties: + url: + type: string + description: Microsoft Teams Webhook URL + maxLength: 255 + example: https://xxxxxx.webhook.office.com/webhookb2/00000000-0000-0000-0000-000000000000@11111111-1111-1111-1111-111111111111/IncomingWebhook/00000000000000000000000000000000/22222222-2222-2222-2222-222222222222 + MsTeamsNotificationChannelResponseV1: + type: object + title: Microsoft Teams Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/MsTeamsNotificationChannelOptionsV1' + OpsgenieNotificationChannelOptionsV1: + title: Opsgenie Notification Channel Options V1 + description: The Opsgenie notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + required: + - apiKey + properties: + region: + description: The Opsgenie region to use + type: string + example: US + enum: + - US + - EU + apiKey: + description: The Opsgenie api key + type: string + maxLength: 255 + example: opsgenie-api-key + OpsgenieNotificationChannelResponseV1: + type: object + title: Opsgenie Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/OpsgenieNotificationChannelOptionsV1' + PagerDutyNotificationChannelOptionsV1: + title: PagerDuty Notification Channel Options V1 + description: The PagerDuty notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + required: + - account + - serviceKey + - serviceName + properties: + account: + description: The PagerDuty account used for the integration + type: string + maxLength: 255 + example: myPagerDutyUser + serviceKey: + description: The PagerDuty service integration key + type: string + maxLength: 255 + example: myPagerDutyServiceKey + serviceName: + description: The PagerDuty service name + type: string + maxLength: 255 + example: myPagerDutyService + PagerDutyNotificationChannelResponseV1: + type: object + title: PagerDuty Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/PagerDutyNotificationChannelOptionsV1' + PrometheusAlertManagerNotificationChannelOptionsV1: + title: Prometheus Alert Manager Notification Channel Options V1 + description: The Prometheus Alert Manager notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + required: + - url + properties: + url: + description: The prometheus alert manager url to which the request should be posted + type: string + maxLength: 255 + example: http://some-website/some-path + isAllowsInsecureConnections: + description: Specifies if the channel allows insecure connections (e.g. plain http, self-signed https) + type: boolean + example: false + additionalHeaders: + description: Additional headers to send in the request to the alert manager url + type: object + additionalProperties: + type: string + example: CUSTOM_HEADER + maxLength: 255 + maxProperties: 10 + PrometheusAlertManagerNotificationChannelResponseV1: + type: object + title: Prometheus Alert Manager Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/PrometheusAlertManagerNotificationChannelOptionsV1' + SlackBaseNotificationChannelOptionsV1: + title: Slack Base Notification Channel Options V1 + description: The Slack base notification channel options + type: object + required: + - url + properties: + channel: + description: The name of the Slack channel the user selected as a destination for messages. + type: string + maxLength: 255 + example: \@some.user + url: + description: The Slack webhook URL + type: string + maxLength: 255 + example: https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX + SlackCreateNotificationChannelOptionsV1: + title: Slack Create Notification Channel Options V1 + description: The Slack create notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - $ref: '#/components/schemas/SlackBaseNotificationChannelOptionsV1' + - type: object + properties: + isPrivateChannel: + description: Whether the Slack channel is private or not + type: boolean + example: false + privateChannelUrl: + description: The channel URL, if channel is private + type: string + example: https://app.slack.com/client/TXXXXXXXX/CXXXXXXXXXX + maxLength: 255 + SlackReadNotificationChannelOptionsV1: + title: Slack Read Notification Channel Options V1 + description: The Slack read notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - $ref: '#/components/schemas/SlackCreateNotificationChannelOptionsV1' + - type: object + properties: + channelCreatorUserId: + description: The ID of the user that created the channel. + type: integer + format: int64 + minimum: 0 + maximum: 99999999999999 + example: 1234 + SlackNotificationChannelResponseV1: + type: object + title: Slack Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/SlackReadNotificationChannelOptionsV1' + SnsNotificationChannelOptionsV1: + title: Amazon SNS Notification Channel Options V1 + description: The Amazon SNS notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + properties: + snsTopicArns: + type: array + description: List of sns topic ARNs (Amazon Resource Names) to which notifications should be sent + maxItems: 100 + uniqueItems: true + items: + type: string + maxLength: 256 + example: arn:aws:sns:us-east-1:123456789012:mytopic-ABCDEFGHIJ01. + SnsNotificationChannelResponseV1: + type: object + title: Amazon SNS Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/SnsNotificationChannelOptionsV1' + TeamEmailNotificationChannelOptionsV1: + title: Team Email Notification Channel Options V1 + description: The Team Email notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + properties: + teamId: + description: ID of team to notify + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 13 + isIncludeAdminUsers: + description: Whether the admin users of the team should be notified or not + type: boolean + example: false + TeamEmailNotificationChannelResponseV1: + type: object + title: Team Email Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/TeamEmailNotificationChannelOptionsV1' + VictorOpsNotificationChannelOptionsV1: + title: VictorOps Notification Channel Options V1 + description: The VictorOps notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + properties: + apiKey: + description: The VictorOps api key + type: string + maxLength: 255 + example: my-api-key + routingKey: + description: The VictorOps routing key + type: string + maxLength: 255 + example: my-routing-key + VictorOpsNotificationChannelResponseV1: + type: object + title: VictorOps Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/VictorOpsNotificationChannelOptionsV1' + WebhookNotificationChannelOptionsV1: + title: Webhook Notification Channel Options V1 + description: The Webhook notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - type: object + properties: + url: + description: The url to which the request should be posted + type: string + maxLength: 255 + example: http://some-website/some-path + isAllowsInsecureConnections: + description: Specifies if the channel allows insecure connections (e.g. plain http, self-signed https) + type: boolean + example: false + additionalHeaders: + description: Additional headers to send in the request to the target url + type: object + additionalProperties: + type: string + example: CUSTOM_HEADER + maxLength: 255 + maxProperties: 10 + customData: + description: Additional data to be added to the template rendering context + type: object + additionalProperties: + type: object + example: + testField: testValue + maxProperties: 50 + WebhookNotificationChannelResponseV1: + type: object + title: Webhook Notification Channel Response V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/NotificationChannelResponseV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/WebhookNotificationChannelOptionsV1' + GetNotificationChannelsPaginatedResponseV1: + title: Get Notification Channels Response v1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/NotificationChannelResponseV1' + maxItems: 200 + CreateNotificationChannelRequestV1: + title: Create Notification Channel Request V1 + allOf: + - type: object + required: + - type + properties: + type: + $ref: '#/components/schemas/NotificationChannelTypeV1' + discriminator: + propertyName: type + mapping: + CUSTOM_WEBHOOK: '#/components/schemas/CreateCustomWebhookNotificationChannelRequestV1' + EMAIL: '#/components/schemas/CreateEmailNotificationChannelRequestV1' + GCHAT: '#/components/schemas/CreateGchatNotificationChannelRequestV1' + IBM_EVENT_NOTIFICATIONS: '#/components/schemas/CreateIbmEventNotificationsNotificationChannelRequestV1' + MS_TEAMS: '#/components/schemas/CreateMsTeamsNotificationChannelRequestV1' + OPSGENIE: '#/components/schemas/CreateOpsgenieNotificationChannelRequestV1' + PAGER_DUTY: '#/components/schemas/CreatePagerDutyNotificationChannelRequestV1' + PROMETHEUS_ALERT_MANAGER: '#/components/schemas/CreatePrometheusAlertManagerNotificationChannelRequestV1' + SLACK: '#/components/schemas/CreateSlackNotificationChannelRequestV1' + SNS: '#/components/schemas/CreateSnsNotificationChannelRequestV1' + TEAM_EMAIL: '#/components/schemas/CreateTeamEmailNotificationChannelRequestV1' + VICTOROPS: '#/components/schemas/CreateVictorOpsNotificationChannelRequestV1' + WEBHOOK: '#/components/schemas/CreateWebhookNotificationChannelRequestV1' + CreateCustomWebhookNotificationChannelRequestV1: + type: object + title: Create Custom Webhook Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - $ref: '#/components/schemas/NotificationChannelV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/CustomWebhookNotificationChannelOptionsV1' + CreateEmailNotificationChannelRequestV1: + type: object + title: Create Email Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - $ref: '#/components/schemas/NotificationChannelV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/EmailNotificationChannelOptionsV1' + CreateGchatNotificationChannelRequestV1: + type: object + title: Create Google Chat Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/GchatNotificationChannelOptionsV1' + CreateIbmEventNotificationsNotificationChannelRequestV1: + type: object + title: Create IBM Event Notifications Notification Channel Request V1 + description: This channel is only available in IBM Cloud + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/IbmEventNotificationsNotificationChannelOptionsV1' + CreateMsTeamsNotificationChannelRequestV1: + type: object + title: Create Microsoft Teams Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/MsTeamsNotificationChannelOptionsV1' + CreateOpsgenieNotificationChannelRequestV1: + type: object + title: Create Opsgenie Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/OpsgenieNotificationChannelOptionsV1' + CreatePagerDutyNotificationChannelRequestV1: + type: object + title: Create PagerDuty Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/PagerDutyNotificationChannelOptionsV1' + CreatePrometheusAlertManagerNotificationChannelRequestV1: + type: object + title: Create Prometheus Alert Manager Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/PrometheusAlertManagerNotificationChannelOptionsV1' + CreateSlackNotificationChannelRequestV1: + type: object + title: Create Slack Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/SlackCreateNotificationChannelOptionsV1' + CreateSnsNotificationChannelRequestV1: + type: object + title: Create Amazon SNS Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/SnsNotificationChannelOptionsV1' + CreateTeamEmailNotificationChannelRequestV1: + type: object + title: Create Team Email Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/TeamEmailNotificationChannelOptionsV1' + CreateVictorOpsNotificationChannelRequestV1: + type: object + title: Create VictorOps Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/VictorOpsNotificationChannelOptionsV1' + CreateWebhookNotificationChannelRequestV1: + type: object + title: Create Webhook Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/CreateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/WebhookNotificationChannelOptionsV1' + NotificationChannelTypeV1: + title: Notification Channel Type + description: The type of the notification channel + type: string + example: EMAIL + enum: + - EMAIL + - SNS + - SLACK + - PAGER_DUTY + - VICTOROPS + - OPSGENIE + - WEBHOOK + - CUSTOM_WEBHOOK + - MS_TEAMS + - TEAM_EMAIL + - IBM_EVENT_NOTIFICATIONS + - PROMETHEUS_ALERT_MANAGER + - GCHAT + UpdateNotificationChannelRequestV1: + title: Update Notification Channel Request V1 + allOf: + - type: object + required: + - type + properties: + type: + $ref: '#/components/schemas/NotificationChannelTypeV1' + version: + description: The current version of the resource. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + discriminator: + propertyName: type + mapping: + CUSTOM_WEBHOOK: '#/components/schemas/UpdateCustomWebhookNotificationChannelRequestV1' + EMAIL: '#/components/schemas/UpdateEmailNotificationChannelRequestV1' + GCHAT: '#/components/schemas/UpdateGchatNotificationChannelRequestV1' + IBM_EVENT_NOTIFICATIONS: '#/components/schemas/UpdateIbmEventNotificationsNotificationChannelRequestV1' + MS_TEAMS: '#/components/schemas/UpdateMsTeamsNotificationChannelRequestV1' + OPSGENIE: '#/components/schemas/UpdateOpsgenieNotificationChannelRequestV1' + PAGER_DUTY: '#/components/schemas/UpdatePagerDutyNotificationChannelRequestV1' + PROMETHEUS_ALERT_MANAGER: '#/components/schemas/UpdatePrometheusAlertManagerNotificationChannelRequestV1' + SLACK: '#/components/schemas/UpdateSlackNotificationChannelRequestV1' + SNS: '#/components/schemas/UpdateSnsNotificationChannelRequestV1' + TEAM_EMAIL: '#/components/schemas/UpdateTeamEmailNotificationChannelRequestV1' + VICTOROPS: '#/components/schemas/UpdateVictorOpsNotificationChannelRequestV1' + WEBHOOK: '#/components/schemas/UpdateWebhookNotificationChannelRequestV1' + UpdateCustomWebhookNotificationChannelRequestV1: + type: object + title: Update Custom Webhook Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - $ref: '#/components/schemas/NotificationChannelV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/CustomWebhookNotificationChannelOptionsV1' + UpdateEmailNotificationChannelRequestV1: + type: object + title: Update Email Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/EmailNotificationChannelOptionsV1' + UpdateGchatNotificationChannelRequestV1: + type: object + title: Update Google Chat Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/GchatNotificationChannelOptionsV1' + UpdateIbmEventNotificationsNotificationChannelRequestV1: + type: object + title: Update IBM Event Notifications Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/IbmEventNotificationsNotificationChannelOptionsV1' + UpdateMsTeamsNotificationChannelRequestV1: + type: object + title: Update Microsoft Teams Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/MsTeamsNotificationChannelOptionsV1' + UpdateOpsgenieNotificationChannelRequestV1: + type: object + title: Update Opsgenie Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/OpsgenieNotificationChannelOptionsV1' + UpdatePagerDutyNotificationChannelRequestV1: + type: object + title: Update PagerDuty Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/PagerDutyNotificationChannelOptionsV1' + UpdatePrometheusAlertManagerNotificationChannelRequestV1: + type: object + title: Update Prometheus Alert Manager Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/PrometheusAlertManagerNotificationChannelOptionsV1' + SlackUpdateNotificationChannelOptionsV1: + title: Slack Update Notification Channel Options V1 + description: The Slack update notification channel options + allOf: + - $ref: '#/components/schemas/NotificationChannelOptionsV1' + - $ref: '#/components/schemas/SlackBaseNotificationChannelOptionsV1' + UpdateSlackNotificationChannelRequestV1: + type: object + title: Update Slack Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/SlackUpdateNotificationChannelOptionsV1' + UpdateSnsNotificationChannelRequestV1: + type: object + title: Update Amazon SNS Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/SnsNotificationChannelOptionsV1' + UpdateTeamEmailNotificationChannelRequestV1: + type: object + title: Update Team Email Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/TeamEmailNotificationChannelOptionsV1' + UpdateVictorOpsNotificationChannelRequestV1: + type: object + title: Update VictorOps Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/VictorOpsNotificationChannelOptionsV1' + UpdateWebhookNotificationChannelRequestV1: + type: object + title: Update Webhook Notification Channel Request V1 + allOf: + - $ref: '#/components/schemas/NotificationChannelV1' + - $ref: '#/components/schemas/UpdateNotificationChannelRequestV1' + - type: object + required: + - options + properties: + options: + $ref: '#/components/schemas/WebhookNotificationChannelOptionsV1' + TeamRoleV1: + title: Team Role + description: The standard team role provided by Sysdig. + type: string + example: ROLE_TEAM_READ + enum: + - ROLE_TEAM_NONE + - ROLE_TEAM_READ + - ROLE_TEAM_SERVICE_MANAGER + - ROLE_TEAM_STANDARD + - ROLE_TEAM_EDIT + - ROLE_TEAM_MANAGER + Product: + title: Sysdig Product + description: The Sysdig product + type: string + example: secure + enum: + - monitor + - secure + EntryPointModuleV1: + title: Entry Point Module + type: string + description: The Module is the area in Sysdig Monitor. + example: Alerts + enum: + - Alerts + - Dashboards + - Events + - Explore + - Overview + - Settings + - DashboardTemplates + EntryPointV1: + title: Entry Point + type: object + description: | + The page you see after logging into Sysdig UI. It is defined by a Module and a Selection. + **The Entry Point is not supported in Sysdig Secure.** + properties: + module: + $ref: '#/components/schemas/EntryPointModuleV1' + selection: + type: string + description: | + The selection is the specific page within the Module, usually defined by the resource ID. + It is supported only supported by **Dashboards** and **DashboardTemplates** Modules. + example: '2231245' + maxLength: 128 + nullable: true + UiSettingsV1: + title: UiSettings + type: object + description: UI related settings. + properties: + entryPoint: + $ref: '#/components/schemas/EntryPointV1' + theme: + type: string + description: The color assigned to the team. + example: '#112233' + maxLength: 7 + ScopeTypeV1: + title: Scope Type + type: string + example: PROMETHEUS_REMOTE_WRITE + enum: + - AGENT + - AWS_CLOUD_WATCH + - HOST_CONTAINER + - IBM_PLATFORM_METRICS + - PROMETHEUS_REMOTE_WRITE + ScopeV1: + title: Scope + type: object + required: + - type + - expression + properties: + type: + $ref: '#/components/schemas/ScopeTypeV1' + expression: + type: string + maxLength: 65356 + example: kubernetes.cluster.name in ("test-env") + AdditionalTeamPermissionsV1: + title: Additional Team Permissions + type: object + description: Additional permissions available to the users of the team. + properties: + hasSysdigCaptures: + description: Enable the Sysdig captures feature for this team. + type: boolean + default: false + example: false + hasInfrastructureEvents: + type: boolean + default: false + example: false + hasAwsData: + type: boolean + default: false + example: false + hasRapidResponse: + type: boolean + default: false + example: false + hasAgentCli: + type: boolean + default: false + example: false + hasBeaconMetrics: + type: boolean + default: false + example: false + TeamResponseV1: + type: object + title: Team Response V1 + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + name: + description: The name of the team. It must be unique. + type: string + example: Scanning operations + maxLength: 256 + description: + description: A description of the team explaining what is it used for. + type: string + maxLength: 2048 + example: This team has access to scanning results + nullable: true + isImmutableTeam: + description: Specifies if the team is immutable. This is true if the team was created by the system with full access. It cannot be modified. + type: boolean + example: false + isDefaultTeam: + description: Specifies if the team is the default team. The default team is used to automatically assign new users to a team. + type: boolean + example: false + standardTeamRole: + allOf: + - $ref: '#/components/schemas/TeamRoleV1' + description: | + The standard team role assigned by default to users added to this team. Mutually exclusive with 'customTeamRoleId'. + nullable: true + customTeamRoleId: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + description: | + The custom team role assigned by default to users added to this team. Mutually exclusive with 'standardTeamRoleId'. + nullable: true + product: + allOf: + - $ref: '#/components/schemas/Product' + description: The product to which the team is assigned to. + uiSettings: + $ref: '#/components/schemas/UiSettingsV1' + isAllZones: + description: | + 'True' if the users belonging to this team have access to all zones. Mutually exclusive with 'zoneIds'. + type: boolean + example: false + zoneIds: + description: | + The list of zones that users assigned to this team will have access to. Mutually exclusive with 'allZones'. + type: array + items: + $ref: '#/components/schemas/UnlimitedLong' + maxItems: 8192 + scopes: + description: The scopes available to the users of this team. + type: array + items: + $ref: '#/components/schemas/ScopeV1' + maxItems: 512 + additionalTeamPermissions: + $ref: '#/components/schemas/AdditionalTeamPermissionsV1' + dateCreated: + description: The date (in ISO 8601 format) when this team was created. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + lastUpdated: + description: The date (in ISO 8601 format) when this team was last updated. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + version: + $ref: '#/components/schemas/UnlimitedLong' + GetTeamsPaginatedResponseV1: + title: Get Paginated Teams Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TeamResponseV1' + maxItems: 200 + CreateTeamRequestV1: + title: Create Team Request + type: object + required: + - name + - product + properties: + name: + description: The name of the team. It must be unique. + type: string + minLength: 1 + maxLength: 256 + example: Team name + description: + description: A longer description of the team explaining what is it used for. + type: string + maxLength: 2048 + example: Longer team description + isDefaultTeam: + description: Specifies if the team is the default team. The default team is used to automatically assign new users to a team. + type: boolean + example: false + standardTeamRole: + allOf: + - $ref: '#/components/schemas/TeamRoleV1' + description: | + The standard team role assigned by default to users added to this team. **Mutually exclusive with customTeamRoleId**.\ + \ + *ROLE_TEAM_SERVICE_MANAGER is only supported in Secure.* + customTeamRoleId: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + description: | + The custom team role assigned by default to users added to this team. **Mutually exclusive with standardTeamRoleId**. + product: + allOf: + - $ref: '#/components/schemas/Product' + description: The product to which the team is assigned to. Teams can only be part of a single product at a time. + uiSettings: + $ref: '#/components/schemas/UiSettingsV1' + isAllZones: + description: | + **True** if the users that are members of this team have access to all zones. **Mutually exclusive with zoneIds**.\ + \ + _Only supported in Secure features._ + type: boolean + example: false + zoneIds: + description: | + The list of zones that users assigned to this team will have access to. **Mutually exclusive with allZones**.\ + \ + _Only supported in Secure features._ + type: array + items: + $ref: '#/components/schemas/UnlimitedLong' + maxItems: 20 + scopes: + description: | + Scopes is a list of different scope types and filter values that will be applied to resources + when accessed through the team. + type: array + items: + $ref: '#/components/schemas/ScopeV1' + maxItems: 512 + additionalTeamPermissions: + $ref: '#/components/schemas/AdditionalTeamPermissionsV1' + UpdateTeamRequestV1: + type: object + title: Update Team Request V1 + required: + - version + - name + - isDefaultTeam + - uiSettings + - scopes + - additionalTeamPermissions + properties: + version: + $ref: '#/components/schemas/UnlimitedLong' + name: + description: The name of the team. + type: string + example: User Team + maxLength: 256 + description: + description: A description of the team explaining what is it used for. + type: string + example: User Team description + maxLength: 2048 + isDefaultTeam: + description: Specifies if this is the default team. The default team is used to automatically assign new users to a team. + type: boolean + example: false + standardTeamRole: + allOf: + - $ref: '#/components/schemas/TeamRoleV1' + description: | + The standard team role assigned by default to users added to this team. + customTeamRoleId: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + description: | + The custom team role assigned by default to users added to this team. + uiSettings: + $ref: '#/components/schemas/UiSettingsV1' + isAllZones: + description: | + **True** if the users that are members of this team have access to all zones. **Mutually exclusive with zoneIds**.\ + \ + _Only supported in Secure features._ + type: boolean + example: false + zoneIds: + description: | + The list of zones that users assigned to this team will have access to. **Mutually exclusive with allZones**.\ + \ + _Only supported in Secure features._ + type: array + items: + $ref: '#/components/schemas/UnlimitedLong' + maxItems: 20 + scopes: + description: | + Scopes is a list of different scope types and filter values that will be applied to resources + when accessed through the team. + type: array + items: + $ref: '#/components/schemas/ScopeV1' + maxItems: 512 + minItems: 1 + additionalTeamPermissions: + $ref: '#/components/schemas/AdditionalTeamPermissionsV1' + TeamUserResponseV1: + type: object + title: Team User Response V1 + properties: + teamId: + $ref: '#/components/schemas/UnlimitedLong' + userId: + $ref: '#/components/schemas/UnlimitedLong' + standardTeamRole: + allOf: + - $ref: '#/components/schemas/TeamRoleV1' + nullable: true + customTeamRoleId: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + nullable: true + GetTeamUsersPaginatedResponseV1: + title: Get Paginated Team Users Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TeamUserResponseV1' + maxItems: 200 + SaveTeamUserRequestV1: + type: object + title: Create or Update Membership Request V1 + properties: + standardTeamRole: + description: | + The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**.\ + \ + *ROLE_TEAM_SERVICE_MANAGER is only supported in Secure.* + allOf: + - $ref: '#/components/schemas/TeamRoleV1' + customTeamRoleId: + description: | + The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + UserResponseV1: + type: object + title: User Response V1 + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + email: + description: | + The email address of the user. + type: string + example: john.doe@nomail.cc + maxLength: 512 + firstName: + description: | + The name of the user. + type: string + example: john + maxLength: 256 + nullable: true + lastName: + description: | + The last name of the user. + type: string + example: doe + maxLength: 256 + nullable: true + isAdmin: + description: | + **True** if the user has Administration permissions. + type: boolean + example: false + isEnabled: + description: | + **True** if the user is enabled. + type: boolean + example: true + activationStatus: + description: | + The current activation status of the user. + type: string + example: confirmed + maxLength: 256 + dateCreated: + description: | + The date and time when the user was created. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + lastUpdated: + description: | + The date and time when the user was last updated. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + nullable: true + version: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + description: | + The current version of the resource. + bypassSsoEnforcement: + description: | + When **True**, the user can bypass SSO enforcement. + + **Warning:** This allows the user to log in without SSO even when username and password login is disabled. + type: boolean + example: false + GetUsersPaginatedResponseV1: + title: Get Paginated Users Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/UserResponseV1' + maxItems: 200 + CreateUserRequestV1: + type: object + title: Create User Request V1 + description: Request to create the User + required: + - email + properties: + email: + description: | + The email address of the user. If the activation flow is set, this address will + be used to send the activation email. + type: string + format: email + example: john.doe@nomail.cc + maxLength: 512 + firstName: + description: | + The name of the user. + type: string + example: John + maxLength: 256 + lastName: + description: | + The surname of the user. + type: string + example: Doe + maxLength: 256 + isAdmin: + description: | + **True** if the user has Administration permissions. + type: boolean + default: false + example: false + bypassSsoEnforcement: + description: | + When **True**, the user can bypass SSO enforcement. + + **Warning:** This allows the user to log in without SSO even when username and password login is disabled. + type: boolean + default: false + example: false + products: + description: The user will be added to the default teams specified by this field. + type: array + items: + $ref: '#/components/schemas/Product' + maxItems: 2 + example: + - secure + - monitor + UpdateUserRequestV1: + type: object + title: Update User Request V1 + required: + - version + properties: + firstName: + description: | + The name of the user. + type: string + example: john + maxLength: 256 + lastName: + description: | + The surname of the user. + type: string + example: doe + maxLength: 256 + isAdmin: + description: | + **True** if the user has Administration permissions. + type: boolean + example: false + isEnabled: + description: | + When **True**, the user can bypass SSO enforcement. + + **Warning:** This allows the user to log in without SSO even when username and password login is disabled. + type: boolean + example: true + version: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + description: | + The current version of the resource. + bypassSsoEnforcement: + description: | + When **True**, the user can bypass SSO enforcement. + **Warning:** This allows the user to log in without SSO even when username and password login is disabled. + If a field is omitted, its value will be left unchanged. + type: boolean + example: false + DaysInYearInt: + description: Number of days in a year + type: integer + format: int32 + minimum: 1 + maximum: 365 + example: 90 + UserDeactivationConfigurationResponseV1: + type: object + title: User Deactivation Configuration Response V1 + properties: + customerId: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + description: | + The customer Id. + isEnabled: + description: Specifies if user deactivation is enabled for this customer. + type: boolean + example: false + numberDaysBeforeDeactivation: + allOf: + - $ref: '#/components/schemas/DaysInYearInt' + description: | + Number of days before inactive users are deactivated. + UpdateUserDeactivationConfigurationRequestV1: + type: object + title: Update User Deactivation Configuration Request V1 + required: + - isEnabled + - numberDaysBeforeDeactivation + properties: + isEnabled: + description: Specifies if user deactivation is enabled for this customer. + type: boolean + example: false + numberDaysBeforeDeactivation: + allOf: + - $ref: '#/components/schemas/DaysInYearInt' + description: | + Number of days before inactive users are deactivated. + BucketConfigurationV1: + type: object + title: Bucket Configuration V1 + required: + - name + properties: + name: + description: The name of the bucket. + type: string + maxLength: 255 + example: my-bucket + folder: + description: The folder in the bucket where the captures are stored. Name of the folder without any prefix slashes ("test-folder" and not "/test-folder"). + type: string + maxLength: 255 + example: my-folder + description: + description: The description of the bucket. + type: string + maxLength: 255 + example: My bucket description + nullable: true + providerKeyId: + description: Id of the configured cloud provider account. Could be fetched with /api/providers endpoint. + type: string + maxLength: 255 + example: my-provider-key-id + nullable: true + endpoint: + description: The endpoint of the bucket. ***Required for S3 compatible storage.*** + type: string + maxLength: 255 + example: https://my-bucket.s3.amazonaws.com + nullable: true + region: + description: The region of the bucket. + maxLength: 255 + type: string + example: us-east-1 + nullable: true + pathStyleAccess: + description: Specifies if the bucket uses path-style access. + type: boolean + default: false + example: false + CaptureStorageConfigurationResponseV1: + type: object + title: Capture Storage Configuration Response V1 + properties: + isEnabled: + description: Specifies if capture storage is enabled. + type: boolean + example: false + isEncryptionWithProvidedKeyEnabled: + description: Specifies if server-side encryption with provided encryption key (SSE-C) is enabled. + type: boolean + example: false + buckets: + type: array + maxItems: 1 + nullable: true + description: | + The list of buckets where the captures are stored. Currently only one bucket is supported. + items: + $ref: '#/components/schemas/BucketConfigurationV1' + SaveCaptureStorageConfigurationRequestV1: + type: object + title: Update Capture Storage Configuration Request V1 + required: + - isEnabled + properties: + isEnabled: + description: Specifies if capture storage is enabled. + type: boolean + example: false + isEncryptionWithProvidedKeyEnabled: + description: Specifies if server-side encryption with provided encryption key (SSE-C) is enabled. + type: boolean + default: false + example: false + encryptionKey: + description: AES-256 encryption key to be used for server-side encryption (base64 encoded). + maxLength: 255 + type: string + example: 23kA/KCxPktKXLijIIt91uB+sJ652w/ES9hZ3+eWadM= + buckets: + type: array + maxItems: 1 + description: | + The list of buckets where the captures are stored. Currently only one bucket is supported. + items: + $ref: '#/components/schemas/BucketConfigurationV1' + AccessKeyResponseV1: + title: Access Key Response V1 + description: Access key response + type: object + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + isEnabled: + description: Indicates if the access key is enabled + type: boolean + example: true + accessKey: + description: Displays the access key value + type: string + maxLength: 256 + example: f97af7c5-dac3-49b1-b5e0-710871d34a15 + dateCreated: + description: | + Date and time when access key was created + type: string + format: date-time + nullable: true + example: '2022-01-31T22:15:28Z' + maxLength: 64 + dateDisabled: + description: | + Date and time when access key was disabled + type: string + format: date-time + nullable: true + example: '2022-01-31T22:15:28Z' + maxLength: 64 + agentLimit: + description: Maximum number of agents that can be connected with the access key + type: integer + nullable: true + format: int32 + minimum: 0 + maximum: 2147483647 + example: 100 + agentReservation: + description: Number of agents that are guaranteed to be available for the access key + type: integer + nullable: true + format: int32 + minimum: 0 + maximum: 2147483647 + example: 5 + teamId: + description: ID of team that owns the access key + type: integer + nullable: true + format: int32 + minimum: 0 + maximum: 2147483647 + example: 13 + metadata: + description: Access key metadata (maximum of 20 key-value pairs where key can be up to 25 characters long and value can be up to 50 characters long) + maxItems: 20 + type: object + additionalProperties: + type: string + maxLength: 76 + example: metaKey1:metaValue1 + GetAccessKeysPaginatedResponseV1: + title: Get Paginated Access Keys Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/AccessKeyResponseV1' + maxItems: 200 + CreateAccessKeyRequestV1: + title: Create Access Key Request + description: Create access key request + type: object + properties: + agentLimit: + description: Maximum number of agents that can be connected with the access key + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 100 + agentReservation: + description: Number of agents that are guaranteed to be available for the access key + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 5 + teamId: + description: ID of team that owns the access key + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 13 + metadata: + description: Access key metadata (maximum of 20 key-value pairs where key can be up to 25 characters long and value can be up to 50 characters long) + maxItems: 20 + type: object + additionalProperties: + type: string + maxLength: 76 + example: metaKey1:metaValue1 + UpdateAccessKeyRequestV1: + title: Update Access Key Request + description: Update access key request + type: object + required: + - isEnabled + properties: + agentLimit: + description: Maximum number of agents that can be connected with the access key + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 100 + agentReservation: + description: Number of agents that are guaranteed to be available for the access key + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 5 + teamId: + description: ID of team that owns the access key + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 13 + isEnabled: + description: Flag that indicates if the access key should be disabled or enabled + type: boolean + example: true + metadata: + description: Access key metadata (maximum of 20 key-value pairs where key can be up to 25 characters long and value can be up to 50 characters long) + maxItems: 20 + type: object + additionalProperties: + type: string + maxLength: 76 + example: metaKey1:metaValue1 + TeamMapV1: + type: object + title: Team Map + description: Determines the teams to which a group is mapped. + properties: + isForAllTeams: + description: | + If true, the group is mapped to all teams. + type: boolean + example: false + teamIds: + description: | + The list of teams to which group is mapped. It is empty when 'isForAllTeams' is true, otherwise it should have at least 1 element. + type: array + example: + - 154 + - 187 + items: + $ref: '#/components/schemas/UnlimitedLong' + maxItems: 8192 + GroupMappingResponseV1: + type: object + title: Group Mapping Response V1 + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + groupName: + description: The group name matching the external provider name. + type: string + example: Admins_Mapped_Group + maxLength: 256 + standardTeamRole: + description: | + The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**. + allOf: + - $ref: '#/components/schemas/TeamRoleV1' + nullable: true + customTeamRoleId: + description: | + The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + nullable: true + isAdmin: + description: Flag that indicates if the group is an admin group. + type: boolean + example: false + teamMap: + $ref: '#/components/schemas/TeamMapV1' + weight: + description: The weight of the group mapping that is used to determine the priority - a lower number has higher priority. + type: integer + format: int16 + minimum: 1 + maximum: 32767 + example: 2 + dateCreated: + description: The date in which this group mapping was created in ISO 8601 format. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + lastUpdated: + description: The date in which this group mapping was last updated in ISO 8601 format. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + GroupMappingsPaginatedResponseV1: + title: Get Group Mappings Paginated Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/GroupMappingResponseV1' + maxItems: 8192 + CreateGroupMappingRequestV1: + type: object + title: Create Group Mapping Request V1 + properties: + groupName: + description: The group name matching the external provider name. + type: string + example: Admins_Mapped_Group + maxLength: 256 + standardTeamRole: + description: | + The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**. + allOf: + - $ref: '#/components/schemas/TeamRoleV1' + nullable: true + customTeamRoleId: + description: | + The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + nullable: true + isAdmin: + description: Flag that indicates if the group is an admin group. + type: boolean + example: false + teamMap: + $ref: '#/components/schemas/TeamMapV1' + weight: + description: The weight of the group mapping is used to determine the priority - a lower number has higher priority. + type: integer + format: int16 + minimum: 1 + maximum: 32767 + default: 32767 + example: 2 + required: + - groupName + - teamMap + UpdateGroupMappingRequestV1: + type: object + title: Update Group Mapping Request V1 + properties: + groupName: + description: The group name matching the external provider name. + type: string + example: Admins_Mapped_Group + maxLength: 256 + standardTeamRole: + description: | + The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**. + allOf: + - $ref: '#/components/schemas/TeamRoleV1' + nullable: true + customTeamRoleId: + description: | + The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + nullable: true + isAdmin: + description: Flag that indicates if the group is an admin group. + type: boolean + example: false + teamMap: + $ref: '#/components/schemas/TeamMapV1' + weight: + description: The weight of the group mapping that is used to determine the priority - a lower number has higher priority. + type: integer + format: int16 + minimum: 1 + maximum: 32767 + default: 32767 + example: 2 + required: + - groupName + - teamMap + - isAdmin + - weight + GroupMappingSettingsV1: + type: object + title: Group Mapping Settings Request V1 + description: | + The request to save group mapping settings. + Currently settings for conflict resolution strategies are supported. + properties: + noMappingStrategy: + description: | + Strategy for handling no mappings. + type: string + example: UNAUTHORIZED + enum: + - UNAUTHORIZED + - DEFAULT_TEAM_DEFAULT_ROLE + - NO_MAPPINGS_ERROR_REDIRECT + differentRolesSameTeamStrategy: + description: | + Strategy for handling different roles on the same team. + type: string + example: UNAUTHORIZED + enum: + - UNAUTHORIZED + - FIRST_MATCH + - WEIGHTED + - WEIGHTED_BY_TEAM + noMappingsErrorRedirectUrl: + description: | + Redirect URL when NO_MAPPINGS_ERROR_REDIRECT is selected. + type: string + example: https://www.example.com + maxLength: 2048 + nullable: true + required: + - noMappingStrategy + - differentRolesSameTeamStrategy + SsoSettingsBaseSchemaV1: + type: object + title: SSO Settings Base Schema V1 + properties: + product: + allOf: + - $ref: '#/components/schemas/Product' + description: The product to which SSO settings is applied to. SSO settings are configured per specific product. + isActive: + type: boolean + description: Flag to indicate if the SSO settings is active. + example: true + createUserOnLogin: + type: boolean + description: Flag to indicate if the user will be created automatically if not found in the system. + example: true + isPasswordLoginEnabled: + type: boolean + description: 'Flag to indicate if the user will be able to login with password. Deprecated: use the API endpoint `/platform/v1/global-sso-settings` for this functionality. This is now a global setting: if this flag is defined here and this SSO setting is set to be active, the setting will be applied at global level.' + example: true + deprecated: true + isSingleLogoutEnabled: + type: boolean + description: Flag to indicate if the single logout support is enabled. + example: true + isGroupMappingEnabled: + type: boolean + description: Flag to indicate if group mapping support is enabled. + example: true + groupMappingAttributeName: + type: string + description: The group mapping attribute name. + example: groups + maxLength: 64 + nullable: true + SsoSettingsResponseBaseV1: + title: SSO Settings Write Base Response V1 + type: object + description: Response SSO Settings Base Schema + required: + - type + properties: + type: + $ref: '#/components/schemas/SsoTypeV1' + discriminator: + propertyName: type + mapping: + SAML: '#/components/schemas/SamlResponseV1' + OPENID: '#/components/schemas/OpenIdConfigResponseV1' + SamlBaseV1: + type: object + title: SAML SSO Settings Base Schema V1 + properties: + metadataUrl: + type: string + description: The metadata URL of the SAML provider. **Mutually exclusive with metadata* + example: https://accounts.example.com/metadata + maxLength: 2048 + metadataXml: + type: string + description: The metadata XML of the SAML provider. **Mutually exclusive with metadataUrl* + maxLength: 65356 + example: | + + emailParameter: + type: string + description: The email parameter of the SAML provider. + example: email + maxLength: 2048 + isSignatureValidationEnabled: + type: boolean + description: Flag that indicates if the signature validation is enabled. + example: true + default: true + isSignedAssertionEnabled: + type: boolean + description: Flag that indicates if the signed assertion is enabled. + example: true + default: true + isDestinationVerificationEnabled: + type: boolean + description: Flag that indicates if the destination verification is enabled. + example: true + isEncryptionSupportEnabled: + type: boolean + description: Flag that indicates if the encryption support is enabled. + example: true + SamlResponseV1: + type: object + title: SAML Settings Response V1 + allOf: + - $ref: '#/components/schemas/SsoSettingsResponseBaseV1' + - $ref: '#/components/schemas/SamlBaseV1' + OpenIdMetadataV1: + type: object + title: The metadata of the OpenID Connect provider + properties: + issuer: + type: string + description: The base issuer URL of the OpenID Connect provider. + example: https://accounts.example.com + maxLength: 2048 + authorizationEndpoint: + type: string + description: The authorization endpoint of the OpenID Connect provider. + example: https://accounts.example.com/oauth2/authorize + maxLength: 2048 + tokenEndpoint: + type: string + description: The token endpoint of the OpenID Connect provider. + example: https://accounts.example.com/oauth2/token + maxLength: 2048 + jwksUri: + type: string + description: The JSON Web Key Set URI of the OpenID Connect provider. + example: https://accounts.example.com/oauth2/jwks + maxLength: 2048 + endSessionEndpoint: + type: string + description: Single sign-out endpoint of the OpenID Connect provider. + example: https://accounts.example.com/oauth2/logout + maxLength: 2048 + userInfoEndpoint: + type: string + description: The user info endpoint of the OpenID Connect provider. + example: https://accounts.example.com/oauth2/userinfo + maxLength: 2048 + tokenAuthMethod: + type: string + enum: + - CLIENT_SECRET_BASIC + - CLIENT_SECRET_POST + description: The token authentication method of the OpenID Connect provider. + example: CLIENT_SECRET_BASIC + required: + - issuer + - authorizationEndpoint + - tokenEndpoint + - jwksUri + - tokenAuthMethod + OpenIdBaseV1: + type: object + title: OpenID Settings Base Schema + properties: + issuerUrl: + type: string + description: The issuer URL of the OpenID Connect provider. + example: https://accounts.example.com + maxLength: 2048 + clientId: + type: string + description: The client ID of the OpenID Connect provider. + example: client-id + maxLength: 2048 + isMetadataDiscoveryEnabled: + type: boolean + description: Flag to indicate if the metadata discovery is enabled. + example: true + metadata: + allOf: + - $ref: '#/components/schemas/OpenIdMetadataV1' + description: The metadata of the OpenID Connect provider. + groupAttributeName: + type: string + description: The group attribute name of the OpenID Connect provider. + example: groups + maxLength: 64 + isAdditionalScopesCheckEnabled: + type: boolean + description: Flag to indicate if the additional scopes verification on login. + example: true + additionalScopes: + type: array + description: List of additional scopes to be verified on login. + items: + type: string + description: The scope to be verified on login. + maxLength: 64 + example: scope 1 + example: + - scope 1 + - scope 2 + maxItems: 64 + OpenIdConfigResponseV1: + type: object + title: OpenID Connect SSO Settings Response V1 + allOf: + - $ref: '#/components/schemas/SsoSettingsResponseBaseV1' + - $ref: '#/components/schemas/OpenIdBaseV1' + SsoTypeV1: + title: SSO Type + description: Supported SSO types + type: string + example: SAML + enum: + - SAML + - OPENID + SsoSettingsResponseV1: + type: object + title: SSO Settings Write Response V1 + allOf: + - $ref: '#/components/schemas/SsoSettingsBaseSchemaV1' + - type: object + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + config: + $ref: '#/components/schemas/SsoSettingsResponseBaseV1' + dateCreated: + description: The date (in ISO 8601 format) when this SSO config was created. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + lastUpdated: + description: The date (in ISO 8601 format) when this SSO config was last updated. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + version: + $ref: '#/components/schemas/UnlimitedLong' + AllSsoSettingsResponseV1: + title: Get All SSO Settings Response V1 + type: object + properties: + data: + description: The list of SSO settings. + type: array + items: + $ref: '#/components/schemas/SsoSettingsResponseV1' + maxItems: 250 + SsoSettingsCreateRequestBaseV1: + title: SSO Settings Create Request Base V1 + type: object + description: Create Request SSO Settings Base Schema + required: + - type + properties: + type: + $ref: '#/components/schemas/SsoTypeV1' + discriminator: + propertyName: type + mapping: + SAML: '#/components/schemas/SamlCreateRequestV1' + OPENID: '#/components/schemas/OpenIdCreateRequestV1' + SamlCreateRequestV1: + type: object + title: SAML Settings Create Request V1 + allOf: + - $ref: '#/components/schemas/SsoSettingsCreateRequestBaseV1' + - $ref: '#/components/schemas/SamlBaseV1' + required: + - emailParameter + OpenIdRequestBaseV1: + type: object + title: OpenID Settings Base Write Request V1 + allOf: + - $ref: '#/components/schemas/OpenIdBaseV1' + - type: object + properties: + clientSecret: + type: string + description: The client secret of the OpenID Connect provider. + example: client-secret + maxLength: 2048 + OpenIdCreateRequestV1: + type: object + title: OpenID Connect SSO Settings Create Request V1 + allOf: + - $ref: '#/components/schemas/SsoSettingsCreateRequestBaseV1' + - $ref: '#/components/schemas/OpenIdRequestBaseV1' + required: + - issuerUrl + - clientId + - clientSecret + CreateSsoSettingsRequestV1: + type: object + title: Create SSO settings Request V1 + allOf: + - $ref: '#/components/schemas/SsoSettingsBaseSchemaV1' + - type: object + properties: + config: + $ref: '#/components/schemas/SsoSettingsCreateRequestBaseV1' + required: + - product + - config + SsoSettingsUpdateRequestBaseV1: + title: SSO Settings Update Request Base V1 + type: object + description: Update Request SSO Settings Base Schema + required: + - type + properties: + type: + $ref: '#/components/schemas/SsoTypeV1' + discriminator: + propertyName: type + mapping: + SAML: '#/components/schemas/SamlUpdateRequestV1' + OPENID: '#/components/schemas/OpenIdUpdateRequestV1' + SamlUpdateRequestV1: + type: object + title: SAML Settings Update Request V1 + allOf: + - $ref: '#/components/schemas/SsoSettingsUpdateRequestBaseV1' + - $ref: '#/components/schemas/SamlBaseV1' + required: + - emailParameter + - isSignatureValidationEnabled + - isSignedAssertionEnabled + - isDestinationVerificationEnabled + - isEncryptionSupportEnabled + OpenIdUpdateRequestV1: + type: object + title: OpenID Connect SSO Settings Update Request V1 + allOf: + - $ref: '#/components/schemas/SsoSettingsUpdateRequestBaseV1' + - $ref: '#/components/schemas/OpenIdRequestBaseV1' + required: + - issuerUrl + - clientId + - clientSecret + - isAdditionalScopesCheckEnabled + - isMetadataDiscoveryEnabled + UpdateSsoSettingsRequestV1: + type: object + title: Update SSO settings Request V1 + allOf: + - $ref: '#/components/schemas/SsoSettingsBaseSchemaV1' + - type: object + properties: + version: + $ref: '#/components/schemas/UnlimitedLong' + config: + $ref: '#/components/schemas/SsoSettingsUpdateRequestBaseV1' + required: + - version + - product + - config + - isActive + - createUserOnLogin + - isSingleLogoutEnabled + - isGroupMappingEnabled + GlobalSsoSettingsResponseV1: + type: object + title: Global SSO Settings Response V1 + properties: + isPasswordLoginEnabled: + type: boolean + description: Indicates whether password login is enabled. + example: true + GlobalSsoSettingsRequestV1: + type: object + title: Global SSO Settings Request V1 + properties: + isPasswordLoginEnabled: + type: boolean + description: Set to `true` to enable password login when SSO is enabled, or `false` to disable it. + example: true + required: + - isPasswordLoginEnabled + ServiceAccountsNotificationSettinsBase: + type: object + description: The base schema for the service accounts notification settings. + properties: + isEnabled: + description: Whether the notification settings are enabled or not. + type: boolean + example: true + notificationChannelIds: + description: | + The list of notification channel IDs to which the notifications are to be sent.\ + \ + Supported types are **EMAIL** and **SLACK**. + type: array + items: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + maxItems: 10 + daysBeforeExpiry: + description: The number of days before the expiry of the service account when the notifications are to be sent. + type: array + minimum: 1 + maximum: 60 + maxItems: 5 + default: + - 30 + - 7 + - 1 + items: + type: integer + format: int32 + minimum: 1 + maximum: 60 + example: 3 + ServiceAccountsNotificationSettingsResponseV1: + type: object + title: Service Accounts Notification Settings Response V1 + allOf: + - $ref: '#/components/schemas/ServiceAccountsNotificationSettinsBase' + UpdateServiceAccountsNotificationSettingsRequestV1: + type: object + title: Update Service Accounts Notification Settings Request V1 + required: + - isEnabled + - notificationChannelIds + - daysBeforeExpiry + allOf: + - $ref: '#/components/schemas/ServiceAccountsNotificationSettinsBase' + CreateServiceAccountsNotificationSettingsRequestV1: + type: object + title: Create Service Accounts Notification Settings Request V1 + required: + - isEnabled + - notificationChannelIds + allOf: + - $ref: '#/components/schemas/ServiceAccountsNotificationSettinsBase' + IpFilterResponseV1: + type: object + title: IP Filter Response V1 + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + ipRange: + type: string + description: IP range in CIDR notation + maxLength: 43 + example: 192.168.0.0/24 + note: + type: string + maxLength: 128 + example: London Office + nullable: true + isEnabled: + type: boolean + example: true + isAllowed: + description: Whether the IP range is allowed or not. + type: boolean + example: true + lastUpdated: + description: The date when IP filter was last updated. + type: string + format: date-time + example: '2017-07-21T17:32:28Z' + maxLength: 64 + IpFiltersPaginatedResponseV1: + title: Get Paginated IP Filters Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/IpFilterResponseV1' + maxItems: 200 + CreateIpFilterV1: + type: object + title: Create IP Filter Request V1 + description: Request to create IP filter. + required: + - ipRange + - isEnabled + properties: + ipRange: + description: IP range in CIDR notation + type: string + maxLength: 43 + example: 192.168.0.0/24 + note: + type: string + maxLength: 128 + example: London Office + isEnabled: + type: boolean + example: true + UpdateIpFilterV1: + type: object + title: Update IP Filter Request V1 + description: Request to update IP filter. + required: + - ipRange + - isEnabled + - note + properties: + ipRange: + description: IP range in CIDR notation + type: string + maxLength: 43 + example: 192.168.0.0/24 + note: + type: string + maxLength: 128 + example: London Office + isEnabled: + type: boolean + example: true + IpFiltersSettingsV1: + type: object + title: Ip Filters Settings V1 + description: | + Used to configure IP filters settings. + properties: + isFilteringEnabled: + type: boolean + description: Specifies if IP filtering is enabled. + example: false + PermissionV1: + type: object + description: Permission to perform an action on the Sysdig platform. + properties: + id: + description: | + Permission Authority. + type: string + example: cspm-results.read + maxLength: 256 + description: + description: | + Permission description. + type: string + example: Access CSPM results + maxLength: 512 + products: + description: | + Specifies the Sysdig product the permission applies to (Secure = SDS; Monitor = SDC). + type: array + uniqueItems: true + items: + type: string + description: | + Sysdig Monitor Product - SDC\ + Sysdig Secure Product - SDS + example: SDS + maxLength: 3 + maxItems: 2 + dependencies: + description: | + List of permissions that this permission depends on. + type: array + uniqueItems: true + items: + type: string + maxLength: 256 + example: cspm-results.read + maxItems: 100 + GetPermissionsResponseV1: + title: Permissions Response V1 + description: Permissions response + type: object + properties: + permissions: + type: array + uniqueItems: true + description: | + Set of permissions + items: + $ref: '#/components/schemas/PermissionV1' + maxItems: 1000 + total: + description: Total number of permissions + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 135 + RoleResponseV1: + title: Create Role Response + description: Create role response + type: object + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + description: + description: Describes the role + type: string + maxLength: 255 + example: Enables access to Dashboards section + monitorPermissions: + description: "Set of Monitor permissions assigned to the role. \nCheck GET /platform/v1/permissions to obtain the list of available values.\n" + type: array + uniqueItems: true + items: + type: string + maxLength: 255 + example: alerts.read + maxItems: 100 + securePermissions: + description: "Set of Secure permissions assigned to the role. \nCheck GET /platform/v1/permissions to obtain the list of available values.\n" + type: array + uniqueItems: true + items: + type: string + maxLength: 255 + example: scanning.read + maxItems: 100 + name: + description: The display name of the role + type: string + maxLength: 255 + example: Dashboard Viewer + GetRolesPaginatedResponseV1: + title: Get Paginated Roles Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/RoleResponseV1' + maxItems: 200 + RoleRequestV1: + title: Role Request + description: Create or update role request + type: object + required: + - name + properties: + description: + description: Describes the role + type: string + maxLength: 255 + example: Enables access to Dashboards section + monitorPermissions: + description: "Set of Monitor permissions assigned to the role. \nCheck GET /platform/v1/permissions to obtain the list of available values.\n" + type: array + uniqueItems: true + items: + type: string + maxLength: 255 + example: alerts.read + maxItems: 100 + securePermissions: + description: "Set of Secure permissions assigned to the role. \nCheck GET /platform/v1/permissions to obtain the list of available values.\n" + type: array + uniqueItems: true + items: + type: string + maxLength: 255 + example: scanning.read + maxItems: 100 + name: + description: The display name of the role + type: string + maxLength: 255 + example: Dashboard Viewer + ServiceAccountResponseV1: + title: Service Account Response V1 + type: object + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + name: + description: Service Account display name. + type: string + example: CI/CD service api key + maxLength: 256 + dateCreated: + description: Date and time when the Service Account was created. + type: string + format: date-time + maxLength: 64 + example: '2024-08-23T17:32:28Z' + lastUpdated: + description: Date and time when the Service Account was last updated. + type: string + format: date-time + maxLength: 64 + example: '2024-04-11T17:32:28Z' + lastUsed: + description: Date and time when the Service Account API key was last used. + type: string + format: date-time + maxLength: 64 + example: '2024-06-15T17:32:28Z' + expirationDate: + description: Date and time when the Service Account API key expires. + type: string + format: date-time + maxLength: 64 + example: '2024-06-15T17:32:28Z' + teamId: + description: Team ID of the team the service account is associated with. + type: integer + format: int64 + minimum: 1 + maximum: 9223372036854776000 + example: 32 + teamRole: + description: The predefined team role for a Service Account, or an ID of a custom role. + type: string + maxLength: 256 + example: ROLE_TEAM_STANDARD + systemRoles: + description: Array of System roles assigned to the global service account. + type: array + minItems: 1 + maxItems: 20 + items: + type: string + maxLength: 128 + example: ROLE_SERVICE_ACCOUNT + GetServiceAccountsPaginatedResponseV1: + title: Get Service Accounts Paginated Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ServiceAccountResponseV1' + maxItems: 200 + CreateServiceAccountRequestV1: + title: Create Service Account Request V1 + type: object + properties: + name: + description: The display name of the Service Account. + type: string + example: CI/CD service api key + maxLength: 256 + expirationDate: + description: Time when the Service Account API key expires, | in number of milliseconds since January 1, 1970, 00:00:00 GMT + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854775000 + example: 1630326638135 + CreateGlobalServiceAccountRequestV1: + title: Create Global Service Account Request V1 + type: object + required: + - name + - systemRoles + allOf: + - $ref: '#/components/schemas/CreateServiceAccountRequestV1' + - type: object + properties: + systemRoles: + description: Array of System roles assigned to the global service account. + type: array + minItems: 1 + maxItems: 20 + items: + type: string + maxLength: 128 + example: ROLE_SERVICE_ACCOUNT + ServiceAccountWithKeyResponseV1: + title: Service Account With Key Response V1 + type: object + allOf: + - $ref: '#/components/schemas/ServiceAccountResponseV1' + - type: object + properties: + apiKey: + description: Service Account API key + type: string + maxLength: 256 + example: 123ab45c-d67e-89fg-0hij-1k23456l7890-n1MO + CreateTeamServiceAccountRequestV1: + title: Create Team Service Account Request V1 + type: object + required: + - name + - teamRole + allOf: + - $ref: '#/components/schemas/CreateServiceAccountRequestV1' + - type: object + properties: + teamRole: + description: Team role to be assigned to the team service account. | It can be a string for predefined roles or an id of a custom role. + type: string + maxLength: 128 + example: CICD_SCANNING + NotificationChannel: + type: object + description: Schema for a notification channel object + properties: + id: + type: integer + format: int64 + description: Notification channel Id + example: 2678526 + minimum: 0 + maximum: 2147483647000 + type: + type: string + description: Notification channel type + example: Email + maxLength: 256 + ScheduleResponse: + type: object + title: Schedule + description: Schema for a scheduled report + required: + - id + - userId + - teamId + - customerId + - reportId + - isReportTemplate + - reportFormat + - zones + - schedule + - enabled + - createdBy + - createdOn + properties: + id: + type: string + description: Unique identifier for the schedule + example: 2pAtvxUMOXjoZlA1WJkkoCL6SeS + maxLength: 512 + userId: + type: integer + format: int64 + description: ID of the user who created the schedule + example: 2678526 + minimum: 0 + maximum: 2147483647 + teamId: + type: integer + format: int64 + description: ID of the team associated with the schedule + example: 2074112 + minimum: 0 + maximum: 2147483647 + customerId: + type: integer + format: int64 + description: ID of the customer associated with the schedule + example: 121517 + minimum: 0 + maximum: 2147483647 + name: + type: string + description: Name of the schedule + example: test schedule password 1 + maxLength: 512 + description: + type: string + description: Description of the schedule + example: '' + maxLength: 2048 + reportId: + type: integer + format: int64 + description: ID of the report + example: 26 + minimum: 0 + maximum: 2147483647 + reportName: + type: string + description: Name of the report + example: Compliance Readiness Report + maxLength: 512 + isReportTemplate: + type: boolean + description: Indicates if the report is a template + example: true + reportFormat: + type: string + description: Format of the report + example: pdf + maxLength: 512 + zones: + type: array + description: List of zone IDs + maxItems: 100 + items: + type: integer + format: int64 + example: 239 + minimum: 0 + maximum: 2147483647 + policies: + type: array + description: List of policy IDs + maxItems: 100 + items: + type: integer + format: int64 + example: 52 + minimum: 0 + maximum: 2147483647 + timezone: + type: string + description: Timezone for the schedule + example: America/Chicago + maxLength: 512 + schedule: + type: string + description: Cron expression for the schedule + example: 00 30 06 * * * + maxLength: 512 + enabled: + type: boolean + description: Indicates if the schedule is enabled + example: true + notificationChannels: + type: array + description: List of notification channels + maxItems: 100 + items: + allOf: + - $ref: '#/components/schemas/NotificationChannel' + iacTaskId: + type: integer + format: int64 + description: ID of the IaC task + example: 647423 + minimum: 0 + maximum: 2147483647 + passwordEnabled: + type: boolean + description: Indicates if password protection is enabled + example: true + compression: + type: string + description: Compression format + example: zip + maxLength: 512 + createdBy: + type: string + description: Email of the user who created the schedule + example: user@sysdig.com + maxLength: 512 + updatedBy: + type: string + description: Email of the user who last updated the schedule + example: user@sysdig.com + maxLength: 512 + createdOn: + type: string + format: date-time + description: Timestamp when the schedule was created + example: '2024-11-21T20:29:01.415528Z' + maxLength: 512 + modifiedOn: + type: string + format: date-time + description: Timestamp when the schedule was last modified + example: '2024-11-22T04:40:17.3083Z' + maxLength: 512 + lastScheduledOn: + type: string + format: date-time + description: Timestamp when the schedule was last run + example: '2024-12-10T06:30:05.472079Z' + maxLength: 512 + lastStartedOn: + type: string + format: date-time + description: Timestamp when the schedule was last started + example: '2024-12-10T06:30:05.472079Z' + maxLength: 512 + lastCompletedOn: + type: string + format: date-time + description: Timestamp when the schedule was last completed + example: '2024-12-10T06:30:36.194531Z' + maxLength: 512 + ListSchedules: + type: object + title: List Schedules Response V1 + required: + - data + properties: + data: + type: array + description: List of Schedules. + maxItems: 10000 + items: + $ref: '#/components/schemas/ScheduleResponse' + TimeFrame: + type: object + description: The start and end time of the request + properties: + from: + $ref: '#/components/schemas/UnlimitedLong' + to: + $ref: '#/components/schemas/UnlimitedLong' + JobResponse: + type: object + title: Job Response + description: Schema for a job response + required: + - id + - userId + - teamId + - customerId + - reportId + - isReportTemplate + - reportFormat + - jobType + - zones + - status + - createdBy + - scheduledOn + properties: + id: + type: string + description: Unique identifier for the job. + example: 2pUnGeLvrOo5qoWuvXg5H9nEH2g + maxLength: 512 + userId: + type: integer + format: int64 + description: ID of the user who created the job. + example: 0 + minimum: 0 + maximum: 2147483647 + teamId: + type: integer + format: int64 + description: ID of the team the job was created under. + example: 2074112 + minimum: 0 + maximum: 2147483647 + customerId: + type: integer + format: int64 + description: ID of the user associated with the job. + example: 121517 + minimum: 0 + maximum: 2147483647 + iacTaskId: + type: integer + format: int64 + description: ID of the IAC scheduled task. + example: 151514 + minimum: 0 + maximum: 2147483647 + scheduleId: + type: string + description: ID of the schedule associated with the job + example: 2otw7opjilXpl0JRJIetx5Y6SHM + maxLength: 512 + reportId: + type: integer + format: int64 + description: ID of the report + example: 26 + minimum: 0 + maximum: 2147483647 + isReportTemplate: + type: boolean + description: Indicates if the report is a template + example: true + reportFormat: + type: string + description: Format of the report + example: pdf + maxLength: 512 + jobType: + type: string + description: Type of the job + example: SCHEDULED + maxLength: 512 + jobName: + type: string + description: Name of the job + example: weekly-report + maxLength: 512 + zones: + type: array + description: List of zone IDs + maxItems: 10000 + items: + type: integer + format: int64 + example: 239 + minimum: 0 + maximum: 2147483647 + policies: + type: array + description: List of policy IDs + maxItems: 10000 + items: + type: integer + format: int64 + example: 12 + minimum: 0 + maximum: 2147483647 + status: + type: string + description: Status of the job + example: COMPLETED + maxLength: 512 + timezone: + type: string + description: Timezone of the request time frame + example: America/Los_Angeles + maxLength: 1024 + timeFrame: + $ref: '#/components/schemas/TimeFrame' + fileName: + type: string + description: File name of the report + example: filename.zip + maxLength: 2048 + filePath: + type: string + description: File path of the report + example: https://sysdig.com/api/platform/reporting_files/v1/filename.zip?token=token + maxLength: 4096 + createdBy: + type: string + description: Email of the user who created the job + example: user@sysdig.com + maxLength: 512 + scheduledOn: + type: string + format: date-time + description: Timestamp when the job was scheduled + example: '2024-11-28T21:30:26.53174Z' + maxLength: 512 + startedOn: + type: string + format: date-time + description: Timestamp when the job was started + example: '2024-11-28T21:30:26.53174Z' + maxLength: 512 + completedOn: + type: string + format: date-time + description: Timestamp when the job was completed + example: '2024-11-28T21:31:08.647529Z' + maxLength: 512 + ListJobs: + type: object + title: List Jobs Response V1 + required: + - data + properties: + data: + type: array + description: List of Jobs. + maxItems: 10000 + items: + $ref: '#/components/schemas/JobResponse' + ZoneId: + type: integer + format: int64 + description: Zone ID + minimum: 1 + maximum: 9223372036854776000 + example: 1234 + SysdigQueryLanguageFilter: + description: | + Query language expression for filtering results. + The filter is the result of logical concatenations, + using "and" and "or" binary operators and the "not" unary prefix operator (i.e. `pid = 1 and not ppid = 2`), + of attribute comparisons. Attribute comparisons can be: + - Scalar: Using `=`, `!=`, `>`, `>=`, `<` and `<=` comparison operators. For example, `pid = 1`. + - Vector: Using `in` to check the equality among the values provided between parenthesis. For example, `pid in (1, 2)`. + The operators available depends on the attribute. + Values containing double-quotes `"` need escaping using backslash `\`, i.e. name = "sample \"quoted\" value". + + EBNF: + - attribute = ? all available attributes ?; + - value = ? attribute value ?; + - quoted_value = "\"", value, "\""; + - bin_operator = "and" | "or"; + - cmp_scalar_operator = "=" | "!=" | ">" | ">=" | "<" | "<="; + - cmp_vector_operator = "in"; + - cmp_scalar_operation = attribute, [" "], cmp_scalar_operator, [" "], quoted_value; + - values_list = "(", quoted_value, { [" "], ",", quoted_value }, ")"; + - cmp_vector_operator = attribute, " ", cmp_vectorial_operator, [" "], values_list; + - element = ["not "], (cmp_scalar_operation | cmp_vectorial_operator); + - filter = element, {" ", bin_operator, " ", element}; + type: string + example: container.id='abc123' + maxLength: 2048 + Types: + type: string + description: | + The entry types to filter. This query parameter can be set multiple times + to filter for different entry types. + example: commands + enum: + - commands + - connections + - kubernetes + - fileaccesses + Page: + type: object + description: Pagination information. + required: + - total + properties: + total: + type: integer + format: int64 + description: | + The number of events matching the search criteria. This number is always major or equal to the number of events returned. + example: 10 + minimum: 0 + maximum: 9223372036854776000 + prev: + type: string + description: | + The cursor that can be used to fetch a set of events before the + first event returned in the `data` array. + If this value is unset, then there are no events before the first + event returned in the `data` array. + By providing this value as `cursor` + you will get the events preceding the first event returned + in the `data` array. + example: LTltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 64 + next: + type: string + description: | + The cursor that can be used to fetch a set of events after the last + event returned in the `data` array. + If this value is unset, then there are no events after the last + event returned in the `data` array. + By providing this value as `cursor` + you will get the events following last event returned in the + `data` array. + example: KzltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 64 + Id: + type: string + description: The audit event id. + example: 15cbf54e34df95404caad1c988cf7c42 + maxLength: 32 + Timestamp: + type: integer + format: int64 + description: Timestamp the audit event occured, expressed in nanoseconds. + example: 1546300800000000000 + minimum: 0 + maximum: 9223372036854776000 + Entry: + description: | + The base structure of an Activity Audit entry + type: object + required: + - id + - timestamp + properties: + id: + $ref: '#/components/schemas/Id' + timestamp: + $ref: '#/components/schemas/Timestamp' + ContainerId: + type: string + description: | + The container id. `containerId` is present only if the audit event was + collected in a container context. + example: f8d4f71ab80b + maxLength: 200 + Hostname: + type: string + description: The Kubernetes hostname. + example: ip-127-0-0-1 + maxLength: 200 + Command: + description: Represents a command execution. + type: object + allOf: + - $ref: '#/components/schemas/Entry' + - type: object + required: + - cmdline + - cwd + - comm + - hostname + - pcomm + - pid + - ppid + - uid + - loginShellId + - loginShellDistance + - tty + - type + - userLoginUid + - userLoginName + - procExepath + properties: + type: + description: The entry type + type: string + enum: + - command + example: command + containerId: + $ref: '#/components/schemas/ContainerId' + cmdline: + type: string + description: Full command line + example: pg_isready --host 10.32.0.8 + maxLength: 4096 + comm: + type: string + description: The name of the command. + example: pg_isready + maxLength: 20 + pcomm: + type: string + description: The name of the parent command. + example: sshd + maxLength: 20 + pid: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: Process ID. + example: 31135 + ppid: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: Parent process ID. + example: 31132 + uid: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: User ID + example: 1234 + username: + type: string + description: Username + example: foo + maxLength: 20 + cwd: + type: string + description: Command working directory. + example: / + maxLength: 50 + loginShellId: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: Process id of the shell. + example: 11640 + loginShellDistance: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + example: 5 + description: Level of nesting from the parent shell. + hostname: + $ref: '#/components/schemas/Hostname' + tty: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: TTY number. + example: 12345 + userLoginUid: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: User login UID. + example: 1234 + userLoginName: + type: string + description: User login name. + example: foo + maxLength: 20 + procExepath: + type: string + description: Process executable path. + example: /usr/bin/pg_isready + maxLength: 4096 + labels: + type: object + description: Key value pairs of labels. + additionalProperties: + type: string + maxLength: 200 + example: foo + maxProperties: 100 + Connection: + description: Represents a connection. + type: object + allOf: + - $ref: '#/components/schemas/Entry' + - type: object + required: + - clientIpv4 + - clientPort + - cmdline + - comm + - containerId + - direction + - dnsDomains + - hostname + - l4protocol + - pid + - processName + - serverIpv4 + - serverPort + - tty + - type + properties: + type: + description: The entry type + type: string + enum: + - connection + example: connection + cmdline: + type: string + description: Full command line + example: pg_isready --host 10.32.0.8 + maxLength: 4096 + comm: + type: string + description: The name of the command. + example: pg_isready + maxLength: 20 + dnsDomains: + type: array + description: DNS information for the connection event. + maxItems: 1000 + minItems: 0 + uniqueItems: false + default: [] + example: + - sysdig.com + items: + type: string + maxLength: 512 + default: '' + example: sysdig.com + containerId: + $ref: '#/components/schemas/ContainerId' + pid: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: Id of the process owning the connection. + example: 123 + processName: + description: Name of the process owning the connection. + type: string + example: curl + maxLength: 200 + clientIpv4: + type: string + description: The IPv4 dotted notation of the client address. + example: 127.0.0.1 + maxLength: 15 + clientPort: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: The client port. + example: 31234 + serverIpv4: + type: string + description: The IPv4 dotted notation of the server address. + example: 127.0.0.1 + maxLength: 15 + serverPort: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: The server port. + example: 80 + direction: + type: string + description: The direction of the connection. + enum: + - in + - out + example: in + l4protocol: + type: string + description: The layer 4 protocol. + example: tcp + maxLength: 10 + hostname: + $ref: '#/components/schemas/Hostname' + tty: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + example: 32444 + description: TTY number. + labels: + type: object + description: Key value pairs of labels. + additionalProperties: + type: string + maxLength: 200 + example: foo + maxProperties: 100 + Fileaccess: + description: Represents a file access operation. + allOf: + - $ref: '#/components/schemas/Entry' + - type: object + required: + - comm + - directory + - filename + - permissions + - hostname + - pid + - type + properties: + type: + description: The entry type + type: string + enum: + - fileaccess + example: fileaccess + hostname: + $ref: '#/components/schemas/Hostname' + containerId: + $ref: '#/components/schemas/ContainerId' + comm: + type: string + description: The name of the command. + example: pg_isready + maxLength: 20 + pid: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: Id of the process owning the connection. + example: 123 + directory: + type: string + description: The Directory for the file access. + example: /home/sysdig/ + maxLength: 200 + filename: + type: string + description: The Filename involved in file access. + example: malicious_file.txt + maxLength: 50 + permissions: + type: string + description: The Permissions of the file access. + example: rw + maxLength: 3 + tty: + type: integer + format: int64 + minimum: 0 + maximum: 9223372036854776000 + description: TTY number. + example: 12345 + labels: + type: object + description: Key value pairs of labels. + additionalProperties: + type: string + maxLength: 200 + example: foo + maxProperties: 100 + User: + type: object + description: The full representation of a User + properties: + username: + type: string + description: The username of the User + example: kubernetes-admin + maxLength: 20 + groups: + type: array + items: + type: string + maxLength: 20 + example: system:masters + example: + - system:masters + - system:authenticated + maxItems: 100 + Kubernetes: + description: Represents a kubernetes audit event. + allOf: + - $ref: '#/components/schemas/Entry' + - type: object + required: + - args + - containerId + - hostname + - name + - namespace + - resource + - sourceAddresses + - subResource + - user + - userAgent + - type + properties: + type: + description: The entry type + type: string + enum: + - kubernetes + example: kubernetes + hostname: + $ref: '#/components/schemas/Hostname' + containerId: + $ref: '#/components/schemas/ContainerId' + resource: + type: string + description: The Kubernetes resource. + example: pods + maxLength: 20 + subResource: + type: string + description: The Kubernetes subresource. + example: exec + maxLength: 20 + namespace: + type: string + description: The Kubernetes namespace. + example: sysdigcloud + maxLength: 50 + name: + type: string + description: The name of the resource. + example: sysdigcloud-redis-75675f5897-7ci7o + maxLength: 50 + sourceAddresses: + type: array + items: + type: string + maxLength: 15 + example: 127.0.0.1 + example: + - 127.0.0.1 + - 192.168.0.1 + maxItems: 100 + user: + $ref: '#/components/schemas/User' + userAgent: + type: string + description: The user agent of the client + example: kubectl/v1.13.5 (linux/amd64) kubernetes/2166946 + maxLength: 100 + args: + type: object + description: | + Arguments specific for the different types of Kubernetes audit + entries. In case of `pods:exec`, `args` will contain the fields + `command` and `container` representing the command called and + the name of the container in the pod where the command was + executed respectively. + example: + command: bash + container: redis + labels: + type: object + description: Key value pairs of labels. + additionalProperties: + type: string + maxLength: 200 + example: foo + maxProperties: 100 + EntriesResponse: + description: | + The response to a GET entries call + type: object + properties: + page: + $ref: '#/components/schemas/Page' + data: + description: The actual data contained in one of the supported types of entry + type: array + items: + anyOf: + - $ref: '#/components/schemas/Command' + - $ref: '#/components/schemas/Connection' + - $ref: '#/components/schemas/Fileaccess' + - $ref: '#/components/schemas/Kubernetes' + maxItems: 200 + EntryId: + type: string + description: The event id. + example: 179854fbe16a1279f2ebeb558f1ebe99 + maxLength: 32 + EntryResponse: + description: | + The response to a GET entry call + oneOf: + - $ref: '#/components/schemas/Command' + - $ref: '#/components/schemas/Connection' + - $ref: '#/components/schemas/Fileaccess' + - $ref: '#/components/schemas/Kubernetes' + SupportedFilterType: + type: string + enum: + - string + - ip + - number + - date + example: string + description: Data type for the attribute values. + Operand: + type: string + description: A supported operand for filtering events. + enum: + - '=' + - '!=' + - exists + - not exists + - starts with + - contains + - in + - not in + example: '=' + AuditSupportedFilter: + type: object + description: A supported field for filtering Activity Audit events. + properties: + id: + type: string + description: Attribute onto which filtering is supported. + example: container.image.id + maxLength: 64 + type: + $ref: '#/components/schemas/SupportedFilterType' + operands: + type: array + items: + $ref: '#/components/schemas/Operand' + description: The list of supported operands for filtering events. + maxItems: 8 + minItems: 0 + uniqueItems: true + required: + - id + - type + AuditSupportedFiltersResponse: + type: object + description: The list of supported attributes for filtering Activity Audit entries. + properties: + data: + type: array + items: + $ref: '#/components/schemas/AuditSupportedFilter' + description: The list of supported attributes for filtering Activity Audit entries. + maxItems: 1000 + required: + - data + Certificate: + type: object + description: An X-509 certificate + required: + - id + - certificateName + - created + - issuer + - validity + - fingerprint + - usage + properties: + id: + type: integer + format: int64 + description: The certificate ID. + minimum: 0 + maximum: 9223372036854776000 + example: 12345 + certificateName: + type: string + description: The certificate Name. + maxLength: 200 + example: foo + created: + type: string + format: date-time + description: The timestamp the certificate was created. + example: '1970-01-01T00:00:00.000000000Z' + maxLength: 30 + issuer: + type: string + example: C = US, ST = , L = San Francisco, O = Foobar Inc + maxLength: 2000 + description: The Distinguished Name of the certificate issuer. + validity: + type: object + description: The certificate validity interval. + properties: + after: + type: string + format: date-time + description: The beginning of the certificate validity period. + example: '1970-01-01T00:00:00.000000000Z' + maxLength: 30 + before: + type: string + format: date-time + description: The end of the certificate validity period. + example: '1970-01-01T00:00:00.000000000Z' + maxLength: 30 + usage: + type: integer + format: int32 + minimum: 0 + maximum: 2147483647 + example: 0 + description: The number of services that currently use that certificate. + fingerprint: + type: string + description: The certificate fingerprint + example: sha1:72:6E:1A:34:27:DD:7C:5C:C6:F3:7D:FB:EC:DC:62:48:F4:A0:C8:B7 + maxLength: 256 + CertificatesResponse: + type: object + description: Customer certificates + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/Certificate' + maxItems: 1000 + UploadCertificateRequest: + description: Certificate to be uploaded + type: object + required: + - certificateFileName + - name + properties: + certificateFileName: + type: string + format: binary + maxLength: 10000 + description: The certificate file to be uploaded + example: | + Content-Disposition: form-data; name="certificateFileName"; filename="cert.pem" + -----BEGIN CERTIFICATE----- + MIIDXTCCAkWgAwIBAgIJAJC1HiIAZAiIMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV + BAYTAkFUMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX + aWRnaXRzIFB0eSBMdGQwHhcNMTYxMjMxMTQ3NDI4WhcNNDgwNjMxMTQ3NDI4WjBF + MQswCQYDVQQGEwJBVzERMAsGA1UECAwESmFuaTETMBEGA1UECgwKRGFuaWVsIENv + LjEYMBYGA1UEAwwPd3d3LmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC + AQ8AMIIBCgKCAQEAr0Ij7X2VeAn7vqqzq+5rSHZD2G5YjsMm0gtF8gfdG0h7om6D + 5sbY18UWoVgF8Zp8v4+yzFP+YHqQa0S3pJI5p2hbiT2GhRwaUpT+0Lg+SIa+Gt5k + sjuZb2GKZ47QnqMtKuT3aNRmJIJ0I3eJ8P3hvs+BUjxY3O9y8JxW1j3hLhF+n2Im + klP8xuhpYtagLy6qxFhoSqzM9wQbHOlC4qCF76x8djC0Bg+ROe3Wkb8bV5ZElgvZ + r64Ny7ffOQdc/zUi+J9j2ijJAgMBAAGjUDBOMB0GA1UdDgQWBBQxL9aji2MKEMD+ + Rm9eJiEH4M0a/DAfBgNVHSMEGDAWgBQxL9aji2MKEMD+Rm9eJiEH4M0a/DAMBgNV + HRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQB1hUK75CdDtJeLsQe08Lw0M9kP + 5wqzj4HAnfKy29G/BJaGcYc4G7qnvl6hdC4jFPm9HXYEa7xQp6kt2e5R4t4OZSKg + Ai5p5MeCh2ecdPN7otrF8+iO9XJEeuOQrqC6OVAKgLNCIVnXLPXp9i9b7gjFJeTT + BNwE3rDJAkSnhk6Bhep4+JL1TyQ72DQ3HW4d/27To4v7NjP6r+K2eK5smVz9HSPD + A8qJ31+ajNQMYWXFCR+HA4C/v1uYfY2/WMy2nw2/X7gJ0iAf3GtWPo/jYH6jhkDO + i+3hFh9SIN2evhZV/BY6Uj+W3O3hLJA0ZgTXkZfMMz4/w9f3TyJ3oXxZqvzS + -----END CERTIFICATE----- + name: + type: string + maxLength: 200 + example: foo + description: The name of the certificate that is being uploaded + Services: + type: object + description: Certificate registrations + required: + - certificateId + - serviceType + - serviceId + - registeredAt + properties: + certificateId: + type: integer + format: int64 + description: The certificate ID. + minimum: 0 + maximum: 9223372036854776000 + example: 12345 + serviceType: + type: string + description: The service type. + enum: + - EVENTS_FORWARDER + example: EVENTS_FORWARDER + registeredAt: + type: string + format: date-time + description: The timestamp the service was configured to use this certificate. + example: '1970-01-01T00:00:00.000000000Z' + maxLength: 30 + serviceId: + type: string + description: The integration ID for the service owning the integration that uses the certificate. + maxLength: 20 + example: '12345' + ServicesResponse: + type: object + description: LedgersResponse + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/Services' + maxItems: 1000 + EventsFeedFilter: + description: | + Query language expression for filtering results. + The filter is the result of logical concatenations, + using "and" and "or" binary operators and the "not" unary prefix operator (i.e. `pid = 1 and not ppid = 2`), + of attribute comparisons. Attribute comparisons can be: + - scalar, using `=`, `!=`, `>`, `>=`, `<` and `<=` comparison operators (i.e. `pid = 1`) + - vector, using `in` to check the equality among one of the values provided between parenthesis (i.e. `pid in (1, 2)`) + Depending on the attribute, only some operators can be available. + Values containing double-quotes `"` need escaping using backslash `\`, i.e. name = "sample \"quoted\" value". + The list of supported attributes and related operators supported can be retrieved through the + `/secure/events/v1/supported-filters` endpoint. + + EBNF: + - attribute = ? all available attributes ?; + - value = ? attribute value ?; + - quoted_value = "\"", value, "\""; + - bin_operator = "and" | "or"; + - cmp_scalar_operator = "=" | "!=" | ">" | ">=" | "<" | "<="; + - cmp_vector_operator = "in"; + - cmp_scalar_operation = attribute, [" "], cmp_scalar_operator, [" "], quoted_value; + - values_list = "(", quoted_value, { [" "], ",", quoted_value }, ")"; + - cmp_vector_operator = attribute, " ", cmp_vectorial_operator, [" "], values_list; + - element = ["not "], (cmp_scalar_operation | cmp_vectorial_operator); + - filter = element, {" ", bin_operator, " ", element}; + type: string + example: agent.id=1 + maxLength: 2048 + EventsFeedLimit: + description: The number of items to return + type: integer + format: int32 + minimum: 1 + maximum: 200 + default: 25 + example: 25 + EventsFeedPage: + type: object + description: Pagination information. + required: + - total + properties: + total: + type: integer + format: int64 + description: | + The number of events matching the search criteria. This number is always major or equal to the number of events returned. + example: 10 + minimum: 0 + maximum: 9223372036854776000 + prev: + type: string + description: | + `prev` is a string pointing to the previous page of data. + Use this as the `cursor` to get the previous page of data. + example: LTltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 512 + next: + type: string + description: "`next` is a string pointing to the next page of data.\nUse this as the `cursor` to scroll paginated results and get the next page of data. \nIf not included, the current response is the last page.\n" + example: KzltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 512 + Originator: + type: string + description: | + Type of event: + - policy - Agent-based runtime threat detection events + - profilingDetection - Workload ML detections + - falcocloud - Agentless threat detections + - admissionController - Kubernetes admission control based posture events + enum: + - policy + - profilingDetection + - falcocloud + - admissionController + example: policy + Category: + type: string + description: | + The event category: + - `runtime` - Agent-based threat detection events + - `remote` - Kubernetes admission requests and CloudConnector events + - `admissionController` - Kubernetes admission requests-posture checks + - `cloudtrail` - Agentless CloudTrail CDR events + - `okta` - Agentless Okta CDR events + - `github` - Agentless Github CDR events + - `falcocloud` - Agentless CDR events (excluded CloudTrail, Okta, Github) + - `miner` - Workload ML Crypto events + enum: + - runtime + - remote + - admissionController + - cloudtrail + - okta + - github + - falcocloud + - miner + example: runtime + Source: + type: string + description: | + Source of the event: + - `syscall` - a syscall within a workload + - `windows` - Windows event log + - `profiling` - ML workload threat detections + - `K8SAdmissionController` - Admission control request coming from the Kubernetes admission controller + - `k8s_audit` - Kubernetes audit logs, if the category is `runtime`, otherwise Admission control request + - `aws_cloudtrail` - AWS CloudTrail log, from CloudConnector + - `awscloudtrail` - AWS CloudTrail log, agentless only + - `agentless-aws-ml` - ML threat detections for AWS + - `gcp_auditlog` - GCP Audit log + - `azure_platformlogs` - Azure platform logs + - `okta` - Okta System Logs + - `agentless-okta-ml` - ML threat detections for Okta + - `github` - Github organization logs + enum: + - syscall + - windows + - profiling + - K8SAdmissionController + - k8s_audit + - aws_cloudtrail + - awscloudtrail + - agentless-aws-ml + - gcp_auditlog + - azure_platformlogs + - okta + - agentless-okta-ml + - github + example: k8s_audit + SourceDetails: + type: object + description: Additional details related to the Event source. + required: + - type + properties: + type: + type: string + description: | + The type of component that generated the raw event: + - `cloud` - Cloud platform + - `git` - Git platform + - `iam` - Identity and Access Management platform + - `kubernetes` - Kubernetes control plane + - `workload` - Workload (from bare metal to *aaS compute) + example: cloud + maxLength: 32 + subType: + type: string + description: | + A deeper particularization for the type of component that generated the raw event: + - `auditlogs` - Audit logs of platforms/apps + - `auditWebhooks` - Kubernetes Audit + - `caas` - Container As A Service workload + - `dynamicAdmissionControl` - Dynamic admission control + - `host` - Non-containerized host + - `container` - Container + - `workforce` - Workforce type IAM + example: host + maxLength: 32 + RawEventOriginator: + type: string + description: | + The agent type, hosting the `engine`, that generated the event after the raw event + - `admissionController` - Admission Controller, part of the Cluster Shield + - `agentless` - Agentless + - `cloudConnector` - Cloud Connector + - `linuxAgent` - Linux Host Agent + - `serverlessAgent` - Serverless workloads Agent (CaaS) generated events + - `windowsAgent` - Windows Host Agent + example: admissionController + maxLength: 32 + RawEventCategory: + type: string + description: | + The semantic category (area) of the event in the Sysdig product: + - `kspm` - Kubernetes Security Posture Management events + - `runtime` - Threat detection events + example: runtime + maxLength: 32 + Engine: + type: string + description: "The engine used to generate the event out of the raw signal:\n- `drift` - engine to detect container drifts \n- `falco` - Falco open source engine\n- `list` - list matching engine for list matching rules\n- `machineLearning` - ML engine\n- `malware` - malware detection engine\n" + example: drift + maxLength: 32 + ActionType: + type: string + description: Action type. + enum: + - capture + - container_killed + - container_paused + - container_stopped + - drift_prevented + - malware_prevented + - process_killed + example: capture + BaseAction: + title: Generic Action + type: object + properties: + type: + $ref: '#/components/schemas/ActionType' + required: + - type + CaptureAction: + title: Capture + description: Outcome of the Take Capture action configured in the policy. + allOf: + - $ref: '#/components/schemas/BaseAction' + - type: object + properties: + isSuccessful: + type: boolean + description: Whether or not the Capture was taken successfully. + example: true + errMsg: + description: | + When `isSuccessful` is `false`, details on why the action failed. + type: string + maxLength: 256 + example: maximum number of outstanding captures (1) reached + token: + type: string + description: Token to retrieve the related capture. + example: 4f24c92e-48f5-45ab-84a5-c394f07e855e + maxLength: 36 + afterEventNs: + type: integer + format: int64 + description: | + Amount of nanoseconds after the event the Capture spans. + example: 18000000000 + minimum: 0 + maximum: 9223372036854776000 + beforeEventNs: + type: integer + format: int64 + description: | + Amount of nanoseconds before the event the Capture spans. + example: 5000000000 + minimum: 0 + maximum: 9223372036854776000 + ContainerPausedAction: + title: Container paused + description: Container paused automatic action. + allOf: + - $ref: '#/components/schemas/BaseAction' + - type: object + properties: + isSuccessful: + type: boolean + description: Whether or not the action was completed successfully. + example: true + errMsg: + description: | + When `isSuccessful` is `false`, details on why the action failed. + type: string + maxLength: 256 + example: 'Could not perform cri-o command: could not get pid for container 9566c6966932' + ContainerStoppedAction: + title: Container stopped + description: Container stop automatic action. + allOf: + - $ref: '#/components/schemas/BaseAction' + - type: object + properties: + isSuccessful: + type: boolean + description: Whether or not the action was completed successfully. + example: true + errMsg: + description: | + When `isSuccessful` is `false`, details on why the action failed. + type: string + maxLength: 256 + example: 'Could not perform cri-o command: could not get pid for container 9566c6966932' + ContainerKilledAction: + title: Container killed + description: Container kill automatic action. + allOf: + - $ref: '#/components/schemas/BaseAction' + - type: object + properties: + isSuccessful: + type: boolean + description: Whether or not the action was completed successfully. + example: true + errMsg: + description: | + When `isSuccessful` is `false`, details on why the action failed. + type: string + maxLength: 256 + example: 'Could not perform cri-o command: could not get pid for container 9566c6966932' + DriftPreventedAction: + title: Drift prevented + description: Automatic action preventing the execution of a file not present in the original container image. + allOf: + - $ref: '#/components/schemas/BaseAction' + - type: object + properties: + isSuccessful: + type: boolean + description: Whether or not the action was completed successfully. + example: true + errMsg: + description: | + When `isSuccessful` is `false`, details on why the action failed. + type: string + maxLength: 256 + example: 'Prevention action failed on container 9566c6966932 due to a system error: ...' + MalwarePreventedAction: + title: Malware prevented + description: Malware execution prevention + allOf: + - $ref: '#/components/schemas/BaseAction' + - type: object + properties: + isSuccessful: + type: boolean + description: Whether or not the action was completed successfully. + example: true + errMsg: + description: | + When `isSuccessful` is `false`, details on why the action failed. + type: string + maxLength: 256 + example: 'Prevention action failed on container 9566c6966932 due to a system error: ...' + ProcessKilledAction: + title: Process killed + description: Process kill automatic action. + allOf: + - $ref: '#/components/schemas/BaseAction' + - type: object + properties: + isSuccessful: + type: boolean + description: Whether or not the action was completed successfully. + example: true + errMsg: + description: | + When `isSuccessful` is `false`, details on why the action failed. + type: string + maxLength: 256 + example: Rule with name non_existent refers to a rule that does not exist + Action: + description: Action performed when the event happened. + oneOf: + - $ref: '#/components/schemas/CaptureAction' + - $ref: '#/components/schemas/ContainerPausedAction' + - $ref: '#/components/schemas/ContainerStoppedAction' + - $ref: '#/components/schemas/ContainerKilledAction' + - $ref: '#/components/schemas/DriftPreventedAction' + - $ref: '#/components/schemas/MalwarePreventedAction' + - $ref: '#/components/schemas/ProcessKilledAction' + discriminator: + propertyName: type + mapping: + capture: '#/components/schemas/CaptureAction' + container_paused: '#/components/schemas/ContainerPausedAction' + container_stopped: '#/components/schemas/ContainerStoppedAction' + container_killed: '#/components/schemas/ContainerKilledAction' + drift_prevented: '#/components/schemas/DriftPreventedAction' + malware_prevented: '#/components/schemas/MalwarePreventedAction' + process_killed: '#/components/schemas/ProcessKilledAction' + EventContentType: + type: string + description: The type of the event content. + enum: + - workloadRuntimeDetection + - workloadMLRuntimeDetection + - agentlessMLRuntimeDetection + - k8sAdmissionReview + - agentlessRuntimeDetection + - statefulDetections + example: workloadRuntimeDetection + BaseContent: + description: Base content for all events + type: object + properties: + type: + $ref: '#/components/schemas/EventContentType' + required: + - type + Zone: + type: object + description: A collection of scopes representing business areas. + properties: + zoneName: + type: string + description: Zone name + example: Zone example + maxLength: 256 + zoneId: + $ref: '#/components/schemas/ZoneId' + required: + - zoneName + ArbitraryMapOfStrings: + type: object + description: Key value pairs of values. + additionalProperties: + type: string + maxLength: 256 + example: foo:bar + example: + foo: bar + baz: qux + K8sAdmissionReviewContent: + description: Kubernetes admission requests-posture checks event content + allOf: + - $ref: '#/components/schemas/BaseContent' + - type: object + properties: + namespace: + type: string + example: hub + description: Kubernetes namespace + maxLength: 253 + clusterName: + type: string + example: prod5 + description: Kubernetes cluster name + maxLength: 256 + resourceName: + type: string + example: sfdc-bulk-updates-12345678 + description: Kubernetes resource name + maxLength: 253 + resourceKind: + type: string + example: Job + description: Kubernetes resource kind + maxLength: 63 + zones: + type: array + items: + $ref: '#/components/schemas/Zone' + maxItems: 1000 + description: List of zones that match the scope of the resource. + scanResult: + allOf: + - $ref: '#/components/schemas/ArbitraryMapOfStrings' + - description: Scan result + required: + - scanResult + RuleName: + type: string + description: Name of the rule the event is generated after + example: Create Security Group Rule Allowing SSH Ingress + maxLength: 1024 + RuleType: + type: integer + format: int32 + description: | + Rule type: + - 1 - List matching - process + - 2 - List matching - container + - 3 - List matching - file + - 4 - List matching - network + - 5 - List matching - syscall + - 6 - Falco + - 7 - Drift detection + - 8 - Malware detection + - 11 - ML - Cryptominer detection + - 13 - ML - AWS anomalous login + - 14 - ML - Okta anomalous login + example: 6 + maximum: 14 + minimum: 1 + RuleTags: + type: array + description: The tags attached to the rule + items: + type: string + example: AWS_IAM + maxLength: 64 + maxItems: 1000 + PolicyId: + type: integer + format: int64 + description: ID of the policy that generated the event + example: 2 + maximum: 9223372036854776000 + minimum: 1 + PolicyOrigin: + type: string + example: Sysdig + enum: + - Sysdig + - Secure UI + - Tuner + description: | + The policy author: + - `Sysdig` - default and managed policies + - `Sysdig UI` - users interacting with Sysdig + - `Tuner` - the automated tuner + PolicyNotificationChannelIds: + type: array + description: | + The list of notification channels where an alert is sent after event is generated. + Doesn't account for aggregations and eventual thresholds. + items: + type: integer + format: int64 + minimum: 1 + maximum: 9223372036854776000 + example: 123 + description: The id of the notification channel + maxItems: 100 + AgentlessRuntimeDetectionContent: + description: Agentless CDR event content + allOf: + - $ref: '#/components/schemas/BaseContent' + - type: object + properties: + integrationId: + type: string + example: 2U98T7RVNpAfveU6t9U6JoKVuZb + maxLength: 32 + description: The unique identifier of the integration that generated the event. + integrationType: + type: string + example: cloudtrail + description: The type of integration that generated the event. + enum: + - cloudtrail + - okta + - github + - gcp + - azure + ruleName: + $ref: '#/components/schemas/RuleName' + ruleType: + $ref: '#/components/schemas/RuleType' + ruleTags: + $ref: '#/components/schemas/RuleTags' + policyId: + $ref: '#/components/schemas/PolicyId' + policyOrigin: + $ref: '#/components/schemas/PolicyOrigin' + policyNotificationChannelIds: + $ref: '#/components/schemas/PolicyNotificationChannelIds' + priority: + description: Rule priority + type: string + enum: + - emergency + - alert + - critical + - error + - warning + - informational + - notice + - debug + example: error + output: + type: string + description: Event output, generated after the configured rule + example: Error Detected creation of security group rule allowing SSH ingress (requesting user=github-actions-ansible-molecule-role, requesting IP=1.2.3.4, account ID=123456789012, AWS region=us-east-1, arn=arn:aws:sts::0123456789012:assumed-role/github-actions-ansible-molecule-role/GitHubActions, security group=sg-121364e586677869e) + maxLength: 2048 + fields: + allOf: + - description: List of fields populated based on the engine defaults, the rule output and the configuration + - $ref: '#/components/schemas/ArbitraryMapOfStrings' + required: + - integrationId + - integrationType + - ruleName + - ruleType + - policyId + - policyType + - policyOrigin + RuleSubType: + type: integer + format: int32 + description: | + Rule subtype: + - 1 - List matching - network - inbound + - 2 - List matching - network - outbound + - 3 - List matching - network - listening + - 4 - List matching - file - readwrite + - 5 - List matching - file - read only + example: 1 + minimum: 1 + maximum: 5 + WorkloadRuntimeDetectionContent: + description: Policy Event + allOf: + - $ref: '#/components/schemas/BaseContent' + - type: object + properties: + policyId: + $ref: '#/components/schemas/PolicyId' + ruleName: + $ref: '#/components/schemas/RuleName' + ruleType: + $ref: '#/components/schemas/RuleType' + ruleSubType: + $ref: '#/components/schemas/RuleSubType' + ruleTags: + $ref: '#/components/schemas/RuleTags' + output: + type: string + description: Event output, generated after the configured rule + example: | + File below a known binary directory opened for writing... + maxLength: 2048 + fields: + allOf: + - $ref: '#/components/schemas/ArbitraryMapOfStrings' + - description: List of fields populated based on the engine defaults, the rule output and the configuration + runBook: + type: string + description: The runbook URL as configured in the policy. + example: https://www.mycompany.com/our-runbook-link + maxLength: 2048 + origin: + $ref: '#/components/schemas/PolicyOrigin' + required: + - policyId + - ruleName + - ruleType + - ruleSubType + - ruleTags + - output + - fields + WorkloadMlRuntimeDetectionContent: + description: Workload ML event content + allOf: + - $ref: '#/components/schemas/BaseContent' + - type: object + required: + - command + - exe + - detectedClassProbability + - policyId + properties: + command: + type: string + description: The command name + example: bash + maxLength: 1024 + exe: + type: string + description: The command path + example: /bin/bash + maxLength: 1024 + detectedClassProbability: + type: number + format: float + description: The detected class probability (confidence score) + minimum: 0 + maximum: 1 + example: 0.8 + policyId: + $ref: '#/components/schemas/PolicyId' + AgentlessMlRuntimeDetectionContent: + description: Agentless ML event content + allOf: + - $ref: '#/components/schemas/BaseContent' + - type: object + properties: + policyId: + $ref: '#/components/schemas/PolicyId' + policyOrigin: + $ref: '#/components/schemas/PolicyOrigin' + policyNotificationChannelIds: + $ref: '#/components/schemas/PolicyNotificationChannelIds' + ruleName: + $ref: '#/components/schemas/RuleName' + ruleType: + $ref: '#/components/schemas/RuleType' + fields: + allOf: + - $ref: '#/components/schemas/ArbitraryMapOfStrings' + - description: | + The fields of the event. The fields are specific to the event type. + The fields are arbitrary and are meant to be used for the event type. + required: + - policyOrigin + - ruleName + - ruleType + - fields + Stats: + type: array + description: | + An array representing the relevant APIs and how often they were called in the time window. + items: + type: object + properties: + api: + type: string + example: DescribeInternetGateways + maxLength: 64 + count: + type: integer + format: int32 + example: 1 + minimum: 1 + maximum: 2147483647 + maxItems: 1000 + Sequence: + type: object + description: | + The sequence of events that occurred to trigger the event. + The sequence is represented as a list of events, where each event is a map of key-value pairs. + items: + type: object + properties: + eventId: + type: string + description: The unique identifier of the log event. + example: 9aca10ca-481a-4ab7-b8fa-929c1ebf4c18 + maxLength: 36 + eventName: + type: string + description: The name of the event. + example: CreateUser + maxLength: 64 + eventTime: + type: string + format: date-time + description: The time when the event occurred. + example: '2024-08-11T23:48:40Z' + maxLength: 64 + ingestionId: + type: string + description: The unique identifier of the ingestion. + example: '41157131027' + maxLength: 32 + region: + type: string + description: The region where the event occurred. + example: us-east-1 + maxLength: 64 + source: + type: string + description: The source of the event. + example: aws + maxLength: 64 + sourceIpAddress: + type: string + description: The IP address of the source. + example: 1.1.1.1 + maxLength: 64 + subIngestionId: + type: string + description: The unique identifier of the sub ingestion. + example: us-east-1 + maxLength: 32 + required: + - eventId + - eventName + - eventTime + - ingestionId + - region + - source + - sourceIpAddress + - subIngestionId + StatefulDetectionsContent: + description: | + Stateful detections event content + allOf: + - $ref: '#/components/schemas/BaseContent' + - type: object + properties: + ruleName: + $ref: '#/components/schemas/RuleName' + ruleType: + $ref: '#/components/schemas/RuleType' + ruleTags: + $ref: '#/components/schemas/RuleTags' + policyId: + $ref: '#/components/schemas/PolicyId' + policyOrigin: + $ref: '#/components/schemas/PolicyOrigin' + policyNotificationChannelIds: + $ref: '#/components/schemas/PolicyNotificationChannelIds' + output: + type: string + description: Event output, generated after the configured rule + example: '' + maxLength: 2048 + stats: + $ref: '#/components/schemas/Stats' + sequence: + $ref: '#/components/schemas/Sequence' + fields: + allOf: + - description: List of fields populated based on the engine defaults, the rule output and the configuration + - $ref: '#/components/schemas/ArbitraryMapOfStrings' + required: + - ruleName + - ruleType + - policyId + - policyOrigin + - policyNotificationChannelIds + - output + - fields + - ruleTags + EventContent: + type: object + description: | + Event data. It contains fields from the original event and attributes generated at the engine level. + oneOf: + - $ref: '#/components/schemas/K8sAdmissionReviewContent' + - $ref: '#/components/schemas/AgentlessRuntimeDetectionContent' + - $ref: '#/components/schemas/WorkloadRuntimeDetectionContent' + - $ref: '#/components/schemas/WorkloadMlRuntimeDetectionContent' + - $ref: '#/components/schemas/AgentlessMlRuntimeDetectionContent' + - $ref: '#/components/schemas/StatefulDetectionsContent' + discriminator: + propertyName: type + mapping: + k8sAdmissionReview: '#/components/schemas/K8sAdmissionReviewContent' + agentlessRuntimeDetection: '#/components/schemas/AgentlessRuntimeDetectionContent' + workloadRuntimeDetection: '#/components/schemas/WorkloadRuntimeDetectionContent' + workloadMLRuntimeDetection: '#/components/schemas/WorkloadMlRuntimeDetectionContent' + agentlessMLRuntimeDetection: '#/components/schemas/AgentlessMlRuntimeDetectionContent' + statefulDetections: '#/components/schemas/StatefulDetectionsContent' + Event: + description: Event feed + required: + - id + - timestamp + - originator + - source + - category + - name + - description + - severity + - contentType + properties: + id: + type: string + description: The event id. + example: 15cbf54e34df95404caad1c988cf7c42 + maxLength: 32 + cursor: + type: string + description: | + The cursor that can be used to fetch a set of events surrounding + this same event. By providing this value as `cursor` in a GET + `secureEvents` request, you will get the set of events surrounding + this current event. + example: LTltNGUybXIwdWkzZThhMjE1bjRn + maxLength: 64 + timestamp: + type: integer + format: int64 + description: The event timestamp in nanoseconds. + example: 1617220000000000000 + maximum: 9223372036854776000 + minimum: 0 + originator: + $ref: '#/components/schemas/Originator' + category: + $ref: '#/components/schemas/Category' + source: + $ref: '#/components/schemas/Source' + sourceDetails: + $ref: '#/components/schemas/SourceDetails' + rawEventOriginator: + $ref: '#/components/schemas/RawEventOriginator' + rawEventCategory: + $ref: '#/components/schemas/RawEventCategory' + engine: + $ref: '#/components/schemas/Engine' + name: + type: string + description: Name of the policy the event is generated after. + example: Launch Privileged Container + maxLength: 64 + description: + type: string + description: Description of the policy the event is generated after. + example: | + Identify a container being created with privileged=true + maxLength: 1024 + severity: + type: integer + format: int32 + description: | + The policy severity: + - `0-3` - High + - `4-5` - Medium + - `6` - Low + - `7` - Info + minimum: 0 + maximum: 7 + example: 4 + actions: + description: actions that have been triggered by the event + type: array + items: + $ref: '#/components/schemas/Action' + maxItems: 1000 + content: + $ref: '#/components/schemas/EventContent' + labels: + $ref: '#/components/schemas/ArbitraryMapOfStrings' + ListEventsResponse: + type: object + description: The list of events matching a search criteria. + required: + - page + - data + properties: + page: + $ref: '#/components/schemas/EventsFeedPage' + data: + description: The list of events + type: array + items: + $ref: '#/components/schemas/Event' + maxItems: 20000 + SupportedFilter: + type: object + description: A supported field for filtering events. + properties: + id: + type: string + description: Attribute onto which filtering is supported. + example: container.image.id + maxLength: 64 + type: + $ref: '#/components/schemas/SupportedFilterType' + operands: + type: array + items: + $ref: '#/components/schemas/Operand' + description: The list of supported operands for filtering events. + maxItems: 10 + minItems: 0 + uniqueItems: true + required: + - id + - type + SupportedFiltersResponse: + type: object + description: The list of supported attributes for filtering events. + properties: + data: + type: array + items: + $ref: '#/components/schemas/SupportedFilter' + description: The list of supported attributes for filtering events. + maxItems: 1000 + required: + - data + IntegrationType: + type: string + description: The platform to which data will be forwarded + enum: + - SYSLOG + - SPLUNK + - MCM + - QRADAR + - WEBHOOK + - KAFKA + - CHRONICLE + - SENTINEL + - SQS + - PUBSUB + - SCC + - ELASTIC + example: SYSLOG + IntegrationTypesResponse: + type: object + title: Integration types + description: The list of supported integration types + required: + - data + properties: + data: + type: array + maxItems: 32 + items: + $ref: '#/components/schemas/IntegrationType' + IntegrationChannel: + type: string + description: Type of data to forward + enum: + - SECURE_EVENTS_POLICIES + - ACTIVITY_AUDIT + - MONITOR_EVENTS + - PLATFORM_AUDIT + example: ACTIVITY_AUDIT + IntegrationChannels: + type: array + description: Data types to forward. Must be compatible with the specified Integration type + maxItems: 32 + items: + $ref: '#/components/schemas/IntegrationChannel' + example: + - SECURE_EVENTS_POLICIES + - ACTIVITY_AUDIT + IntegrationChannelsResponse: + type: object + title: List Integrations Channels V1 + description: Integration Channels Response + required: + - data + properties: + data: + $ref: '#/components/schemas/IntegrationChannels' + BaseIntegrationPayload: + type: object + title: Integration + required: + - name + - type + properties: + name: + description: A descriptive name to give to the integration + type: string + maxLength: 512 + example: name + isEnabled: + description: If the forwarding should be enabled or not + type: boolean + default: true + example: true + type: + $ref: '#/components/schemas/IntegrationType' + channels: + $ref: '#/components/schemas/IntegrationChannels' + KeyValueObject: + type: object + title: Key-value object representation + required: + - key + - value + properties: + key: + type: string + description: The key + maxLength: 512 + example: mykey + value: + type: string + description: The value + maxLength: 512 + example: myvalue + BaseConnectionInfoAmazonSqs: + type: object + title: Amazon SQS + required: + - region + - queue + properties: + ownerAccount: + type: string + description: The AWS account ID of the account that created the queue + maxLength: 256 + example: '123456789012' + region: + type: string + description: Region in which the SQS queue is hosted + maxLength: 16 + example: us-east + queue: + type: string + description: Queue name + maxLength: 16 + example: sysdig-efo-queue + delay: + type: integer + description: Delay, in seconds, applied to the data + format: int64 + minimum: 0 + maximum: 9223372036854776000 + example: 1 + headers: + type: array + description: 'Extra headers to add to the payload. Each header mapping requires 2 keys: ''key'' for the header key and ''value'' for its value' + maxItems: 256 + items: + $ref: '#/components/schemas/KeyValueObject' + GetAmazonSqsIntegrationResponse: + description: Get Amazon SQS Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoAmazonSqs' + BaseConnectionInfoChronicle: + type: object + title: Google Chronicle + properties: + region: + type: string + description: The target region + enum: + - us + - europe + - asia-southeast1 + default: us + example: europe + BaseConnectionInfoChronicleV2: + type: object + title: Google Chronicle V2 + properties: + region: + type: string + description: The target region + enum: + - us + - europe + - europe-west2 + - europe-west3 + - europe-west6 + - asia-southeast1 + - asia-south1 + - asia-northeast1 + - me-west1 + - me-central2 + - australia-southeast1 + default: us + example: europe + chronicleCustomerId: + type: string + description: Unique identifier (UUID) corresponding to a particular Chronicle instance + example: 12345678-1234-1234-1234-123456789012 + maxLength: 64 + namespace: + type: string + description: User-configured environment namespace to identify the data domain the logs originated from + example: test + maxLength: 64 + required: + - chronicleCustomerId + - namespace + GetChronicleIntegrationResponse: + description: Get Google Chronicle Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + oneOf: + - $ref: '#/components/schemas/BaseConnectionInfoChronicle' + - $ref: '#/components/schemas/BaseConnectionInfoChronicleV2' + BaseConnectionInfoElasticsearch: + type: object + title: Connection Info Elasticsearch + required: + - endpoint + - index + properties: + endpoint: + type: string + description: Elasticsearch instance endpoint URL + maxLength: 256 + example: https://elastic.mydomain.com + index: + type: string + description: Name of the index to store the data in + maxLength: 256 + example: main + isInsecure: + type: boolean + description: Don't verify TLS certificate + default: false + example: false + auth: + type: string + description: Authentication method + enum: + - BASIC_AUTH + - BEARER_TOKEN + example: BASIC_AUTH + format: + type: string + description: | + If specified, transforms `content.fields` and `labels` + * `KV_PAIRS` - from objects (i.e. `{"foo": "bar", ...}`) to arrays of objects with "key" and "value" properties {i.e. `[{"key" : "foo", "value": "bar"}, ...]`) + enum: + - KV_PAIRS + example: KV_PAIRS + GetElasticsearchIntegrationResponse: + description: Get Elastic Search Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoElasticsearch' + BaseConnectionInfoGooglePubSub: + type: object + title: Google Pub/Sub + required: + - project + - topic + properties: + project: + type: string + description: GCP project ID hosting the target pub/sub + maxLength: 16 + example: myproject + topic: + type: string + description: pub/sub topic onto which publish the data + maxLength: 16 + example: mytopic + orderingKey: + type: string + description: The key to use to order the messages. Required to enable ordered delivery + maxLength: 16 + example: key + attributes: + type: array + description: 'Extra headers to add to the request. Each header mapping requires 2 keys: "key" for the header key and "value" for its value' + maxItems: 128 + items: + $ref: '#/components/schemas/KeyValueObject' + GetGooglePubSubIntegrationResponse: + description: Get Google Pub/Sub Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoGooglePubSub' + BaseConnectionInfoGoogleScc: + type: object + title: Google SCC + required: + - organization + properties: + organization: + type: string + description: ID of your GCP organization + maxLength: 16 + example: myorg + securityMarks: + type: array + description: additional annotations to add to assets or findings as they get forwarded to Security Command Center + maxItems: 256 + items: + $ref: '#/components/schemas/KeyValueObject' + GetGoogleSccIntegrationResponse: + description: Get Google SCC Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoGoogleScc' + KafkaPlaintext: + title: Plaintext + properties: + isTlsEnabled: + type: boolean + enum: + - false + example: false + KafkaTlsEncrypted: + title: TLS encrypted + properties: + isTlsEnabled: + type: boolean + enum: + - true + example: true + isInsecure: + type: boolean + description: Skip TLS certificate verification + default: false + example: false + BaseConnectionInfoKafka: + type: object + title: Kafka + required: + - brokers + - topic + properties: + brokers: + type: array + description: 'Kafka server endpoint. A Kafka cluster may provide several brokers; it follows the ''hostname: port'' (without protocol scheme).' + maxItems: 32 + items: + type: string + maxLength: 256 + example: kafka.mydomain.com:9091 + topic: + type: string + description: Kafka topic where you want to store the forwarded data + maxLength: 256 + example: mytopic + balancer: + type: string + description: Algorithm that the client uses to multiplex data between the multiple Brokers. For compatibility with the Java client, Murmur2 is used as the default partitioner + enum: + - roundrobin + - leastbytes + - hash + - crc32 + - murmur2 + default: murmur2 + example: roundrobin + compression: + type: string + description: Compression standard used for the data + enum: + - lz4 + - snappy + - zstd + - gzip + example: gzip + oneOf: + - $ref: '#/components/schemas/KafkaPlaintext' + - $ref: '#/components/schemas/KafkaTlsEncrypted' + GssapiConnectionInfoKafka: + type: object + title: Kerberos (GSSAPI) authentication + required: + - auth + - principal + - realm + - service + - krb5 + properties: + auth: + type: string + description: The authentication method to optionally use. Currently supporting only GSSAPI + enum: + - gssapi + example: gssapi + principal: + type: string + description: GSSAPI principal + maxLength: 256 + example: myprincipal + realm: + type: string + description: GSSAPI realm + maxLength: 256 + example: myrealm + service: + type: string + description: GSSAPI Service name + maxLength: 256 + example: myservice + krb5: + type: string + description: Kerberos krb5.conf file content for GSSAPI + maxLength: 1048576 + example: '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log' + GetKafkaIntegrationResponse: + description: Get Kafka Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoKafka' + - $ref: '#/components/schemas/GssapiConnectionInfoKafka' + BaseConnectionInfoMcm: + type: object + title: IBM Multicloud Manager + required: + - endpoint + properties: + endpoint: + type: string + description: The URL, including protocol and port (if non standard), to your IBM Cloud Pak for Multicloud Management API endpoint + maxLength: 256 + example: https://mcm.mydomain.com:8443 + accountId: + type: string + description: IBM Account ID + maxLength: 256 + default: id-mycluster-account + example: id-mycluster-account + providerId: + type: string + description: The provider the findings will be associated to + maxLength: 256 + default: sysdig-secure + example: provider-id + noteName: + type: string + description: The note to use. If unspecified, a note with `policy-event` ID will be created and used + maxLength: 256 + example: note-name + isInsecure: + type: boolean + description: Skip TLS certificate verification + default: false + example: false + GetMcmIntegrationResponse: + description: Get IBM Multicloud Manager Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoMcm' + BaseConnectionInfoMicrosoftSentinel: + type: object + title: Microsoft Sentinel + required: + - workspaceId + properties: + workspaceId: + type: string + description: Log Analytics workspace ID + maxLength: 63 + example: 578aef60-81be-4d38-a278-ec77925edcf0 + GetMicrosoftSentinelIntegrationResponse: + description: Get Microsoft Sentinel Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoMicrosoftSentinel' + BaseConnectionInfoQradar: + type: object + title: IBM QRadar + required: + - address + - port + properties: + address: + type: string + description: DNS name or IP of the QRadar instance + maxLength: 256 + example: qradar.mydomain.com + port: + type: integer + description: QRadar Management Port + format: int64 + minimum: 1 + maximum: 65535 + example: 514 + isInsecure: + type: boolean + description: Don't verify TLS certificate + example: false + isTls: + type: boolean + description: Use TLS encryption + default: false + example: true + GetQradarIntegrationResponse: + description: Get IBM QRadar Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoQradar' + BaseConnectionInfoSplunk: + type: object + title: Splunk + required: + - endpoint + properties: + endpoint: + type: string + description: URL of the Splunk instance + maxLength: 256 + example: https://splunk.mydomain.com:443/services/collector/event + sourceType: + type: string + description: Source type to override [Sysdig standard data type to source type mapping](https://docs.sysdig.com/en/forward-splunk#reference-data-categories-mapped-to-source-types) + maxLength: 256 + example: cisco_syslog + index: + type: string + description: index to send data to. If unspecified, it will be used the index specified on the HTTP Event Collector configuration on Splunk + maxLength: 256 + example: main + isInsecure: + type: boolean + description: Skip TLS certificate verification + example: false + certificateId: + type: integer + description: ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field + format: int64 + minimum: 1 + maximum: 9223372036854776000 + example: 1 + GetSplunkIntegrationResponse: + description: Get Splunk Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoSplunk' + BaseConnectionInfoSyslog: + type: object + title: Syslog + required: + - address + - port + - messageFormat + properties: + address: + type: string + description: Address of the Syslog server + maxLength: 256 + example: syslog.mydomain.com + port: + type: integer + description: port of the syslog server + format: int64 + minimum: 1 + maximum: 65535 + example: 514 + messageFormat: + type: string + description: The syslog message format. RFC_5425 is TLS only + enum: + - RFC_3164 + - RFC_5424 + - RFC_5425 + example: RFC_5424 + type: + type: string + description: protocol, tcp or udp (case insensitive) + enum: + - tcp + - udp + - tls + default: tcp + example: udp + isInsecure: + type: boolean + description: Skip TLS certificate verification + default: false + example: false + formatter: + type: string + description: The message content format + enum: + - CEF + - LEEF + - JSON + default: JSON + example: JSON + certificateId: + type: integer + description: ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field + format: int64 + minimum: 1 + maximum: 9223372036854776000 + example: 1 + GetSyslogIntegrationResponse: + description: Get Syslog Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoSyslog' + BaseConnectionInfoWebhook: + type: object + title: Webhook + required: + - endpoint + properties: + endpoint: + type: string + description: Webhook endpoint following the schema protocol + maxLength: 128 + example: https://endpoint.mydomain.com + isInsecure: + type: boolean + description: Skip TLS certificate verification + default: false + example: false + headers: + type: array + description: 'Extra headers to add to the request. Each header mapping requires 2 keys: ''key'' for the header key and ''value'' for its value' + maxItems: 256 + items: + $ref: '#/components/schemas/KeyValueObject' + output: + type: string + description: Payload format + enum: + - json + - ndjson + default: json + example: ndjson + timestampFormat: + type: string + description: The resolution of the "timestamp" field in the payload + enum: + - seconds + - milliseconds + - microseconds + - nanoseconds + default: nanoseconds + example: seconds + auth: + type: string + description: Authentication method + enum: + - BASIC_AUTH + - BEARER_TOKEN + - SIGNATURE + - CERTIFICATE + example: BASIC_AUTH + certificateId: + description: ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field + type: integer + format: int64 + minimum: 1 + maximum: 9223372036854776000 + example: 1 + GetWebhookIntegrationResponse: + description: Get Webhook Integration Response + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - id + - name + - isEnabled + - type + - channels + - connectionInfo + properties: + id: + type: integer + format: int64 + description: The ID of the integration + minimum: 1 + maximum: 9223372036854776000 + example: 1 + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoWebhook' + IntegrationResponse: + description: Get Integration Response + oneOf: + - $ref: '#/components/schemas/GetAmazonSqsIntegrationResponse' + - $ref: '#/components/schemas/GetChronicleIntegrationResponse' + - $ref: '#/components/schemas/GetElasticsearchIntegrationResponse' + - $ref: '#/components/schemas/GetGooglePubSubIntegrationResponse' + - $ref: '#/components/schemas/GetGoogleSccIntegrationResponse' + - $ref: '#/components/schemas/GetKafkaIntegrationResponse' + - $ref: '#/components/schemas/GetMcmIntegrationResponse' + - $ref: '#/components/schemas/GetMicrosoftSentinelIntegrationResponse' + - $ref: '#/components/schemas/GetQradarIntegrationResponse' + - $ref: '#/components/schemas/GetSplunkIntegrationResponse' + - $ref: '#/components/schemas/GetSyslogIntegrationResponse' + - $ref: '#/components/schemas/GetWebhookIntegrationResponse' + discriminator: + propertyName: type + mapping: + SQS: '#/components/schemas/GetAmazonSqsIntegrationResponse' + CHRONICLE: '#/components/schemas/GetChronicleIntegrationResponse' + ELASTIC: '#/components/schemas/GetElasticsearchIntegrationResponse' + PUBSUB: '#/components/schemas/GetGooglePubSubIntegrationResponse' + SCC: '#/components/schemas/GetGoogleSccIntegrationResponse' + KAFKA: '#/components/schemas/GetKafkaIntegrationResponse' + MCM: '#/components/schemas/GetMcmIntegrationResponse' + SENTINEL: '#/components/schemas/GetMicrosoftSentinelIntegrationResponse' + QRADAR: '#/components/schemas/GetQradarIntegrationResponse' + SPLUNK: '#/components/schemas/GetSplunkIntegrationResponse' + SYSLOG: '#/components/schemas/GetSyslogIntegrationResponse' + WEBHOOK: '#/components/schemas/GetWebhookIntegrationResponse' + ListIntegrationsResponse: + type: object + title: List Integrations Response V1 + required: + - data + properties: + data: + type: array + maxItems: 512 + items: + $ref: '#/components/schemas/IntegrationResponse' + PrivateConnectionInfoChronicleV2: + title: Private Google Chronicle V2 Connection Info + properties: + credentialsOAuth2: + type: string + description: The Chronicle v2 OAuth2 credentials + maxLength: 1048576 + example: '{ "type": "service_account", "project_id": "malachite", "client_id": "1234567", }' + CreateChronicleIntegrationConnInfoV2: + description: Create Chronicle Integration Connection V2 Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoChronicleV2' + - type: object + required: + - credentialsOAuth2 + - $ref: '#/components/schemas/PrivateConnectionInfoChronicleV2' + PrivateConnectionInfoChronicle: + title: Private Google Chronicle Connection Info + properties: + apiKey: + type: string + description: The Chronicle v1 API key + maxLength: 64 + example: jeequiedahtaiSh2uM0chigheekaego8 + CreateChronicleIntegrationConnInfo: + description: Create Chronicle Integration Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoChronicle' + - type: object + required: + - apiKey + deprecated: true + - $ref: '#/components/schemas/PrivateConnectionInfoChronicle' + CreateChronicleIntegrationRequest: + description: Create Chronicle Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Chronicle Create Connection Info + oneOf: + - $ref: '#/components/schemas/CreateChronicleIntegrationConnInfoV2' + - $ref: '#/components/schemas/CreateChronicleIntegrationConnInfo' + PrivateConnectionInfoElasticsearch: + title: Private ConnectionInfo Elasticsearch + properties: + auth: + type: string + description: Authentication method + enum: + - BASIC_AUTH + - BEARER_TOKEN + example: BASIC_AUTH + secret: + description: Authentication secret. To be set if auth is specified + type: string + maxLength: 256 + example: Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK + AuthenticatedConnectionInfoElasticsearch: + title: Elasticsearch Authenticated Connection Info + required: + - secret + - auth + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoElasticsearch' + - $ref: '#/components/schemas/PrivateConnectionInfoElasticsearch' + CreateElasticsearchIntegrationRequest: + description: Create Elasticsearch Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + anyOf: + - $ref: '#/components/schemas/BaseConnectionInfoElasticsearch' + - $ref: '#/components/schemas/AuthenticatedConnectionInfoElasticsearch' + PrivateConnectionInfoGooglePubSub: + title: Private Google Pub/Sub Connection Info + properties: + credentialsJson: + type: string + description: JSON credentials for the service account Sysdig will use to send data + maxLength: 256 + example: '{"key":"value"}' + CreateGooglePubSubIntegrationRequest: + description: Create Google Pub/Sub Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Google Pub/Sub Create Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoGooglePubSub' + - $ref: '#/components/schemas/PrivateConnectionInfoGooglePubSub' + - type: object + required: + - credentialsJson + PrivateConnectionInfoKafka: + title: Private Kafka Connection Info + properties: + keytab: + type: string + description: base64 encoded Kerberos keytab + maxLength: 1048576 + example: BQIAAAA3AAEAClNZU0RJRy5DT00ABnN5c2RpZwAAAAFlhdTkAQAXABCIRvfq7o+xF60Gvdgwt1hsAAAAAQ== + AuthenticatedConnectionInfoKafka: + title: Kafka Create Authenticated Connection Info + required: + - keytab + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoKafka' + - $ref: '#/components/schemas/GssapiConnectionInfoKafka' + - $ref: '#/components/schemas/PrivateConnectionInfoKafka' + CreateKafkaIntegrationRequest: + description: Create Kafka Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + oneOf: + - $ref: '#/components/schemas/BaseConnectionInfoKafka' + - $ref: '#/components/schemas/AuthenticatedConnectionInfoKafka' + PrivateConnectionInfoMcm: + title: Private IBM Multicloud Manager Connection Info + properties: + apiKey: + type: string + description: IBM Cloud API Key + maxLength: 256 + example: dohch1OhPaewoo2edaifaefahphaoMee + CreateMcmIntegrationRequest: + description: Create IBM Multicloud Manager Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: IBM Multicloud Cloud Create Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoMcm' + - $ref: '#/components/schemas/PrivateConnectionInfoMcm' + - type: object + required: + - apiKey + CreateQradarIntegrationRequest: + description: Create IBM QRadar Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoQradar' + PrivateConnectionInfoGoogleScc: + title: Private Google SCC Connection Info + type: object + properties: + credentialsJson: + type: string + description: JSON credentials for the service account Sysdig will use to send data + maxLength: 256 + example: '{"key":"value"}' + CreateGoogleSccIntegrationRequest: + description: Create Google SCC Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Google SCC Create Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoGoogleScc' + - $ref: '#/components/schemas/PrivateConnectionInfoGoogleScc' + - type: object + required: + - credentialsJson + PrivateConnectionInfoMicrosoftSentinel: + title: Private Microsoft Sentinel Connection Info + properties: + secret: + type: string + description: Log analytics primary key + maxLength: 256 + example: b29qb29jdWIyd2F5N0FoWThzYWhuZzZhaWdoMWVlcmFoM3BoZXRvZURpZTdlaWJhCg== + CreateMicrosoftSentinelIntegrationRequest: + description: Save Microsoft Sentinel Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Microsoft Sentinel Create Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoMicrosoftSentinel' + - $ref: '#/components/schemas/PrivateConnectionInfoMicrosoftSentinel' + - type: object + required: + - secret + PrivateConnectionInfoSplunk: + title: Private Splunk Connection Info + properties: + token: + type: string + description: HTTP Event Collector Token + maxLength: 1024 + example: eyJraWQiOiJzcGx1bmsuc2VjcmV0IiwiYWxnIjoiSFM1MTIiLCJ2ZXIiOiJ2MSIsInR0eXAiOiJzdGF0aWMifQ.eyJpc3MiOiJhZG1pbiBmcm9tIHNvMSIsInN1YiI6ImFkbWluIiwiYXVkIjoiVG9rZW50b3duIiwiaWRwIjoic3BsdW5rIiwianRpIjoiY2EwOGE2ODQyZDNlYzIxYjRkMTg1NDk3NTRlOGU4ZDc3YTM5MmQ3ZTE3ZGUyOGNmZGM3MWI3ODAwNWExNmU3OCIsImlhdCI6MTU1MTk5OTM0NiwiZXhwIjowLCJuYnIiOjE1NTE5OTkzNDZ9.RrZxe89qchfEtrEnG1PjTmJzO_JTtPX8xqSiSunYGylupG114KujO3-E88TtM-Tf51qtVpJydR3JSJpPfaf17w + CreateSplunkIntegrationRequest: + description: Save Splunk Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Splunk Create Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoSplunk' + - $ref: '#/components/schemas/PrivateConnectionInfoSplunk' + - type: object + required: + - token + PrivateConnectionInfoAmazonSqs: + title: Private Amazon SQS Connection Info + properties: + accessKey: + type: string + description: Access Key for authenticating on AWS to send data on the queue + maxLength: 32 + example: myaccesskey + accessSecret: + type: string + description: Access Secret for authenticating on AWS to send data on the queue + maxLength: 256 + example: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY + CreateAmazonSqsIntegrationRequest: + description: Create Amazon SQS Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Amazon SQS Create Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoAmazonSqs' + - $ref: '#/components/schemas/PrivateConnectionInfoAmazonSqs' + - type: object + required: + - accessKey + - accessSecret + CreateSyslogIntegrationRequest: + description: Create Syslog Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoSyslog' + PrivateConnectionInfoWebhook: + title: Private Webhook Connection Info + properties: + secret: + type: string + description: Secret to use, according to the "auth" value. + maxLength: 128 + example: eiMaimiYohrahbaeS6iaNgo8iu + AuthenticatedConnectionInfoWebhook: + title: WEBHOOK Create Authenticated Connection Info + required: + - secret + - auth + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoWebhook' + - $ref: '#/components/schemas/PrivateConnectionInfoWebhook' + CreateWebhookIntegrationRequest: + title: Create Webhook Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + anyOf: + - $ref: '#/components/schemas/BaseConnectionInfoWebhook' + - $ref: '#/components/schemas/AuthenticatedConnectionInfoWebhook' + CreateIntegrationRequest: + description: Create Integration Request + oneOf: + - $ref: '#/components/schemas/CreateChronicleIntegrationRequest' + - $ref: '#/components/schemas/CreateElasticsearchIntegrationRequest' + - $ref: '#/components/schemas/CreateGooglePubSubIntegrationRequest' + - $ref: '#/components/schemas/CreateKafkaIntegrationRequest' + - $ref: '#/components/schemas/CreateMcmIntegrationRequest' + - $ref: '#/components/schemas/CreateQradarIntegrationRequest' + - $ref: '#/components/schemas/CreateGoogleSccIntegrationRequest' + - $ref: '#/components/schemas/CreateMicrosoftSentinelIntegrationRequest' + - $ref: '#/components/schemas/CreateSplunkIntegrationRequest' + - $ref: '#/components/schemas/CreateSyslogIntegrationRequest' + - $ref: '#/components/schemas/CreateAmazonSqsIntegrationRequest' + - $ref: '#/components/schemas/CreateWebhookIntegrationRequest' + discriminator: + propertyName: type + mapping: + CHRONICLE: '#/components/schemas/CreateChronicleIntegrationRequest' + ELASTIC: '#/components/schemas/CreateElasticsearchIntegrationRequest' + PUBSUB: '#/components/schemas/CreateGooglePubSubIntegrationRequest' + KAFKA: '#/components/schemas/CreateKafkaIntegrationRequest' + MCM: '#/components/schemas/CreateMcmIntegrationRequest' + QRADAR: '#/components/schemas/CreateQradarIntegrationRequest' + SCC: '#/components/schemas/CreateGoogleSccIntegrationRequest' + SENTINEL: '#/components/schemas/CreateMicrosoftSentinelIntegrationRequest' + SPLUNK: '#/components/schemas/CreateSplunkIntegrationRequest' + SQS: '#/components/schemas/CreateAmazonSqsIntegrationRequest' + SYSLOG: '#/components/schemas/CreateSyslogIntegrationRequest' + WEBHOOK: '#/components/schemas/CreateWebhookIntegrationRequest' + UpdateChronicleIntegrationConnInfoV2: + description: Update Chronicle Integration Connection V2 Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoChronicleV2' + - $ref: '#/components/schemas/PrivateConnectionInfoChronicleV2' + UpdateChronicleIntegrationConnInfo: + description: Update Chronicle Integration Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoChronicle' + - $ref: '#/components/schemas/PrivateConnectionInfoChronicle' + UpdateChronicleIntegrationRequest: + description: Update Chronicle Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Chronicle Update Connection Info + anyOf: + - $ref: '#/components/schemas/UpdateChronicleIntegrationConnInfoV2' + - $ref: '#/components/schemas/UpdateChronicleIntegrationConnInfo' + UpdateElasticsearchIntegrationRequest: + description: Update Elasticsearch Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoElasticsearch' + - $ref: '#/components/schemas/PrivateConnectionInfoElasticsearch' + UpdateGooglePubSubIntegrationRequest: + description: Update Google Pub/Sub Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Google Pub/Sub Create Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoGooglePubSub' + - $ref: '#/components/schemas/PrivateConnectionInfoGooglePubSub' + UpdateKafkaIntegrationRequest: + description: Update Kafka Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoKafka' + - $ref: '#/components/schemas/GssapiConnectionInfoKafka' + - $ref: '#/components/schemas/PrivateConnectionInfoKafka' + UpdateMcmIntegrationRequest: + description: Update IBM Multicloud Manager Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: IBM Multicloud Cloud Create Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoMcm' + - $ref: '#/components/schemas/PrivateConnectionInfoMcm' + UpdateQradarIntegrationRequest: + description: Save IBM QRadar Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoQradar' + UpdateGoogleSccIntegrationRequest: + description: Update Google SCC Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Google SCC Create Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoGoogleScc' + - $ref: '#/components/schemas/PrivateConnectionInfoGoogleScc' + UpdateMicrosoftSentinelIntegrationRequest: + description: Update Microsoft Sentinel Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Microsoft Sentinel Update Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoMicrosoftSentinel' + - $ref: '#/components/schemas/PrivateConnectionInfoMicrosoftSentinel' + UpdateSplunkIntegrationRequest: + description: Update Splunk Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Splunk Update Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoSplunk' + - $ref: '#/components/schemas/PrivateConnectionInfoSplunk' + UpdateAmazonSqsIntegrationRequest: + description: Update Amazon SQS Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + title: Amazon SQS Update Connection Info + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoAmazonSqs' + - $ref: '#/components/schemas/PrivateConnectionInfoAmazonSqs' + UpdateSyslogIntegrationRequest: + description: Update Syslog Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + $ref: '#/components/schemas/BaseConnectionInfoSyslog' + UpdateWebhookIntegrationRequest: + description: Update Webhook Integration Request + allOf: + - $ref: '#/components/schemas/BaseIntegrationPayload' + - type: object + required: + - name + - type + - connectionInfo + properties: + connectionInfo: + allOf: + - $ref: '#/components/schemas/BaseConnectionInfoWebhook' + - $ref: '#/components/schemas/PrivateConnectionInfoWebhook' + UpdateIntegrationRequest: + description: Update Integration Request + oneOf: + - $ref: '#/components/schemas/UpdateChronicleIntegrationRequest' + - $ref: '#/components/schemas/UpdateElasticsearchIntegrationRequest' + - $ref: '#/components/schemas/UpdateGooglePubSubIntegrationRequest' + - $ref: '#/components/schemas/UpdateKafkaIntegrationRequest' + - $ref: '#/components/schemas/UpdateMcmIntegrationRequest' + - $ref: '#/components/schemas/UpdateQradarIntegrationRequest' + - $ref: '#/components/schemas/UpdateGoogleSccIntegrationRequest' + - $ref: '#/components/schemas/UpdateMicrosoftSentinelIntegrationRequest' + - $ref: '#/components/schemas/UpdateSplunkIntegrationRequest' + - $ref: '#/components/schemas/UpdateAmazonSqsIntegrationRequest' + - $ref: '#/components/schemas/UpdateSyslogIntegrationRequest' + - $ref: '#/components/schemas/UpdateWebhookIntegrationRequest' + discriminator: + propertyName: type + mapping: + CHRONICLE: '#/components/schemas/UpdateChronicleIntegrationRequest' + ELASTIC: '#/components/schemas/UpdateElasticsearchIntegrationRequest' + PUBSUB: '#/components/schemas/UpdateGooglePubSubIntegrationRequest' + KAFKA: '#/components/schemas/UpdateKafkaIntegrationRequest' + MCM: '#/components/schemas/UpdateMcmIntegrationRequest' + QRADAR: '#/components/schemas/UpdateQradarIntegrationRequest' + SCC: '#/components/schemas/UpdateGoogleSccIntegrationRequest' + SENTINEL: '#/components/schemas/UpdateMicrosoftSentinelIntegrationRequest' + SPLUNK: '#/components/schemas/UpdateSplunkIntegrationRequest' + SQS: '#/components/schemas/UpdateAmazonSqsIntegrationRequest' + SYSLOG: '#/components/schemas/UpdateSyslogIntegrationRequest' + WEBHOOK: '#/components/schemas/UpdateWebhookIntegrationRequest' + PoliciesSummaryEntry: + type: object + description: A Policy summary that indicates whether a policy failed or passed. + required: + - id + - name + - isPassed + properties: + id: + type: integer + description: Policy Id + example: 2 + format: int64 + minimum: 1 + maximum: 9223372036854776000 + name: + type: string + description: Policy Name + example: Sysdig Kubernetes + maxLength: 256 + isPassed: + type: boolean + description: True for passed, false for failed + example: false + PosturePolicySummary: + type: object + description: The posture policy summary + required: + - passPercentage + - policies + properties: + passPercentage: + type: integer + description: Percentage of policies passing + format: int32 + example: 0 + minimum: 0 + maximum: 100 + policies: + type: array + description: The policies list + items: + $ref: '#/components/schemas/PoliciesSummaryEntry' + maxItems: 10000 + VulnerabilitySummary: + required: + - criticalSeverityCount + - highSeverityCount + - mediumSeverityCount + - lowSeverityCount + - negligibleSeverityCount + - hasExploit + properties: + criticalSeverityCount: + format: int32 + type: integer + example: 1 + minimum: 0 + maximum: 2147483647 + description: Number of critical severity vulnerabilities + highSeverityCount: + format: int32 + type: integer + example: 2 + minimum: 0 + maximum: 2147483647 + description: Number of high severity vulnerabilities + mediumSeverityCount: + format: int32 + type: integer + example: 3 + minimum: 0 + maximum: 2147483647 + description: Number of medium severity vulnerabilities + lowSeverityCount: + format: int32 + type: integer + example: 4 + minimum: 0 + maximum: 2147483647 + description: Number of low severity vulnerabilities + negligibleSeverityCount: + format: int32 + type: integer + example: 5 + minimum: 0 + maximum: 2147483647 + description: Number of negligible severity vulnerabilities + hasExploit: + type: boolean + example: true + description: Indicates if a resource has an exploit + type: object + description: Vulnerability summary of a resource + InventoryZone: + type: object + description: a Zone + required: + - id + - name + properties: + id: + type: integer + description: The zone identifier + example: 1 + format: int64 + minimum: 1 + maximum: 9223372036854776000 + name: + type: string + description: The zone name + example: Entire Infrastructure + maxLength: 256 + ContainerInfo: + required: + - podName + - containerId + - containerName + description: Kubernetes container information. + properties: + podName: + type: string + description: Pod name + example: nginx + maxLength: 63 + containerId: + type: string + description: Container id. + example: 1b883a5d-06c7-4e90-9973-d42d9889de27 + maxLength: 64 + containerName: + type: string + description: Container name. + example: my-app + maxLength: 253 + pullString: + type: string + description: Pull string for image used for the container. + example: redis/redis:1.0.0 + maxLength: 1024 + InventoryResource: + required: + - hash + - name + - platform + - type + - category + - lastSeen + - labels + - metadata + - resourceOrigin + - zones + description: An Inventory Resource + properties: + hash: + type: string + description: Resource unique identifier + example: 62e348b71acd7be14a4bdfcc + maxLength: 64 + name: + type: string + description: Resource name + example: kube-proxy + maxLength: 8192 + platform: + type: string + description: The resource platform (such as AWS, GCP, Kubernetes, or Azure) + example: Kubernetes + maxLength: 256 + type: + type: string + description: The resource type + example: DaemonSet + maxLength: 256 + category: + type: string + example: Compute + description: The resource category + maxLength: 256 + lastSeen: + type: integer + description: Last scan date as unix timestamp + example: 1660742138 + format: int64 + minimum: 0 + maximum: 9223372036854776000 + isExposed: + type: boolean + description: Indicates if a resource is exposed to the internet + example: true + validatedExposure: + type: boolean + description: Indicates if a resource which is exposed to the internet could be reach by our network exposure validator + example: true + labels: + type: array + items: + type: string + example: env:Prod + maxLength: 8192 + description: The resource labels + maxItems: 10000 + metadata: + type: object + description: The resource metadata + example: + cluster: risks-aws-eks-liverisks + containerNames: + - kube-proxy + distribution: EKS + distributionVersion: '1.29' + imagesCount: '1' + namespace: kube-system + pullStrings: + - 602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/kube-proxy:v1.29.0-minimal-eksbuild.1 + resourceOrigin: + type: string + description: Where a resource was collected (Code, Deployed) + example: Deployed + maxLength: 256 + posturePolicySummary: + $ref: '#/components/schemas/PosturePolicySummary' + vulnerabilitySummary: + $ref: '#/components/schemas/VulnerabilitySummary' + inUseVulnerabilitySummary: + $ref: '#/components/schemas/VulnerabilitySummary' + zones: + type: array + description: Resource zones + items: + $ref: '#/components/schemas/InventoryZone' + maxItems: 10000 + configApiEndpoint: + type: string + example: /api/cspm/v1/kube/resource?resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet + maxLength: 512 + description: A link that provides the resource configuration. + postureControlSummaryApiEndpoint: + type: string + description: A link that provides the posture control summary. + example: /api/cspm/v1/kube/resource?fields=posturecontrolsummary%2Chash%2Cname%2Cplatform%2Ctype%2Cmetadata%2Cresourceorigin%2Ccategory%2Clastseen&resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet + maxLength: 512 + vmApiEndpoint: + type: string + description: A link that provides vulnerability management information about an image (Images only). + example: /api/scanning/runtime/v2/workflows/results?cursor&filter=freeText%20in%20%28%222cfced35cf83d6cdcdcd2f4ac103ab620976cb507be8779a53224d31d2a1f227%22%29&limit=100&order=desc&sort=runningVulnsBySev&zones + maxLength: 512 + containerInfo: + type: array + description: List of containers (with some of kubernetes metadata) belonging to this kubernetes workload. If resource is not kubernetes workload this fild will be empty. + items: + $ref: '#/components/schemas/ContainerInfo' + maxItems: 10000 + type: object + InventoryPage: + description: The total number of pages the matched the filter, and the next and previous page numbers. + required: + - total + properties: + next: + format: int32 + type: integer + example: 3 + description: The next page + minimum: 2 + maximum: 2147483647 + previous: + format: int32 + type: integer + example: 1 + description: The previous page + minimum: 1 + maximum: 2147483646 + total: + format: int32 + type: integer + example: 5 + description: Total page count + minimum: 0 + maximum: 2147483647 + type: object + InventoryResourceResponse: + description: A paged response of resources that match the filter. + required: + - data + - page + properties: + data: + items: + $ref: '#/components/schemas/InventoryResource' + maxItems: 10000 + type: array + description: The resources that matches the filter + page: + $ref: '#/components/schemas/InventoryPage' + type: object + Image: + description: An Image resource that returns as part of of the image summary. + required: + - hash + - name + - type + - pullString + - vulnerabilitySummary + - inUseVulnerabilitySummary + - vmApiEndpoint + properties: + hash: + type: string + description: Resource unique identifier + example: 62e348b71acd7be14a4bdfcc + maxLength: 64 + name: + type: string + description: Resource name + example: prometheus-server + maxLength: 8192 + type: + type: string + description: The resource type + example: Container + maxLength: 256 + pullString: + type: string + description: The pull string for the image. + example: quay.io/prometheus/prometheus:v2.49.1 + maxLength: 8192 + vulnerabilitySummary: + $ref: '#/components/schemas/VulnerabilitySummary' + inUseVulnerabilitySummary: + $ref: '#/components/schemas/VulnerabilitySummary' + vmApiEndpoint: + type: string + description: A link that provides vulnerability management information about an image (Images only). + example: /api/scanning/runtime/v2/workflows/results?cursor&filter=freeText%20in%20%28%222cfced35cf83d6cdcdcd2f4ac103ab620976cb507be8779a53224d31d2a1f227%22%29&limit=100&order=desc&sort=runningVulnsBySev&zones + maxLength: 512 + InventoryResourceExtended: + description: Extended information about an Inventory Resource + allOf: + - $ref: '#/components/schemas/InventoryResource' + - type: object + properties: + imageSummary: + type: array + description: Images used by the workload (Workloads only) + items: + $ref: '#/components/schemas/Image' + maxItems: 10000 + VulnerabilityManagementPage: + type: object + description: API paging response + properties: + total: + type: integer + format: int + description: Total of scans + example: 1 + minimum: 0 + maximum: 2147483647 + next: + type: string + description: Next cursor for pagination + example: MTI0MjM0Cg== + maxLength: 300 + VulnTotalBySeverity: + type: object + description: total vulnerabilities by severity + properties: + critical: + type: integer + format: int + description: number of critical vulnerabilities + minimum: 0 + maximum: 9223372036854776000 + example: 12345 + high: + type: integer + format: int + description: number of high severity vulnerabilities + minimum: 0 + maximum: 9223372036854776000 + example: 12345 + medium: + type: integer + format: int + description: number of medium severity vulnerabilities + minimum: 0 + maximum: 9223372036854776000 + example: 12345 + low: + type: integer + format: int + description: number of low severity vulnerabilities + minimum: 0 + maximum: 9223372036854776000 + example: 12345 + negligible: + type: integer + format: int + description: number of negligible severity vulnerabilities + minimum: 0 + maximum: 9223372036854776000 + example: 12345 + CreatedAt: + type: string + format: string + example: '2024-01-22T08:51:46.016464Z' + description: datetime of creation + maxLength: 100 + RegistryResult: + type: object + title: RegistryResult + description: Registry result + properties: + resultId: + type: string + description: Identifier of the scan result + example: scan-1234 + maxLength: 255 + imageId: + type: string + description: Identifier of the image (hash). + example: sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6 + maxLength: 255 + vendor: + type: string + description: Identifier the vendor of the image + example: dockerv2 + maxLength: 255 + pullString: + type: string + description: Name of the scanned asset + example: index.docker.io/nginx:latest + maxLength: 2048 + vulnTotalBySeverity: + $ref: '#/components/schemas/VulnTotalBySeverity' + createdAt: + $ref: '#/components/schemas/CreatedAt' + RegistryResultsResponse: + type: object + description: registry results response + properties: + page: + $ref: '#/components/schemas/VulnerabilityManagementPage' + data: + type: array + minItems: 0 + maxItems: 1000 + items: + $ref: '#/components/schemas/RegistryResult' + CallerId: + type: string + description: The ID of the user that executed the Response action. + example: Mary-Response + maxLength: 128 + ResponseActionType: + description: | + The name of the Response Action to execute. + It may be one of the following: + - KILL_PROCESS + - KILL_CONTAINER + - STOP_CONTAINER + - PAUSE_CONTAINER + - FILE_QUARANTINE + - FILE_ACQUIRE + - UNPAUSE_CONTAINER + - FILE_UNQUARANTINE + - START_CONTAINER + - DELETE_POD + - ROLLOUT_RESTART + - KUBERNETES_VOLUME_SNAPSHOT + - KUBERNETES_DELETE_VOLUME_SNAPSHOT + - GET_LOGS + - ISOLATE_NETWORK + - DELETE_NETWORK_POLICY + + The following actions serve as the undo for previous actions: + - START_CONTAINER: undo for STOP_CONTAINER\ + - UNPAUSE_CONTAINER: undo for PAUSE_CONTAINER\ + - FILE_UNQUARANTINE: undo for FILE_QUARANTINE\ + - KUBERNETES_DELETE_VOLUME_SNAPSHOT: undo for KUBERNETES_VOLUME_SNAPSHOT\ + - DELETE_NETWORK_POLICY: undo for ISOLATE_NETWORK\ + + Do not use undo actions in [submitActionExecutionv1](#tag/Response-actions/operation/submitActionExecutionv1). + + You can execute an undo actions using the service [undoActionExecutionV1](#tag/Response-actions/operation/undoActionExecutionV1). + type: string + example: KILL_PROCESS + maxLength: 64 + ResponderType: + description: The type of Responder executing an action. + type: string + enum: + - HOST + - CLUSTER + - CLOUD + example: HOST + ExecutionContext: + description: | + The context in which the Response Action is executed.\ + It may contain additional information on the Response Action being executed, such as the host name or the MAC address.\ + For example:\ + ```json + { + "host.hostName": "my-host", + "host.mac": "00:00:00:00:00:00", + "host.id": "abc123" + } + ``` + additionalProperties: + type: string + maxLength: 1024 + ActionExecutionStringParameterValue: + type: string + maxLength: 512 + description: The value of a string parameter. + example: https://qa-automation-custom-bucket-foo-bar.a0.xx-yyy-3.baz.com/responseactions/121517/8745b945-7e47-4641-9ed6-1bf7088350e3/foo2?X-Amz-Algorithm=ABC1-DEFG-HIJ123&X-Ywz-Date=12345678T123456Z&X-Ywz-FooBarBaz=xxx&X-Zyx-Qwerty=12345&X-Ywz-FooBar=FOOBARFOOBAR%2F12345678%2Fxx-yyyy-3%2Fs3%2Fabc4_request&X-Xyz-Foobar=6bb3e135165186c148efee4b6c81866b39213b3476499a1f9e303e744f51c7e1 + pattern: ^[\x20-\x7E]*$ + ActionExecutionIntParameterValue: + type: integer + format: int64 + maximum: 9223372036854776000 + minimum: -9223372036854776000 + description: The value of an int parameter. + example: -1 + ActionExecutionParameterValue: + description: The value of a parameter. + oneOf: + - $ref: '#/components/schemas/ActionExecutionStringParameterValue' + - $ref: '#/components/schemas/ActionExecutionIntParameterValue' + - type: boolean + description: The value of a boolean parameter. + example: true + ActionExecutionParameters: + description: The parameters used to request the Response Action execution. + additionalProperties: + $ref: '#/components/schemas/ActionExecutionParameterValue' + ActionExecutionOutputs: + description: The parameters used to request the Response Action execution. + additionalProperties: + $ref: '#/components/schemas/ActionExecutionParameterValue' + Failure: + description: The reason a Response Action failed to execute. + required: + - failureReason + - logMessage + properties: + failureReason: + type: string + description: The reason for the failure. + example: forbidden + maxLength: 64 + logMessage: + type: string + description: The log message of the action failure. + example: Could not execute the action. + maxLength: 1024 + ActionExecutionStatus: + description: The status of the action execution. + type: string + enum: + - ENQUEUED + - IN_PROGRESS + - COMPLETED + - FAILED + example: COMPLETED + ActionExecution: + description: The submitted Response Action. + required: + - id + - actionType + - responderType + - executionContext + - parameters + - status + - createdAt + properties: + id: + type: string + description: The ID of the Response Action. + example: b137bf86-399f-43f7-8d2b-53060af4da9f + maxLength: 64 + callerId: + $ref: '#/components/schemas/CallerId' + actionType: + $ref: '#/components/schemas/ResponseActionType' + responderType: + $ref: '#/components/schemas/ResponderType' + executionContext: + $ref: '#/components/schemas/ExecutionContext' + parameters: + $ref: '#/components/schemas/ActionExecutionParameters' + outputs: + $ref: '#/components/schemas/ActionExecutionOutputs' + failure: + $ref: '#/components/schemas/Failure' + status: + $ref: '#/components/schemas/ActionExecutionStatus' + userId: + type: integer + description: The ID of the user that submitted the Response Action. + example: 1234 + format: int64 + minimum: 0 + maximum: 9223372036854776000 + createdAt: + type: string + format: date-time + description: The date and time the Response Action was submitted. + example: '2020-01-01T00:00:00Z' + maxLength: 64 + updatedAt: + type: string + format: date-time + description: The date and time the Response Action was last updated. + example: '2020-01-01T00:00:00Z' + maxLength: 64 + actionExecutionIdBeingUndone: + type: string + description: The ID of the Response Action being undone. + example: b137bf86-399f-43f7-8d2b-53060af4da9f + maxLength: 64 + ActionExecutions: + description: A list of Response Action executions. + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/ActionExecution' + maxItems: 1000 + description: The list of Response Actions. + SubmitActionExecutionRequest: + description: The request for the execution of a Response Action. + required: + - actionType + - parameters + properties: + actionType: + $ref: '#/components/schemas/ResponseActionType' + callerId: + $ref: '#/components/schemas/CallerId' + parameters: + $ref: '#/components/schemas/ActionExecutionParameters' + ActionParameterName: + type: string + maxLength: 200 + description: The name of the parameter. + example: container.id + pattern: ^[a-zA-Z\._]*$ + ParameterType: + description: | + The type of an Response Action parameter.\ + It may assume the following values:\ + * string\ + * integer\ + * boolean\ + This list of possible values may grow in the future. + type: string + example: integer + maxLength: 20 + ActionParameterMetadata: + description: Metadata that describes a parameter to be submitted for a Response Action execution. + required: + - name + - description + - type + - required + properties: + name: + $ref: '#/components/schemas/ActionParameterName' + description: + type: string + maxLength: 1024 + description: The description of the parameter. + example: A container id + type: + $ref: '#/components/schemas/ParameterType' + required: + type: boolean + description: If `true`, the parameter is mandatory. + example: true + OutputParameterName: + type: string + maxLength: 200 + description: The name of the output parameter. + example: quarantined_file_path + pattern: ^[a-zA-Z\._]*$ + ActionOutputsMetadata: + description: Metadata that describes a parameter returned by a Response Action execution. + required: + - name + - description + - type + - required + properties: + name: + $ref: '#/components/schemas/OutputParameterName' + description: + type: string + maxLength: 1024 + description: The description of the output parameter. + example: An absolute path + type: + $ref: '#/components/schemas/ParameterType' + required: + type: boolean + description: If `true`, the parameter is mandatory. + example: true + ResponseAction: + description: The action metadata + required: + - type + - responderType + - parameters + - description + - isUndoable + properties: + type: + $ref: '#/components/schemas/ResponseActionType' + responderType: + $ref: '#/components/schemas/ResponderType' + parameters: + type: array + items: + $ref: '#/components/schemas/ActionParameterMetadata' + maxItems: 100 + description: the list of parameters that the action supports + outputs: + type: array + items: + $ref: '#/components/schemas/ActionOutputsMetadata' + maxItems: 100 + description: + type: string + description: The description of the action. + maxLength: 1024 + example: Kill a container + isUndoable: + type: boolean + description: Whether the action is undoable. + example: true + Actions: + description: A list of Response Actions + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/ResponseAction' + maxItems: 1000 + description: The list of Response Actions. + Scope: + type: object + description: Scope labels that define the asset + example: + asset.type: workload + kubernetes.cluster.name: prod-cluster-00 + kubernetes.namespace.name: foo + kubernetes.workload.name: bar + kubernetes.workload.type: deployment + PolicyEvaluationResult: + type: string + description: Policy evaluation result + example: passed + enum: + - passed + - failed + - accepted + - noPolicy + - notApplicable + RuntimeResult: + type: object + title: RuntimeResult + description: Runtime result + properties: + scope: + $ref: '#/components/schemas/Scope' + resultId: + type: string + description: Identifier of the scan result + example: scan-1234 + maxLength: 255 + resourceId: + type: string + description: 'Identifier of the scanned resource: it will be the image ID for container images or the host ID for hosts.' + example: sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6 + maxLength: 255 + sbomId: + type: string + nullable: true + description: Identifier of the sbom + example: sbom-1234 + maxLength: 255 + mainAssetName: + type: string + description: Name of the scanned asset + example: nginx:latest + maxLength: 255 + runningVulnTotalBySeverity: + $ref: '#/components/schemas/VulnTotalBySeverity' + vulnTotalBySeverity: + $ref: '#/components/schemas/VulnTotalBySeverity' + policyEvaluationResult: + $ref: '#/components/schemas/PolicyEvaluationResult' + isRiskSpotlightEnabled: + type: boolean + description: Whether risk spotlight is enabled or not + example: true + RuntimeResultsResponse: + type: object + description: runtime results response + properties: + page: + $ref: '#/components/schemas/VulnerabilityManagementPage' + data: + type: array + minItems: 0 + maxItems: 1000 + items: + $ref: '#/components/schemas/RuntimeResult' + PipelineResult: + type: object + description: pipeline result + properties: + policyEvaluationResult: + $ref: '#/components/schemas/PolicyEvaluationResult' + resultId: + type: string + description: Identifier of the scan result + example: scan-1234 + maxLength: 255 + pullString: + type: string + maxLength: 2048 + description: image pull string + example: nginx:latest + vulnTotalBySeverity: + $ref: '#/components/schemas/VulnTotalBySeverity' + imageId: + type: string + description: Identifier of the image (hash). + example: sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6 + maxLength: 255 + createdAt: + $ref: '#/components/schemas/CreatedAt' + PipelineResultsResponse: + type: object + description: pipeline results + properties: + page: + $ref: '#/components/schemas/VulnerabilityManagementPage' + data: + type: array + minItems: 0 + maxItems: 1000 + items: + $ref: '#/components/schemas/PipelineResult' + ImageMetadata: + title: ImageMetadata + properties: + pullString: + type: string + maxLength: 2048 + description: image pull string + example: nginx:latest + imageId: + type: string + maxLength: 255 + description: image id + example: sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182 + digest: + type: string + maxLength: 255 + description: image digest + example: sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182 + baseOs: + type: string + maxLength: 255 + description: image base os + example: debian + size: + type: integer + format: int64 + description: image size in bytes + minimum: 0 + maximum: 9223372036854776000 + example: 10240 + os: + type: string + description: image os + maxLength: 255 + example: debian + architecture: + type: string + description: image architecture + example: arm64 + enum: + - ppc64 + - '386' + - amd64 + - arm + - arm64 + - wasm + - loong64 + - mips + - mipsle + - mips64 + - mips64le + - ppc64le + - riscv64 + - s390x + labels: + type: object + example: + key: value + description: image labels + author: + type: string + description: image author + example: sysdig + maxLength: 255 + createdAt: + $ref: '#/components/schemas/CreatedAt' + additionalProperties: false + type: object + required: + - pullString + - imageId + - baseOs + - size + - os + - createdAt + HostMetadata: + title: HostMetadata + type: object + required: + - hostId + - hostName + - os + additionalProperties: false + properties: + architecture: + type: string + maxLength: 128 + description: host architecture + example: x86_64 + hostId: + type: string + maxLength: 1024 + description: host id + example: fa71009b1b1b4b1b9b1b1b1b1b1b1b1b + hostName: + type: string + maxLength: 1024 + description: host name + example: ip-xxx-xx-x-x.ec2.internal + os: + type: string + maxLength: 1024 + description: host os + example: debian + Package: + title: Package + properties: + type: + type: string + maxLength: 255 + example: os + description: |- + scan result package type, example values are: + - os + - rust + - java + - ruby + - javascript + - python + - php + - golang + - C# + name: + type: string + maxLength: 255 + description: name of the package + example: openssl + isRunning: + type: boolean + description: whether the package is used by a running process + example: true + isRemoved: + type: boolean + description: whether the package has been removed + example: true + version: + type: string + example: 1.2.3 + description: version of the affected package + maxLength: 255 + license: + type: string + description: license of the package + example: MIT + maxLength: 255 + path: + type: string + description: path of the package + example: /usr/local/bin/openssl + maxLength: 1024 + suggestedFix: + type: string + description: suggested fix for the package + maxLength: 1024 + example: 1.2.3 + layerRef: + type: string + description: reference to layer + maxLength: 1024 + example: l-123124 + riskAcceptRefs: + nullable: true + description: Reference to the accepted risk. + items: + type: string + maxLength: 255 + example: e6b4b0d3255bfef + type: array + minItems: 0 + maxItems: 2147483647 + vulnerabilitiesRefs: + type: array + nullable: true + description: reference to vulnerabilities of the package + minItems: 0 + maxItems: 8192 + items: + type: string + maxLength: 1024 + example: 71af37c6a8f2772 + additionalProperties: false + type: object + required: + - type + - name + - version + CvssScore: + title: CvssScore + properties: + version: + type: string + example: 3.0.0 + maxLength: 255 + score: + type: number + format: float + example: 1 + description: CVSS score + vector: + type: string + maxLength: 1024 + description: attack vector + example: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H + additionalProperties: false + type: object + required: + - version + - score + Exploit: + title: Exploit + properties: + publicationDate: + type: string + format: date-time + description: exploit publication date + example: '2024-01-22T08:51:46.00Z' + maxLength: 255 + links: + items: + type: string + maxLength: 8192 + description: link to exploit + example: https://sysdig.com/exploits/12345 + type: array + minItems: 0 + maxItems: 8192 + additionalProperties: false + type: object + required: + - links + Vulnerability: + title: Vulnerability + properties: + name: + type: string + example: CVE-2021-1234 + maxLength: 255 + severity: + type: string + example: critical + enum: + - critical + - high + - medium + - low + - negligible + cvssScore: + $ref: '#/components/schemas/CvssScore' + disclosureDate: + type: string + format: date + maxLength: 10 + example: '2021-01-02' + solutionDate: + type: string + format: date + maxLength: 10 + example: '2021-01-02' + exploitable: + type: boolean + example: true + exploit: + $ref: '#/components/schemas/Exploit' + fixVersion: + type: string + maxLength: 255 + example: 1.2.3 + mainProvider: + type: string + maxLength: 255 + example: vulndb + packageRef: + type: string + maxLength: 255 + description: reference to the affected package + example: 2772f8a6c73fa17 + riskAcceptRefs: + nullable: true + items: + type: string + description: reference to the accepted risk + maxLength: 255 + example: e6b4b0d3255bfef + type: array + minItems: 0 + maxItems: 2147483647 + providersMetadata: + type: object + nullable: true + example: + first.org: + epssScore: + score: 0.00042 + percentile: 0.05089 + timestamp: '2024-12-04T00:00:00Z' + nvd: + cvssScore: + version: '3.1' + vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H + score: 5.5 + publicationDate: '2024-09-04T19:15:30.77Z' + severity: medium + rhel: + cvssScore: + version: '3.1' + vector: AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H + score: 5.5 + severity: medium + cisaKev: + type: object + example: + publishDate: '2023-12-06' + dueDate: '2023-10-31' + knownRansomwareCampaignUse: 'false' + additionalProperties: false + type: object + required: + - name + - severity + - cvssScore + - exploitable + Layer: + title: Layer + properties: + index: + type: integer + format: int64 + example: 50 + description: layer's index + minimum: 0 + maximum: 2147483647 + digest: + type: string + example: sha256:55f2611539bc5c771a4848183bb3d29af95aa9ae66563e7e808b7501659f5c50 + description: sha256 digest of the layer + maxLength: 255 + size: + type: integer + nullable: true + format: int64 + example: 50 + description: size of the layer in bytes + minimum: 0 + maximum: 9223372036854776000 + command: + type: string + nullable: true + example: COPY docker-entrypoint.sh + description: layer command + maxLength: 65535 + baseImagesRef: + type: array + description: base images refs + minItems: 0 + maxItems: 1024 + items: + type: string + example: a3ee5e6b4b0d3255bf + maxLength: 255 + additionalProperties: false + type: object + required: + - digest + BaseImage: + title: Base Image + type: object + additionalProperties: false + properties: + pullStrings: + type: array + minItems: 0 + maxItems: 2048 + items: + type: string + maxLength: 2048 + example: alpine:latest + Predicate: + title: Predicate + type: object + properties: + type: + type: string + description: predicate type + maxLength: 255 + example: vulnIsFixable + extra: + type: object + nullable: true + ImageConfigFailure: + title: Image Configuration Failure + properties: + description: + type: string + maxLength: 255 + description: image configuration failure description + example: failure description + remediation: + type: string + maxLength: 255 + description: image configuration failure remediation + example: update image + arguments: + type: object + example: + version: '1.0' + packageRef: + type: string + maxLength: 255 + description: reference to the affected package + example: p-1234123 + vulnerabilityRef: + type: string + maxLength: 255 + description: reference to the vulnerability + example: vuln-12031024120910259 + riskAcceptRefs: + description: list of accepted risks for the failure + items: + type: string + description: reference to the accepted risk + maxLength: 255 + example: ra-1234123 + type: array + minItems: 0 + maxItems: 2147483647 + additionalProperties: false + type: object + required: + - remediation + - arguments + PkgVulnFailure: + title: Package Vulnerability Failure + properties: + description: + type: string + description: description of the failure + maxLength: 1024 + example: description + packageRef: + type: string + maxLength: 255 + description: reference to the affected package + example: 2772f8a6c73fa17 + vulnerabilityRef: + type: string + maxLength: 255 + description: reference to the vulnerability + example: 71af37c6a8f2772 + riskAcceptRefs: + description: list of accepted risks for the failure + items: + type: string + description: reference to the accepted risk + maxLength: 255 + example: e6b4b0d3255bfef + type: array + minItems: 0 + maxItems: 2147483647 + additionalProperties: false + type: object + required: + - description + Rule: + title: Rule + properties: + ruleId: + type: string + description: rule's id + maxLength: 255 + example: 1234A + ruleType: + type: string + description: rule type + maxLength: 255 + example: vulnDenyList + evaluationResult: + type: string + description: result of rule evaluation + enum: + - passed + - failed + - notApplicable + - accepted + example: passed + predicates: + description: list of rule's predicates + nullable: true + items: + $ref: '#/components/schemas/Predicate' + type: array + minItems: 0 + maxItems: 2147483647 + failureType: + type: string + example: pkgVulnFailure + description: rule failure type + enum: + - pkgVulnFailure + - imageConfigFailure + description: + type: string + description: rule description + example: rule description + maxLength: 255 + failures: + description: list of rule failures + items: + anyOf: + - $ref: '#/components/schemas/ImageConfigFailure' + - $ref: '#/components/schemas/PkgVulnFailure' + type: array + minItems: 0 + maxItems: 2147483647 + additionalProperties: false + type: object + required: + - ruleType + - failureType + - description + Bundle: + title: Bundle + type: object + properties: + name: + type: string + description: Name of the bundle + maxLength: 255 + example: Severe vulnerabilities with a Fix + identifier: + type: string + maxLength: 1024 + description: Identifier of the bundle + example: severe_vulnerabilities_with_a_fix + type: + type: string + example: predefined + enum: + - predefined + - custom + rules: + items: + $ref: '#/components/schemas/Rule' + type: array + minItems: 0 + maxItems: 2147483647 + UpdatedAt: + type: string + format: string + example: '2024-01-22T08:51:46.016464Z' + description: datetime of last update + maxLength: 255 + PolicyEvaluation: + title: Policy Evaluation + properties: + name: + type: string + description: policy evaluation name + maxLength: 255 + example: policy-0 + identifier: + type: string + maxLength: 1024 + description: policy evaluation id + example: 550e8400-e29b + description: + type: string + description: policy evaluation description + maxLength: 1024 + example: description + bundles: + items: + $ref: '#/components/schemas/Bundle' + type: array + minItems: 0 + maxItems: 2147483647 + evaluation: + type: string + example: passed + enum: + - passed + - failed + - accepted + - noPolicy + createdAt: + $ref: '#/components/schemas/CreatedAt' + updatedAt: + $ref: '#/components/schemas/UpdatedAt' + additionalProperties: false + type: object + required: + - name + - identifier + - evaluation + - createdAt + - updatedAt + Policies: + title: Bundle + properties: + globalEvaluation: + type: string + example: passed + enum: + - passed + - failed + - accepted + - noPolicy + evaluations: + items: + $ref: '#/components/schemas/PolicyEvaluation' + type: array + minItems: 0 + maxItems: 2048 + Context: + title: Context + properties: + type: + type: string + example: imageName + description: Type for the context entry + maxLength: 255 + value: + type: string + description: Value for the context entry + example: nginx:latest + maxLength: 255 + additionalProperties: false + type: object + required: + - type + - value + RiskAcceptanceDefinition: + title: Risk Acceptance Definition + properties: + id: + type: string + description: id of the risk acceptance + example: 550e8400-e29b + maxLength: 255 + entityType: + type: string + description: entity type for the risk + example: imageName + maxLength: 255 + entityValue: + type: string + maxLength: 1024 + example: nginx:latest + description: entity value relative to the the entity type + context: + items: + $ref: '#/components/schemas/Context' + type: array + minItems: 0 + maxItems: 2147483647 + status: + type: string + example: active + enum: + - active + - expired + reason: + type: string + description: risk acceptance reason + maxLength: 255 + example: RiskMitigated + description: + type: string + description: risk acceptance description + maxLength: 1024 + example: description + expirationDate: + type: string + format: date + example: '2021-07-01' + maxLength: 10 + nullable: true + createdAt: + $ref: '#/components/schemas/CreatedAt' + updatedAt: + $ref: '#/components/schemas/UpdatedAt' + additionalProperties: false + type: object + required: + - id + - entityType + - entityValue + - context + - status + - expirationDate + - createdAt + - updatedAt + Producer: + title: Producer + properties: + producedAt: + type: string + format: date-time + description: time of result production + example: '2024-01-22T08:51:46.00Z' + maxLength: 64 + ScanResultResponse: + title: Scanresult + properties: + assetType: + type: string + description: scan result asset type + example: containerImage + enum: + - containerImage + - host + stage: + type: string + description: scan result stage + example: pipeline + enum: + - pipeline + - runtime + - registry + metadata: + description: metadata of the scan result + oneOf: + - $ref: '#/components/schemas/ImageMetadata' + - $ref: '#/components/schemas/HostMetadata' + packages: + type: object + additionalProperties: + $ref: '#/components/schemas/Package' + example: + 2772f8a6c73fa17: + type: os + name: openssl + isRunning: true + isRemoved: true + version: 1.2.3 + license: MIT + path: /usr/local/bin/openssl + suggestedFix: 1.2.3 + layerRef: f95aa9ae66563e7e808b + vulnerabilitiesRefs: + - 71af37c6a8f2772 + riskAcceptRefs: + - acb4b0d2565bfef + vulnerabilities: + type: object + additionalProperties: + $ref: '#/components/schemas/Vulnerability' + example: + 71af37c6a8f2772: + name: CVE-2021-1234 + severity: high + cvssScore: + version: '3.0' + score: 1 + vector: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H + disclosureDate: '2021-01-02' + solutionDate: '2021-01-02' + exploitable: true + exploit: + publicationDate: '2024-01-22T08:51:46.00Z' + links: + - https://sysdig.com/exploits/12345 + fixVersion: 1.2.3 + mainProvider: vulndb + packageRef: 2772f8a6c73fa17 + riskAcceptRefs: + - e6b4b0d3255bfef + providersMetadata: + nvd: {} + cisaKev: + publishDate: '2023-12-06' + dueDate: '2023-10-31' + knownRansomwareCampaignUse: 'false' + layers: + type: object + additionalProperties: + $ref: '#/components/schemas/Layer' + example: + f95aa9ae66563e7e808b: + digest: sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 + size: 50 + command: COPY docker-entrypoint.sh + baseImagesRef: + - a3ee5e6b4b0d3255bf + baseImages: + type: object + nullable: true + additionalProperties: + $ref: '#/components/schemas/BaseImage' + example: + a3ee5e6b4b0d3255bf: + pullStrings: + - alpine:latest + policies: + $ref: '#/components/schemas/Policies' + riskAccepts: + type: object + additionalProperties: + $ref: '#/components/schemas/RiskAcceptanceDefinition' + example: + e6b4b0d3255bfef: + id: 550e8400-e29b + entityType: imageName + entityValue: nginx:latest + context: + - type: imageName + value: nginx:latest + status: active + reason: RiskMitigated + description: description + expirationDate: '2021-07-01' + createdAt: '2024-01-22T08:51:46.016464Z' + updatedAt: '2024-01-22T08:51:46.016464Z' + producer: + $ref: '#/components/schemas/Producer' + additionalProperties: false + type: object + required: + - assetType + - stage + - metadata + - packages + EntityDefinition: + type: object + description: Defines the structure and metadata of a field in the query result. + properties: + type: + type: string + description: Type of the entity. + maxLength: 128 + example: Field + alias: + type: string + description: The alias used in the query. + maxLength: 128 + example: name + definition: + type: object + description: Detailed definition of the field. + properties: + def_type: + type: string + description: Type of the definition. + enum: + - Entity + - Field + - Function + - Query + - Relationship + - Union + example: Field + name: + type: string + description: Name of the field. + maxLength: 128 + example: name + type: + type: string + description: Data type of the field. + enum: + - String + - BigInt + - Integer + - DateTime + - Float + - Boolean + - Enum + - List + example: String + hidden: + type: boolean + description: Indicates if the field is hidden from view. + example: false + required: + - def_type + - name + - type + required: + - type + - definition + QuerySummary: + type: object + description: Summary of query execution metrics and timing information. + properties: + available_after: + type: integer + format: int64 + description: Time taken for results to become available in milliseconds. + example: 23 + consumed_after: + type: integer + format: int64 + description: Time taken to consume results in milliseconds. + example: 100 + total_time: + type: integer + format: int64 + description: Total query execution time in milliseconds. + example: 25 + required: + - available_after + - consumed_after + - total_time + QueryResponse: + type: object + description: Response object containing query results and metadata. + properties: + entities: + type: object + description: Metadata about the returned fields. + additionalProperties: true + properties: + fields: + $ref: '#/components/schemas/EntityDefinition' + items: + type: array + description: Array of query results based on the query fields. + maxItems: 1000 + items: + type: object + description: Dynamic object containing queried fields. + additionalProperties: true + example: + name: CVE-2024-45491 + cvssScore: 7.5 + severity: Medium + id: + type: string + format: uuid + minLength: 36 + maxLength: 36 + description: Unique identifier for the query execution. + example: 4b1d2442-739a-4957-bf27-20b563e46c3a + summary: + $ref: '#/components/schemas/QuerySummary' + required: + - entities + - items + - id + - summary + PoliciesPage: + type: object + description: | + Page details, providing both returned and total count of matched elements. + required: + - returned + - matched + properties: + returned: + type: integer + format: int32 + description: | + The number returned elements: always less or equal the limit specified in the request. + example: 1 + minimum: 0 + maximum: 1000 + matched: + type: integer + format: int64 + description: | + Total count of elements matched the provided filter. + example: 10 + minimum: 0 + maximum: 2147483647 + next: + description: Cursor used to retrieve the next page of results. + type: string + maxLength: 1024 + example: MA== + nullable: true + PolicySummary: + title: Policy summary definition + type: object + description: Policy summary definition. + required: + - id + - name + - identifier + - stages + properties: + id: + type: integer + format: int64 + description: The Policy ID + minimum: 0 + maximum: 9223372036854776000 + example: 1 + name: + type: string + description: human readable policy name. + minLength: 1 + maxLength: 1024 + example: Sysdig policy + identifier: + type: string + description: policy identifier generated from the name. + minLength: 1 + maxLength: 1024 + example: sysdig-policy + description: + type: string + description: policy description + minLength: 0 + maxLength: 1024 + example: Sysdig policy + stages: + type: array + minItems: 0 + maxItems: 3 + description: | + array of stages for the policy. + An empty array means the policy is applied only when specifically requested by its identifier. + It may be one of the following: + - runtime + - pipeline + - registry + items: + type: string + example: runtime + minLength: 0 + maxLength: 1024 + ListPoliciesResponse: + title: List Policies Response + type: object + required: + - data + - page + properties: + page: + $ref: '#/components/schemas/PoliciesPage' + data: + type: array + maxItems: 1024 + minItems: 0 + description: Policies collection + items: + $ref: '#/components/schemas/PolicySummary' + BundleRef: + title: policy bundle reference + type: object + required: + - id + properties: + id: + type: integer + format: int + description: The Bundle ID. + example: 42 + minimum: 0 + maximum: 2147483647 + name: + type: string + description: The human readable Bundle name. + minLength: 0 + maxLength: 1024 + example: My Bundle + StageConfiguration: + title: stage configuration + type: object + properties: + scope: + type: string + minLength: 0 + maxLength: 1024 + description: | + Scope to apply the policies for the given stage. An empty string or missing property implies the policies are always active. + The scope is defined using a query language expression, which is a subset of the full metrics query language used in monitoring. + example: kubernetes.cluster.name = "my-cluster" and kubernetes.namespace.name = "my-namespace" + NewStage: + title: Stage definition + type: object + required: + - name + properties: + name: + type: string + description: stage name. + nullable: false + enum: + - runtime + - pipeline + - registry + example: runtime + configuration: + type: array + minItems: 0 + maxItems: 1000 + description: Configurations for the stage + items: + $ref: '#/components/schemas/StageConfiguration' + CreatePolicyRequest: + title: Create Policy + type: object + description: A Policy definition + required: + - name + - bundles + properties: + name: + type: string + description: human readable policy name + minLength: 0 + maxLength: 1024 + example: Sysdig policy + description: + type: string + description: policy description + minLength: 0 + maxLength: 4096 + example: Sysdig policy + bundles: + type: array + description: bundles defining this policy + minItems: 0 + maxItems: 1024 + items: + $ref: '#/components/schemas/BundleRef' + stages: + type: array + minItems: 0 + maxItems: 1024 + description: "array of stages for the policy. \nAn empty array means the policy is applied only when specifically requested by its identifier.\n" + items: + $ref: '#/components/schemas/NewStage' + Stage: + title: Stage definition + type: object + required: + - name + properties: + name: + type: string + description: stage name. + nullable: false + minLength: 0 + maxLength: 1024 + example: runtime + configuration: + type: array + minItems: 0 + maxItems: 1000 + description: Configurations for the stage. + items: + $ref: '#/components/schemas/StageConfiguration' + GetPolicyResponse: + title: Policy definition + type: object + description: A Policy definition + required: + - id + - name + - identifier + - bundles + - stages + properties: + id: + type: integer + format: int + description: the Policy ID + example: 50 + minimum: 0 + maximum: 2147483647 + name: + type: string + description: human readable policy name + example: My Policy + minLength: 1 + maxLength: 1024 + identifier: + type: string + description: policy identifier generated from the name + example: my-policy + minLength: 1 + maxLength: 1024 + description: + type: string + description: policy description + example: This is a policy description + minLength: 0 + maxLength: 1024 + bundles: + type: array + description: bundles defining this policy + minItems: 0 + maxItems: 1000 + items: + $ref: '#/components/schemas/BundleRef' + stages: + type: array + minItems: 0 + maxItems: 1000 + description: "array of stages for the policy. \nAn empty array means the policy is applied only when specifically requested by its identifier.\n" + items: + $ref: '#/components/schemas/Stage' + BundleRule: + type: object + description: A Rule definition + required: + - ruleId + - ruleType + - predicates + properties: + ruleType: + type: string + example: vulnDenyList + minLength: 1 + maxLength: 1024 + description: | + The type of the rule. + It may be one of the following: + - vulnSeverityAndThreats + - vulnDenyList + - imageConfigDefaultUser + - imageConfigLabel + - imageConfigEnvVariable + - imageConfigInstructionNotRecommended + - imageConfigInstructionIsPkgManager + - imageConfigCreationDate + - imageConfigSensitiveInformationAndSecrets + - pkgDenyList + predicates: + type: array + description: The Predicates defining this Rule + maxItems: 1000 + minItems: 1 + items: + type: object + required: + - type + properties: + type: + type: string + example: vulnIsFixable + maxLength: 1000 + minLength: 1 + extra: + type: object + example: + - type: vulnSeverity + extra: + level: high + ruleId: + type: string + minLength: 1 + maxLength: 1024 + example: '42' + GetBundleResponse: + type: object + description: Bundle definition + required: + - id + - name + - identifier + - bundleType + - rules + properties: + id: + type: integer + format: int64 + description: The Bundle ID + example: 1 + minimum: 0 + maximum: 9223372036854776000 + name: + type: string + description: The human readable Bundle name + example: Sysdig Bundle + minLength: 1 + maxLength: 1024 + identifier: + type: string + description: The Policy identifier generated from the name + example: sysdig-bundle + minLength: 1 + maxLength: 1024 + description: + type: string + description: The Bundle description + example: Default Sysdig Bundle + minLength: 0 + maxLength: 4096 + bundleType: + type: string + enum: + - predefined + - custom + description: Specifies whether the Bundle was defined by the Customer or by Sysdig + example: custom + rules: + type: array + minItems: 1 + maxItems: 1024 + description: The Rules defining this Bundle + items: + $ref: '#/components/schemas/BundleRule' + ListBundlesResponse: + title: Bundles list + type: object + required: + - data + - page + description: Bundles list response + properties: + page: + $ref: '#/components/schemas/PoliciesPage' + data: + type: array + description: Bundles collection + minItems: 0 + maxItems: 1024 + items: + $ref: '#/components/schemas/GetBundleResponse' + VulnSeverity: + title: Vulnerability Severity + description: | + Predicate expressing "the Vulnerability Severity is or higher". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnSeverity + example: vulnSeverity + extra: + type: object + properties: + level: + type: string + enum: + - critical + - high + - medium + - low + - negligible + example: critical + VulnSeverityEquals: + title: Vulnerability Severity Equals + description: | + Predicate expressing "the Vulnerability Severity is exactly ". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnSeverityEquals + example: vulnSeverityEquals + extra: + type: object + properties: + level: + type: string + enum: + - critical + - high + - medium + - low + - negligible + example: critical + VulnIsFixable: + title: Fixable Vuln + description: | + Predicate expressing "the Vulnerability is Fixable". + type: object + required: + - type + properties: + type: + type: string + enum: + - vulnIsFixable + example: vulnIsFixable + VulnIsFixableWithAge: + title: Fixable Vulnerability Older Than X Days + description: | + Predicate expressing "the Vulnerability is Fixable and its fix is older than days". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnIsFixableWithAge + example: vulnIsFixableWithAge + extra: + type: object + properties: + age: + type: integer + format: int32 + description: The age of the fix in days + example: 30 + minimum: 0 + maximum: 36500 + VulnAge: + title: Vulnerability Older Than X Days + description: | + Predicate expressing "the Vulnerability is older than days" + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnAge + example: vulnAge + extra: + type: object + properties: + age: + type: integer + format: int32 + description: The age of the vulnerability in days. + example: 30 + minimum: 0 + maximum: 36500 + VulnPkgType: + title: Vulnerability Package Type + description: | + Predicate expressing "the Vulnerability is related to a package of ". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnPkgType + example: vulnPkgType + extra: + type: object + required: + - pkgType + properties: + pkgType: + type: string + enum: + - os + - nonOs + description: | + The package type, either OS or non-OS. There is no enforcement on the value for future extensibility. + example: os + VulnCvss: + title: Vulnerability CVSS Score + description: | + Predicate expressing "the Vulnerability CVSS Score is higher than " + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnCVSS + example: vulnCVSS + extra: + type: object + properties: + value: + type: number + format: float + description: The threshold for greater-than-or-equal comparison with CVSS Score. + minimum: 0 + maximum: 10 + example: 4 + VulnCvssEquals: + title: Vulnerability CVSS Score Equals + description: | + Predicate expressing "the Vulnerability CVSS Score is exactly equal to " + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnCVSSEquals + example: vulnCVSSEquals + extra: + type: object + properties: + value: + type: number + format: float + description: The threshold for equality comparison with the CVSS Score. + minimum: 0 + maximum: 10 + example: 4 + VulnExploitable: + title: Exploitable Vuln + description: | + Predicate expressing "the Vulnerability is exploitable". + type: object + required: + - type + properties: + type: + type: string + enum: + - vulnExploitable + example: vulnExploitable + VulnExploitableWithAge: + title: Exploitable Vulnerability Older Than X Days + description: | + Predicate expressing "the Vulnerability is exploitable and the exploit is older. than days" + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnExploitableWithAge + example: vulnExploitableWithAge + extra: + type: object + properties: + age: + type: integer + format: int32 + description: The age of the exploit in days + example: 30 + minimum: 0 + maximum: 36500 + VulnExploitableNoAdmin: + title: Exploitable Vulnerability No Admin + description: | + Predicate expressing "the Vulnerability is exploitable and the exploit does not. require admin privileges" + type: object + required: + - type + properties: + type: + type: string + enum: + - vulnExploitableNoAdmin + example: vulnExploitableNoAdmin + VulnExploitableNoUser: + title: Exploitable Vulnerability No User + description: | + Predicate expressing "the Vulnerability is exploitable and the exploit does not. require user interaction" + type: object + required: + - type + properties: + type: + type: string + enum: + - vulnExploitableNoUser + example: vulnExploitableNoUser + VulnExploitableViaNetwork: + title: Exploitable Vulnerability Via Network + description: | + Predicate expressing "the Vulnerability is exploitable via network". + type: object + required: + - type + properties: + type: + type: string + enum: + - vulnExploitableViaNetwork + example: vulnExploitableViaNetwork + VulnDisclosureRange: + title: Vulnerabilities disclosure date range + description: The start and end dates (inclusive) when vulnerabilities were disclosed. + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnDisclosureRange + example: vulnDisclosureRange + extra: + type: object + properties: + startDate: + description: The start date (inclusive) of disclosed vulnerabilities. + type: string + format: date + maxLength: 10 + example: '2024-02-27' + endDate: + description: The end date (inclusive) of disclosed vulnerabilities. + type: string + format: date + maxLength: 10 + example: '2024-05-22' + VulnIsInUse: + title: Vulnerable resource in use + description: The vulnerable resources currently in use. + type: object + required: + - type + properties: + type: + type: string + enum: + - vulnIsInUse + example: vulnIsInUse + VulnEpssScoreGte: + title: Vulnerability EPSS score threshold + description: The EPSS score that meets or exceeds the specified threshold value. + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnEpssScoreGte + example: vulnEpssScoreGte + extra: + type: object + properties: + score: + description: Score value to compare. + type: integer + format: int32 + minimum: 0 + maximum: 100 + example: 30 + VulnEpssPercentileGte: + title: Vulnerability EPSS percentile threshold + description: The EPSS percentile score that is greater than or equal to the specified value. + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - vulnEpssPercentileGte + example: vulnEpssPercentileGte + extra: + type: object + properties: + percentile: + description: Percentile value to compare. + type: integer + format: int32 + minimum: 0 + maximum: 100 + example: 30 + CisaKevPublishDate: + title: Vulnerability CISA KEV fix due in + description: Number of days remaining until the CISA KEV-listed vulnerability is fixed. + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - cisaKevDueDateIn + example: cisaKevDueDateIn + extra: + type: object + properties: + days: + description: Number of days. + type: integer + format: int32 + example: 3 + minimum: 1 + maximum: 3650 + CisaKevKnownRansomwareCampaignUse: + title: Vulnerability CISAKEVKnown Ransomware Campaign Use + description: | + The vulnerability listed in CISA's KEV catalog as actively exploited in ransomware campaigns. + type: object + required: + - type + properties: + type: + type: string + enum: + - cisaKevKnownRansomwareCampaignUse + example: cisaKevKnownRansomwareCampaignUse + CisaKevAvailableSince: + title: Vulnerability CISAKEV Available Since + description: | + Number of days since the vulnerability was added to CISA's Known Exploited Vulnerabilities (KEV) catalog. Calculated from initial inclusion date to current date. + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - cisaKevAvailableSince + example: cisaKevAvailableSince + extra: + type: object + properties: + days: + description: Number of days. + type: integer + format: int32 + example: 3 + minimum: 1 + maximum: 3650 + DenyCve: + title: Deny CVE + description: | + Predicate expressing "any of these CVEs is present". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - denyCVE + example: denyCVE + extra: + type: object + properties: + vulnIds: + type: array + minItems: 1 + maxItems: 1024 + items: + type: string + maxLength: 1024 + description: CVE Ids + example: CVE-2019-1234 + DenyPkg: + title: Deny Package + description: | + Predicate expressing "any of these packages is present". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - denyPkg + example: denyPkg + extra: + type: object + required: + - packages + properties: + packages: + type: array + minItems: 1 + maxItems: 1024 + items: + type: object + required: + - name + properties: + name: + type: string + description: Package name + example: curl + maxLength: 512 + version: + type: string + description: Package version + example: 1.0.0 + maxLength: 128 + ImageConfigDefaultUserList: + title: Image default user + description: Configuration to set the default user for the specified image. + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - imageConfigDefaultUserList + example: imageConfigDefaultUserList + extra: + type: object + required: + - users + - operator + properties: + operator: + type: string + enum: + - IN + - NOT_IN + example: IN + users: + type: array + minItems: 0 + maxItems: 1024 + items: + type: string + minLength: 1 + maxLength: 256 + example: root + example: + - root + - admin + ImageConfigDefaultUserIsRoot: + title: Default User Is Root + description: | + Predicate expressing "the container user defaults to root user". + type: object + required: + - type + properties: + type: + type: string + enum: + - imageConfigDefaultUserIsRoot + example: imageConfigDefaultUserIsRoot + ImageConfigDefaultUserIsNot: + title: Default User Is Not + description: | + Predicate expressing "the container user does not default to the specified user". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - imageConfigDefaultUserIsNot + example: imageConfigDefaultUserIsNot + extra: + type: object + required: + - user + properties: + user: + type: string + maxLength: 1024 + example: root + ImageConfigLabelExists: + title: Image Label Exists + description: | + Predicate expressing "the image has the specified label". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - imageConfigLabelExists + example: imageConfigLabelExists + extra: + type: object + required: + - key + properties: + key: + type: string + maxLength: 1024 + example: test + ImageConfigLabelNotExists: + title: Image Label Does Not Exist + description: | + Predicate expressing "the image does not have the specified label". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - imageConfigLabelNotExists + example: imageConfigLabelNotExists + extra: + type: object + required: + - key + properties: + key: + type: string + maxLength: 1024 + example: label name + ImageConfigLabelNotContains: + title: Image Label Contains + description: | + Predicate expressing "the image has the specified label and value". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - imageConfigLabelNotContains + example: imageConfigLabelNotContains + extra: + type: object + required: + - key + - value + properties: + key: + type: string + maxLength: 1024 + example: label name + value: + type: string + maxLength: 1024 + example: label value + ImageConfigEnvVariableExists: + title: Environment Variable Exists + description: | + Predicate expressing "the container has the specified environment variable". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - imageConfigEnvVariableExists + example: imageConfigEnvVariableExists + extra: + type: object + required: + - key + properties: + key: + type: string + maxLength: 1024 + example: ENV_VAR + ImageConfigEnvVariableNotExists: + title: Environment Variable Does Not Exist + description: | + Predicate expressing "the container does not have the specified environment variable". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - imageConfigEnvVariableNotExists + example: imageConfigEnvVariableNotExists + extra: + type: object + required: + - key + properties: + key: + type: string + maxLength: 1024 + example: ENV_VAR + ImageConfigEnvVariableContains: + title: Environment Variable Contains + description: | + Predicate expressing "the container has the specified environment variable and value". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - imageConfigEnvVariableContains + example: imageConfigEnvVariableContains + extra: + type: object + required: + - key + properties: + key: + type: string + maxLength: 1024 + example: ENV_VAR + value: + type: string + maxLength: 1024 + example: VALUE + ImageConfigInstructionNotRecommended: + title: Instruction Not Recommended + description: | + Predicate expressing "the image history contains not recommended instruction (ADD, ...)". + type: object + required: + - type + properties: + type: + type: string + enum: + - imageConfigInstructionNotRecommended + example: imageConfigInstructionNotRecommended + ImageConfigInstructionIsPkgManager: + title: Instruction Is PkgManager + description: | + Predicate expressing "the image history contains a package manager command (eg. apk, npm, rpm, etc)". + type: object + required: + - type + properties: + type: + type: string + enum: + - imageConfigInstructionIsPkgManager + example: imageConfigInstructionIsPkgManager + ImageConfigCreationDateWithAge: + title: Image Creation Date + description: | + Predicate expressing "the image has been created before the specified amount of days". + type: object + required: + - type + - extra + properties: + type: + type: string + enum: + - imageConfigCreationDateWithAge + example: imageConfigCreationDateWithAge + extra: + type: object + required: + - age + properties: + key: + type: integer + format: int32 + example: 1 + minimum: 1 + maximum: 2147483647 + ImageConfigSensitiveInformationAndSecrets: + title: Sensitive Data + description: | + Predicate expressing "the image contains sensitive information and secrets". + type: object + required: + - type + properties: + type: + type: string + enum: + - imageConfigSensitiveInformationAndSecrets + example: imageConfigSensitiveInformationAndSecrets + Predicates: + type: array + description: The Predicates defining this Rule + maxItems: 1000 + minItems: 1 + items: + anyOf: + - $ref: '#/components/schemas/VulnSeverity' + - $ref: '#/components/schemas/VulnSeverityEquals' + - $ref: '#/components/schemas/VulnIsFixable' + - $ref: '#/components/schemas/VulnIsFixableWithAge' + - $ref: '#/components/schemas/VulnAge' + - $ref: '#/components/schemas/VulnPkgType' + - $ref: '#/components/schemas/VulnCvss' + - $ref: '#/components/schemas/VulnCvssEquals' + - $ref: '#/components/schemas/VulnExploitable' + - $ref: '#/components/schemas/VulnExploitableWithAge' + - $ref: '#/components/schemas/VulnExploitableNoAdmin' + - $ref: '#/components/schemas/VulnExploitableNoUser' + - $ref: '#/components/schemas/VulnExploitableViaNetwork' + - $ref: '#/components/schemas/VulnDisclosureRange' + - $ref: '#/components/schemas/VulnIsInUse' + - $ref: '#/components/schemas/VulnEpssScoreGte' + - $ref: '#/components/schemas/VulnEpssPercentileGte' + - $ref: '#/components/schemas/CisaKevPublishDate' + - $ref: '#/components/schemas/CisaKevKnownRansomwareCampaignUse' + - $ref: '#/components/schemas/CisaKevAvailableSince' + - $ref: '#/components/schemas/DenyCve' + - $ref: '#/components/schemas/DenyPkg' + - $ref: '#/components/schemas/ImageConfigDefaultUserList' + - $ref: '#/components/schemas/ImageConfigDefaultUserIsRoot' + - $ref: '#/components/schemas/ImageConfigDefaultUserIsNot' + - $ref: '#/components/schemas/ImageConfigLabelExists' + - $ref: '#/components/schemas/ImageConfigLabelNotExists' + - $ref: '#/components/schemas/ImageConfigLabelNotContains' + - $ref: '#/components/schemas/ImageConfigEnvVariableExists' + - $ref: '#/components/schemas/ImageConfigEnvVariableNotExists' + - $ref: '#/components/schemas/ImageConfigEnvVariableContains' + - $ref: '#/components/schemas/ImageConfigInstructionNotRecommended' + - $ref: '#/components/schemas/ImageConfigInstructionIsPkgManager' + - $ref: '#/components/schemas/ImageConfigCreationDateWithAge' + - $ref: '#/components/schemas/ImageConfigSensitiveInformationAndSecrets' + example: + - type: vulnSeverity + extra: + level: high + - type: vulnIsFixable + - type: denyCVE + extra: + vulnIds: + - CVE-2021-12345 + - CVE-2021-67890 + NewRule: + type: object + description: A Rule definition + required: + - ruleType + - predicates + properties: + ruleType: + type: string + enum: + - vulnSeverityAndThreats + - vulnDenyList + - imageConfigDefaultUser + - imageConfigLabel + - imageConfigEnvVariable + - imageConfigInstructionNotRecommended + - imageConfigInstructionIsPkgManager + - imageConfigCreationDate + - imageConfigSensitiveInformationAndSecrets + - pkgDenyList + example: vulnDenyList + predicates: + $ref: '#/components/schemas/Predicates' + CreateBundleRequest: + type: object + description: Bundle definition + required: + - name + - rules + properties: + name: + type: string + description: The human readable Bundle name + minLength: 1 + maxLength: 1024 + example: sysdig bundle + description: + type: string + description: Human readable description of this Bundle + minLength: 0 + maxLength: 4096 + example: default sysdig bundle + rules: + type: array + minItems: 1 + maxItems: 1024 + description: The Rules defining this Bundle + items: + $ref: '#/components/schemas/NewRule' + SbomComponent: + title: SBOM component schema + type: object + required: + - type + - name + properties: + type: + type: string + title: Component Type + description: |- + Specifies the type of component. For software components, classify as application if no more specific appropriate classification is available or cannot be determined for the component. Types include: + + * __application__ = A software application. Refer to [https://en.wikipedia.org/wiki/Application_software](https://en.wikipedia.org/wiki/Application_software) for information about applications. + * __framework__ = A software framework. Refer to [https://en.wikipedia.org/wiki/Software_framework](https://en.wikipedia.org/wiki/Software_framework) for information on how frameworks vary slightly from libraries. + * __library__ = A software library. Refer to [https://en.wikipedia.org/wiki/Library_(computing)](https://en.wikipedia.org/wiki/Library_(computing)) + for information about libraries. All third-party and open source reusable components will likely be a library. If the library also has key features of a framework, then it should be classified as a framework. If not, or is unknown, then specifying library is RECOMMENDED. + * __container__ = A packaging and/or runtime format, not specific to any particular technology, which isolates software inside the container from software outside of a container through virtualization technology. Refer to [https://en.wikipedia.org/wiki/OS-level_virtualization](https://en.wikipedia.org/wiki/OS-level_virtualization) + * __platform__ = A runtime environment which interprets or executes software. This may include runtimes such as those that execute bytecode or low-code/no-code application platforms. + * __operating-system__ = A software operating system without regard to deployment model (i.e. installed on physical hardware, virtual machine, image, etc) Refer to [https://en.wikipedia.org/wiki/Operating_system](https://en.wikipedia.org/wiki/Operating_system) + * __device__ = A hardware device such as a processor, or chip-set. A hardware device containing firmware SHOULD include a component for the physical hardware itself, and another component of type 'firmware' or 'operating-system' (whichever is relevant), describing information about the software running on the device. + See also the list of [known device properties](https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/device.md). + * __device-driver__ = A special type of software that operates or controls a particular type of device. Refer to [https://en.wikipedia.org/wiki/Device_driver](https://en.wikipedia.org/wiki/Device_driver) + * __firmware__ = A special type of software that provides low-level control over a devices hardware. Refer to [https://en.wikipedia.org/wiki/Firmware](https://en.wikipedia.org/wiki/Firmware) + * __file__ = A computer file. Refer to [https://en.wikipedia.org/wiki/Computer_file](https://en.wikipedia.org/wiki/Computer_file) for information about files. + * __machine-learning-model__ = A model based on training data that can make predictions or decisions without being explicitly programmed to do so. + * __data__ = A collection of discrete values that convey information. + example: library + maxLength: 512 + name: + type: string + title: Component Name + description: 'The name of the component. This will often be a shortened, single name of the component. Examples: commons-lang3 and jquery' + example: tomcat-catalina + maxLength: 512 + bom-ref: + type: string + title: BOM Reference + description: An optional identifier which can be used to reference the component elsewhere in the BOM. Every bom-ref MUST be unique within the BOM. + example: 5581fa94-9052-4e55-8b28-750f16e183be + maxLength: 512 + version: + type: string + title: Component Version + description: The component version. The version should ideally comply with semantic versioning but is not enforced. + example: 9.0.14 + maxLength: 512 + group: + type: string + title: Component Group + description: 'The grouping name or identifier. This will often be a shortened, single name of the company or project that produced the component, or the source package or domain name. Whitespace and special characters should be avoided. Examples include: apache, org.apache.commons, and apache.org.' + example: com.acme + maxLength: 512 + purl: + type: string + title: Component Package URL (purl) + description: 'Specifies the package-url (purl). The purl, if specified, MUST be valid and conform to the specification defined at: [https://github.com/package-url/purl-spec](https://github.com/package-url/purl-spec)' + example: pkg:maven/com.acme/tomcat-catalina@9.0.14?packaging=jar + maxLength: 512 + SbomResultResponse: + type: object + title: SBOM schema + description: SBOM of the requested asset + required: + - bomFormat + - specVersion + properties: + bomFormat: + type: string + title: BOM Format + description: Specifies the format of the BOM. This helps to identify the file as CycloneDX since BOMs do not have a filename convention nor does JSON schema support namespaces. This value MUST be "CycloneDX". + enum: + - CycloneDX + example: CycloneDX + specVersion: + type: string + title: CycloneDX Specification Version + description: The version of the CycloneDX specification a BOM conforms to (starting at version 1.2). + example: '1.5' + maxLength: 512 + serialNumber: + type: string + title: BOM Serial Number + description: Every BOM generated SHOULD have a unique serial number, even if the contents of the BOM have not changed over time. If specified, the serial number MUST conform to RFC-4122. Use of serial numbers are RECOMMENDED. + example: urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79 + maxLength: 512 + version: + type: integer + format: int32 + title: BOM Version + description: Whenever an existing BOM is modified, either manually or through automated processes, the version of the BOM SHOULD be incremented by 1. When a system is presented with multiple BOMs with identical serial numbers, the system SHOULD use the most recent version of the BOM. The default version is '1'. + minimum: 1 + maximum: 2147483647 + default: 1 + example: 1 + metadata: + type: object + title: BOM Metadata + description: Provides additional information about a BOM. + properties: + timestamp: + type: string + title: Timestamp + description: The date and time (timestamp) when the BOM was created. + format: date-time + example: '2018-03-20T09:12:28Z' + maxLength: 512 + lifecycle: + type: string + title: Lifecycle + description: The product lifecycle(s) that this BOM represents. + enum: + - post-build + - operations + example: post-build + tools: + type: object + title: Creation Tools + description: The tool(s) used in the creation of the BOM. + component: + $ref: '#/components/schemas/SbomComponent' + components: + type: array + maxItems: 1000000 + title: Components + description: A list of software and hardware components. + items: + $ref: '#/components/schemas/SbomComponent' + dependencies: + type: array + maxItems: 1000000 + title: Dependencies + description: Provides the ability to document dependency relationships. + items: + type: object + title: Dependency + description: Defines the direct dependencies of a component or service. Components or services that do not have their own dependencies MUST be declared as empty elements within the graph. Components or services that are not represented in the dependency graph MAY have unknown dependencies. It is RECOMMENDED that implementations assume this to be opaque and not an indicator of a object being dependency-free. It is RECOMMENDED to leverage compositions to indicate unknown dependency graphs. + properties: + ref: + type: string + title: Reference + description: References a component or service by its bom-ref attribute + example: 5581fa94-9052-4e55-8b28-750f16e183be + maxLength: 512 + dependsOn: + type: array + maxItems: 1000000 + title: Depends On + description: The bom-ref identifiers of the components or services that are dependencies of this dependency object. + items: + type: string + description: Identifier for referable and therefore interlink-able elements. + example: 5581fa94-9052-4e55-8b28-750f16e183be + maxLength: 512 + required: + - ref + compositions: + type: array + maxItems: 1000000 + title: Compositions + description: Compositions describe constituent parts (including components, services, and dependency relationships) and their completeness. The completeness of vulnerabilities expressed in a BOM may also be described. + items: + type: object + properties: + aggregate: + type: string + title: Aggregate + description: | + Specifies an aggregate type that describe how complete a relationship is. + + * __complete__ = The relationship is complete. No further relationships including constituent components, services, or dependencies are known to exist. + * __incomplete__ = The relationship is incomplete. Additional relationships exist and may include constituent components, services, or dependencies. + * __incomplete_first_party_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented. + * __incomplete_first_party_proprietary_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are proprietary. + * __incomplete_first_party_opensource_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are opensource. + * __incomplete_third_party_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented. + * __incomplete_third_party_proprietary_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are proprietary. + * __incomplete_third_party_opensource_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are opensource. + * __unknown__ = The relationship may be complete or incomplete. This usually signifies a 'best-effort' to obtain constituent components, services, or dependencies but the completeness is inconclusive. + * __not_specified__ = The relationship completeness is not specified. + enum: + - complete + - incomplete + - unknown + - not_specified + example: complete + assemblies: + type: array + maxItems: 1000000 + title: BOM references + description: The bom-ref identifiers of the components or services being described. Assemblies refer to nested relationships whereby a constituent part may include other constituent parts. References do not cascade to child parts. References are explicit for the specified constituent part only. + items: + type: string + description: Identifier for referable and therefore interlink-able elements. + example: 5581fa94-9052-4e55-8b28-750f16e183be + maxLength: 512 + dependencies: + type: array + maxItems: 1000000 + title: BOM references + description: The bom-ref identifiers of the components or services being described. Assemblies refer to nested relationships whereby a constituent part may include other constituent parts. References do not cascade to child parts. References are explicit for the specified constituent part only. + items: + type: string + description: Identifier for referable and therefore interlink-able elements. + example: 5581fa94-9052-4e55-8b28-750f16e183be + maxLength: 512 + required: + - aggregate + ContextEmpty: + type: array + title: Empty matcher + description: To be used when `entityType` is not `vulnerability` or `policyRule`. + maxItems: 0 + items: + type: object + example: [] + ImageName: + type: object + title: Image Name + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - imageName + example: imageName + contextValue: + type: string + description: Value to match + maxLength: 512 + example: latest + ContextImageName: + type: array + title: Image name matcher + description: Context to apply + maxItems: 1 + minItems: 1 + items: + $ref: '#/components/schemas/ImageName' + ImageSuffix: + type: object + title: Image suffix. + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - imageSuffix + example: imageSuffix + contextValue: + type: string + description: Value to match + maxLength: 512 + example: test:latest + ContextImageSuffix: + type: array + title: Image name suffix matcher + description: Context to apply + maxItems: 1 + minItems: 1 + items: + $ref: '#/components/schemas/ImageSuffix' + ImagePrefix: + type: object + title: Image Prefix + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - imagePrefix + example: imagePrefix + contextValue: + type: string + description: Value to match + maxLength: 512 + example: quay.io/testedImages + ContextImagePrefix: + type: array + title: Image name prefix matcher + description: Context to apply + maxItems: 1 + minItems: 1 + items: + $ref: '#/components/schemas/ImagePrefix' + ImageNameContains: + type: object + title: Image Name Contains + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - imageNameContains + example: imageNameContains + contextValue: + type: string + description: Value to match + maxLength: 512 + example: .io/test + ContextImageContains: + type: array + title: Image name contains matcher + description: Context to apply + maxItems: 1 + minItems: 1 + items: + $ref: '#/components/schemas/ImageNameContains' + PackageName: + type: object + title: Package Name + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - packageName + example: packageName + contextValue: + type: string + description: Value to match + maxLength: 512 + example: github.com/prometheus/common + ContextPackageName: + type: array + title: Package Name matcher + description: Context to apply + maxItems: 1 + minItems: 1 + items: + $ref: '#/components/schemas/PackageName' + PackageNameVersion: + type: object + title: Package Name and Version + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - packageVersion + - packageName + example: packageVersion + contextValue: + type: string + description: Value to match + maxLength: 512 + example: github.com/prometheus/common + ContextPackageNameVersion: + type: array + title: Package Name and Version matcher + description: Context to apply + maxItems: 2 + minItems: 2 + items: + $ref: '#/components/schemas/PackageNameVersion' + HostName: + type: object + title: Host Name + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - hostName + example: hostName + contextValue: + type: string + description: Value to match + maxLength: 512 + example: ip-10-0-1-105.ec2.internal + ContextHostName: + type: array + title: Host name matcher + description: Context host name + maxItems: 1 + minItems: 1 + items: + $ref: '#/components/schemas/HostName' + HostNameContains: + type: object + title: Host Name Contains + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - hostNameContains + example: hostNameContains + contextValue: + type: string + description: Value to match + maxLength: 512 + example: ec2.internal + ContextHostContains: + type: array + title: Host name contains matcher + description: Context to apply + maxItems: 1 + minItems: 1 + items: + $ref: '#/components/schemas/HostNameContains' + PackagePath: + type: object + title: Package Path + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - packagePath + example: packagePath + contextValue: + type: string + description: Value to match + maxLength: 512 + example: /var/lib + ContextPackagePath: + type: array + title: Package Path matcher + description: Context to apply + maxItems: 1 + minItems: 1 + items: + $ref: '#/components/schemas/PackagePath' + PackageVersion: + type: object + title: Package Version + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - packageVersion + example: packageVersion + contextValue: + type: string + description: Value to match + maxLength: 512 + example: v0.50.0 + ContextPackageVersion: + type: array + title: Package Version matcher + description: Context to apply + maxItems: 1 + minItems: 1 + items: + $ref: '#/components/schemas/PackageVersion' + PackagePathVersion: + type: object + title: Package Path and Version + properties: + contextType: + type: string + description: Matcher type to apply + enum: + - packageVersion + - packagePath + example: packageVersion + contextValue: + type: string + description: Value to match + maxLength: 512 + example: v0.50.0 + ContextPackagePathVersion: + type: array + title: Package Path and Version matcher + description: Context to apply + maxItems: 2 + minItems: 2 + items: + $ref: '#/components/schemas/PackagePathVersion' + BaseRiskAcceptedResponsePayload: + type: object + title: Base Response Accepted Risk Payload + properties: + id: + type: string + maxLength: 512 + description: The Accepted Risk ID + example: 17af8bade67c9a208e632df001fcea2c + expirationDate: + description: Date when the accepted risk will expire (in YYYY-MM-DD format) + type: string + format: date + maxLength: 10 + example: '2024-02-27' + createdAt: + type: string + maxLength: 100 + format: date-time + description: Date when the Accepted Risk was created + example: '2024-01-22T08:51:46.016464Z' + updatedAt: + type: string + maxLength: 100 + format: date-time + description: Date when the Accepted Risk was updated + example: '2024-02-22T08:51:46.016464Z' + status: + type: string + description: Specifies whether the Accepted Risk is enabled or expired + enum: + - active + - expired + example: active + createdBy: + type: string + maxLength: 100 + description: User who created the risk acceptance + example: user@sysdig.com + updatedBy: + type: string + maxLength: 100 + description: User who last updated the risk acceptance + example: user@sysdig.com + BaseRiskAcceptedPayload: + type: object + title: Base Accepted Risk Payload + properties: + entityValue: + description: A value to match with the entityType + type: string + maxLength: 512 + minLength: 1 + example: CVE-1234-56789 + expirationDate: + description: Date when the accepted risk will expire (in YYYY-MM-DD format) + type: string + format: date + maxLength: 10 + example: '2024-02-27' + reason: + description: Reason for acceptance + type: string + enum: + - RiskTransferred + - RiskAvoided + - RiskMitigated + - RiskOwned + - RiskNotRelevant + - Custom + example: RiskTransferred + description: + description: Description of why the accepted risk was created + type: string + maxLength: 512 + example: vulnerability cannot be removed manually + stages: + description: List of stages where the risk acceptance is applied, empty list enables risk acceptance for all the stages + type: array + minItems: 0 + maxItems: 3 + nullable: true + items: + type: string + enum: + - runtime + - pipeline + - registry + example: runtime + example: + - runtime + - pipeline + - registry + RiskAcceptedResponse: + type: object + title: Accepted Risk Response + allOf: + - type: object + required: + - id + - entityType + - entityValue + - context + - reason + - description + - status + properties: + entityType: + type: string + description: The entity where the Accepted Risk will be applied. + enum: + - imageName + - imagePrefix + - imageSuffix + - vulnerability + - hostName + - hostNameContains + - imageNameContains + - policyRule + - package + example: imageName + context: + description: If entityType is not `vulnerability`, `policyRule` or `package`, you should use `Empty Matcher` in the context. + oneOf: + - $ref: '#/components/schemas/ContextEmpty' + - $ref: '#/components/schemas/ContextImageName' + - $ref: '#/components/schemas/ContextImageSuffix' + - $ref: '#/components/schemas/ContextImagePrefix' + - $ref: '#/components/schemas/ContextImageContains' + - $ref: '#/components/schemas/ContextPackageName' + - $ref: '#/components/schemas/ContextPackageNameVersion' + - $ref: '#/components/schemas/ContextHostName' + - $ref: '#/components/schemas/ContextHostContains' + - $ref: '#/components/schemas/ContextPackagePath' + - $ref: '#/components/schemas/ContextPackageVersion' + - $ref: '#/components/schemas/ContextPackagePathVersion' + - $ref: '#/components/schemas/BaseRiskAcceptedResponsePayload' + - $ref: '#/components/schemas/BaseRiskAcceptedPayload' + example: + id: 17ac9f4b9fa70c801868930109997bbc + entityType: imageName + entityValue: alpine:3.16 + expirationDate: '2025-02-01' + context: [] + reason: Custom + description: My description + status: active + createdAt: '2024-01-22T08:51:46.016464Z' + updatedAt: '2024-01-22T08:51:46.016464Z' + createdBy: user@sysdig.com + updatedBy: user@sysdig.com + ListRiskAcceptedResponse: + title: Accepted Risk Response List + type: object + required: + - data + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + required: + - data + properties: + data: + type: array + maxItems: 200 + description: List of Accepted Risks + items: + allOf: + - $ref: '#/components/schemas/RiskAcceptedResponse' + CreateRiskAcceptedRequest: + title: Accepted Risk Request + type: object + allOf: + - type: object + required: + - entityType + - entityValue + - reason + - description + - context + properties: + entityType: + type: string + description: The entity where the Accepted Risk will be applied. + enum: + - imageName + - imagePrefix + - imageSuffix + - vulnerability + - hostName + - hostNameContains + - imageNameContains + - policyRule + - package + example: imageName + context: + description: If entityType is not `vulnerability`, `policyRule` or `package`, you should use `Empty Matcher` in the context. + oneOf: + - $ref: '#/components/schemas/ContextEmpty' + - $ref: '#/components/schemas/ContextImageName' + - $ref: '#/components/schemas/ContextImageSuffix' + - $ref: '#/components/schemas/ContextImagePrefix' + - $ref: '#/components/schemas/ContextImageContains' + - $ref: '#/components/schemas/ContextPackageName' + - $ref: '#/components/schemas/ContextPackageNameVersion' + - $ref: '#/components/schemas/ContextHostName' + - $ref: '#/components/schemas/ContextHostContains' + - $ref: '#/components/schemas/ContextPackagePath' + - $ref: '#/components/schemas/ContextPackageVersion' + - $ref: '#/components/schemas/ContextPackagePathVersion' + - $ref: '#/components/schemas/BaseRiskAcceptedPayload' + example: + entityType: vulnerability + entityValue: CVE-2023-39325 + expirationDate: '2025-02-01' + context: [] + reason: RiskTransferred + description: Accept Risk everywhere for CVE-2023-39325 + UpdateRiskAccepted: + title: Update Risk Accepted + type: object + properties: + expirationDate: + description: | + Date when the accepted risk expires. Setting this to null will make the accepted risk never expire. + type: string + maxLength: 10 + example: '2024-02-27' + nullable: true + reason: + description: Reason for acceptance + type: string + enum: + - RiskTransferred + - RiskAvoided + - RiskMitigated + - RiskOwned + - RiskNotRelevant + - Custom + example: RiskTransferred + description: + description: Description of why the accepted risk was created + type: string + maxLength: 512 + example: vulnerability cannot be removed manually + ZoneScope: + title: Zone Scope + type: object + required: + - targetType + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + targetType: + type: string + format: string + example: target + maxLength: 512 + description: The target type of the Scope + rules: + type: string + format: string + example: clusterId in ( "test" ) + maxLength: 2048 + description: Scoping rules to be applied + ZoneResponseV1: + title: Zone Response V1 + type: object + properties: + id: + $ref: '#/components/schemas/UnlimitedLong' + name: + type: string + example: Production + maxLength: 512 + description: The name of the Zone + description: + type: string + format: string + example: Production Environment + maxLength: 8192 + description: The description of the Zone + author: + type: string + format: string + example: Sysdig + maxLength: 512 + description: Email of the user who created this Zone + lastModifiedBy: + type: string + format: string + example: john_doe@sysdig.com + maxLength: 512 + description: Email of the user who last modified the Zone + lastUpdated: + allOf: + - $ref: '#/components/schemas/UnlimitedLong' + description: | + Timestamp indicating the moment the Zone has been last updated.\ + It is expressed in milliseconds elapsed since January 1, 1970 UTC. + isSystem: + type: boolean + example: false + description: Boolean value indicating if the Zone is a *System* one + scopes: + type: array + maxItems: 8192 + items: + $ref: '#/components/schemas/ZoneScope' + description: Attached Zone Scopes + ListZonesResponseV1: + title: Zones List Response V1 + allOf: + - $ref: '#/components/schemas/OffsetPaginatedResponse' + - type: object + properties: + data: + type: array + maxItems: 200 + items: + allOf: + - $ref: '#/components/schemas/ZoneResponseV1' + description: A paged list of Zones + CreateZoneScopeRequestV1: + title: Zone Scope + type: object + required: + - targetType + properties: + targetType: + type: string + format: string + example: aws + maxLength: 512 + description: The target type of the Scope + rules: + type: string + format: string + example: clusterId in ( "test" ) + maxLength: 2048 + description: Scoping rules to be applied + CreateZoneRequestV1: + type: object + title: Zone Request V1 + required: + - name + - scopes + properties: + name: + type: string + example: Production + maxLength: 255 + description: The name of the Zone. It must be unique + description: + type: string + format: string + example: Production environment + maxLength: 1024 + description: The Zone description. It can be useful for adding extra information + scopes: + type: array + minItems: 1 + maxItems: 512 + items: + $ref: '#/components/schemas/CreateZoneScopeRequestV1' + description: Zone attached scopes + responses: + BadRequest: + description: Operation failed due to invalid payload. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: bad_request + message: Bad request + details: [] + Unauthorized: + description: Access denied. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: unauthorized + message: Unauthorized + details: [] + NotFound: + description: Not found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: resource_not_found + message: Resource not found + details: [] + TooManyRequests: + description: Too many requests. + headers: + Retry-After: + schema: + type: integer + format: int32 + minimum: 1 + maximum: 14400 + description: Retry after X seconds. + required: false + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: too_many_requests + message: Too many requests + details: [] + InternalServerError: + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: internal_server_error + message: Internal server error + details: [] + Conflict: + description: Conflict. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: conflict + message: Conflict + details: [] + UnsupportedMediaType: + description: Server cannot accept content of type specified in Content-Type header. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: unsupported_media_type + message: Unsupported media type + details: [] + UnprocessableEntity: + description: Server was unable to process the request. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: unprocessable_content + message: Unprocessable content + details: [] + Forbidden: + description: Not enough privileges to complete the action. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: forbidden + message: Forbidden + details: [] + BadRequestPrometheus: + description: Operation failed due to invalid payload. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/PrometheusError' + example: + status: error + errorType: bad_data + error: 'unknown position: parse error: no expression found in input' + UnauthorizedPrometheus: + description: Access denied. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + type: object + properties: + timestamp: + type: integer + format: int64 + description: Epoch timestamp (milliseconds) when the error occurred. + minimum: 0 + maximum: 9999999999999 + example: 1743154268491 + status: + type: integer + format: int32 + description: HTTP status code of the response. + enum: + - 401 + minimum: 401 + maximum: 401 + example: 401 + error: + type: string + description: A human-readable error message. + maxLength: 1024 + example: Unauthorized + path: + type: string + description: The requested endpoint path that triggered the error. + maxLength: 1024 + example: /ext/auth/prometheus/api/v1/query + required: + - timestamp + - status + - error + - path + NotFoundPrometheus: + description: Not found. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + type: string + description: Error message indicating that the requested page was not found. + maxLength: 1024 + example: 404 page not found + InternalServerErrorPrometheus: + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/PrometheusError' + example: + status: error + errorType: server_error + error: error writing response + UnprocessableEntityPrometheus: + description: Operation failed due to unprocessable entity. + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/PrometheusError' + example: + status: error + errorType: execution + error: Invalid time range + GonePrometheus: + description: Gone + headers: + X-RateLimit-Limit: + description: Maximum number of allowed requests per minute. + schema: + type: integer + format: int32 + minimum: 1 + maximum: 4096 + content: + application/json: + schema: + $ref: '#/components/schemas/PrometheusError' + example: + status: error + errorType: gone + error: This API endpoint is not supported. diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index cc2b18bf..00000000 --- a/poetry.lock +++ /dev/null @@ -1,867 +0,0 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. - -[[package]] -name = "alabaster" -version = "0.7.13" -description = "A configurable sidebar-enabled Sphinx theme" -optional = true -python-versions = ">=3.6" -files = [ - {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, - {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, -] - -[[package]] -name = "args" -version = "0.1.0" -description = "Command Arguments for Humans." -optional = false -python-versions = "*" -files = [ - {file = "args-0.1.0.tar.gz", hash = "sha256:a785b8d837625e9b61c39108532d95b85274acd679693b71ebb5156848fcf814"}, -] - -[[package]] -name = "babel" -version = "2.15.0" -description = "Internationalization utilities" -optional = true -python-versions = ">=3.8" -files = [ - {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, - {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, -] - -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} - -[package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "certifi" -version = "2024.2.2" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "clint" -version = "0.5.1" -description = "Python Command Line Interface Tools" -optional = false -python-versions = "*" -files = [ - {file = "clint-0.5.1.tar.gz", hash = "sha256:05224c32b1075563d0b16d0015faaf9da43aa214e4a2140e51f08789e7a4c5aa"}, -] - -[package.dependencies] -args = "*" - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = true -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "coverage" -version = "6.5.0" -description = "Code coverage measurement for Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, - {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, - {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, - {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, - {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, - {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, - {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, - {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, - {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, - {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, - {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, - {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, - {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, - {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, - {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, - {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, -] - -[package.extras] -toml = ["tomli"] - -[[package]] -name = "docutils" -version = "0.19" -description = "Docutils -- Python Documentation Utilities" -optional = true -python-versions = ">=3.7" -files = [ - {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, - {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, -] - -[[package]] -name = "doublex" -version = "1.9.6.1" -description = "Python test doubles" -optional = false -python-versions = ">=3.6" -files = [ - {file = "doublex-1.9.6.1.tar.gz", hash = "sha256:48fbc633598eb913a6eb0c4694f8c040ba57bae9653d45643a84243e0c9f3268"}, -] - -[package.dependencies] -PyHamcrest = "*" -six = "*" - -[[package]] -name = "doublex-expects" -version = "0.7.1" -description = "Expects matchers for Doublex test doubles assertions" -optional = false -python-versions = "*" -files = [ - {file = "doublex-expects-0.7.1.tar.gz", hash = "sha256:8040682d97f0a66f632c5df982f78d09aee36b2c4a1eb275b0c596d115f200aa"}, -] - -[package.dependencies] -doublex = "*" -expects = ">=0.8.0rc1" - -[[package]] -name = "expects" -version = "0.9.0" -description = "Expressive and extensible TDD/BDD assertion library for Python" -optional = false -python-versions = "*" -files = [ - {file = "expects-0.9.0.tar.gz", hash = "sha256:419902ccafe81b7e9559eeb6b7a07ef9d5c5604eddb93000f0642b3b2d594f4c"}, -] - -[[package]] -name = "flake8" -version = "3.9.2" -description = "the modular source code checker: pep8 pyflakes and co" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, - {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, -] - -[package.dependencies] -mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.7.0,<2.8.0" -pyflakes = ">=2.3.0,<2.4.0" - -[[package]] -name = "idna" -version = "3.7" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.5" -files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, -] - -[[package]] -name = "imagesize" -version = "1.4.1" -description = "Getting image size from png/jpeg/jpeg2000/gif file" -optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, - {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, -] - -[[package]] -name = "importlib-metadata" -version = "7.1.0" -description = "Read metadata from Python packages" -optional = true -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = true -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "mamba" -version = "0.11.3" -description = "The definitive testing tool for Python. Born under the banner of Behavior Driven Development." -optional = false -python-versions = "*" -files = [ - {file = "mamba-0.11.3.tar.gz", hash = "sha256:4dcf69e9a53e78d4aa5ec3dee0bb2c65f02ea68a6b62c4275653d7170b8f5fe2"}, -] - -[package.dependencies] -clint = "*" -coverage = "*" - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = true -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "mccabe" -version = "0.6.1" -description = "McCabe checker, plugin for flake8" -optional = false -python-versions = "*" -files = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] - -[[package]] -name = "packaging" -version = "24.0" -description = "Core utilities for Python packages" -optional = true -python-versions = ">=3.7" -files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, -] - -[[package]] -name = "pyaml" -version = "21.10.1" -description = "PyYAML-based module to produce pretty and readable YAML-serialized data" -optional = false -python-versions = "*" -files = [ - {file = "pyaml-21.10.1-py2.py3-none-any.whl", hash = "sha256:19985ed303c3a985de4cf8fd329b6d0a5a5b5c9035ea240eccc709ebacbaf4a0"}, - {file = "pyaml-21.10.1.tar.gz", hash = "sha256:c6519fee13bf06e3bb3f20cacdea8eba9140385a7c2546df5dbae4887f768383"}, -] - -[package.dependencies] -PyYAML = "*" - -[[package]] -name = "pycodestyle" -version = "2.7.0" -description = "Python style guide checker" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, - {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, -] - -[[package]] -name = "pyflakes" -version = "2.3.1" -description = "passive checker of Python programs" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, - {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, -] - -[[package]] -name = "pygments" -version = "2.18.0" -description = "Pygments is a syntax highlighting package written in Python." -optional = true -python-versions = ">=3.8" -files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, -] - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pyhamcrest" -version = "2.1.0" -description = "Hamcrest framework for matcher objects" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pyhamcrest-2.1.0-py3-none-any.whl", hash = "sha256:f6913d2f392e30e0375b3ecbd7aee79e5d1faa25d345c8f4ff597665dcac2587"}, - {file = "pyhamcrest-2.1.0.tar.gz", hash = "sha256:c6acbec0923d0cb7e72c22af1926f3e7c97b8e8d69fc7498eabacaf7c975bd9c"}, -] - -[package.extras] -dev = ["black", "doc2dash", "flake8", "pyhamcrest[docs,tests]", "pytest-mypy", "towncrier", "tox", "tox-asdf", "twine"] -docs = ["alabaster (>=0.7,<1.0)", "sphinx (>=4.0,<5.0)"] -tests = ["coverage[toml]", "dataclasses", "mypy (!=0.940)", "pytest (>=5.0)", "pytest-mypy-plugins", "pytest-sugar", "pytest-xdist", "pyyaml", "types-dataclasses", "types-mock"] -tests-numpy = ["numpy", "pyhamcrest[tests]"] - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = true -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.1" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, -] - -[[package]] -name = "requests" -version = "2.31.0" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.7" -files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "snowballstemmer" -version = "2.2.0" -description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -optional = true -python-versions = "*" -files = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] - -[[package]] -name = "sphinx" -version = "5.3.0" -description = "Python documentation generator" -optional = true -python-versions = ">=3.6" -files = [ - {file = "Sphinx-5.3.0.tar.gz", hash = "sha256:51026de0a9ff9fc13c05d74913ad66047e104f56a129ff73e174eb5c3ee794b5"}, - {file = "sphinx-5.3.0-py3-none-any.whl", hash = "sha256:060ca5c9f7ba57a08a1219e547b269fadf125ae25b06b9fa7f66768efb652d6d"}, -] - -[package.dependencies] -alabaster = ">=0.7,<0.8" -babel = ">=2.9" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.14,<0.20" -imagesize = ">=1.3" -importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} -Jinja2 = ">=3.0" -packaging = ">=21.0" -Pygments = ">=2.12" -requests = ">=2.5.0" -snowballstemmer = ">=2.0" -sphinxcontrib-applehelp = "*" -sphinxcontrib-devhelp = "*" -sphinxcontrib-htmlhelp = ">=2.0.0" -sphinxcontrib-jsmath = "*" -sphinxcontrib-qthelp = "*" -sphinxcontrib-serializinghtml = ">=1.1.5" - -[package.extras] -docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-bugbear", "flake8-comprehensions", "flake8-simplify", "isort", "mypy (>=0.981)", "sphinx-lint", "types-requests", "types-typed-ast"] -test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] - -[[package]] -name = "sphinx-rtd-theme" -version = "0.5.1" -description = "Read the Docs theme for Sphinx" -optional = true -python-versions = "*" -files = [ - {file = "sphinx_rtd_theme-0.5.1-py2.py3-none-any.whl", hash = "sha256:fa6bebd5ab9a73da8e102509a86f3fcc36dec04a0b52ea80e5a033b2aba00113"}, - {file = "sphinx_rtd_theme-0.5.1.tar.gz", hash = "sha256:eda689eda0c7301a80cf122dad28b1861e5605cbf455558f3775e1e8200e83a5"}, -] - -[package.dependencies] -sphinx = "*" - -[package.extras] -dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client"] - -[[package]] -name = "sphinxcontrib-applehelp" -version = "1.0.4" -description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -optional = true -python-versions = ">=3.8" -files = [ - {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, - {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-devhelp" -version = "1.0.2" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -optional = true -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-htmlhelp" -version = "2.0.1" -description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -optional = true -python-versions = ">=3.8" -files = [ - {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, - {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["html5lib", "pytest"] - -[[package]] -name = "sphinxcontrib-jsmath" -version = "1.0.1" -description = "A sphinx extension which renders display math in HTML via JavaScript" -optional = true -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] - -[package.extras] -test = ["flake8", "mypy", "pytest"] - -[[package]] -name = "sphinxcontrib-qthelp" -version = "1.0.3" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -optional = true -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-serializinghtml" -version = "1.1.5" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -optional = true -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["pytest"] - -[[package]] -name = "tatsu" -version = "5.6.1" -description = "TatSu takes a grammar in a variation of EBNF as input, and outputs a memoizing PEG/Packrat parser in Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "TatSu-5.6.1-py2.py3-none-any.whl", hash = "sha256:7cf03e15ab170fd91489b855cd8a4942b6cd1ac5e0eabcb852793a716600dbf0"}, - {file = "TatSu-5.6.1.zip", hash = "sha256:6a4f07aa7bfe9dfbee8015824feaf13f0b1a89577e2ee5a4a62c18630c309d4e"}, -] - -[package.extras] -future-regex = ["regex"] - -[[package]] -name = "tatsu" -version = "5.8.3" -description = "TatSu takes a grammar in a variation of EBNF as input, and outputs a memoizing PEG/Packrat parser in Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "TatSu-5.8.3-py2.py3-none-any.whl", hash = "sha256:0a836692e67247cad9f251e083b045b13345cc715e69a7fbc16522beaa0f2163"}, - {file = "TatSu-5.8.3.zip", hash = "sha256:571ecbcdf33b7828c05e5cd95a8e8ad06af111c2c83a6a245be4d8f7c43de7bb"}, -] - -[package.extras] -future-regex = ["regex"] - -[[package]] -name = "urllib3" -version = "2.2.1" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "zipp" -version = "3.18.1" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = true -python-versions = ">=3.8" -files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] - -[extras] -docs = ["sphinx"] - -[metadata] -lock-version = "2.0" -python-versions = "^3.8" -content-hash = "cfe44b8465fad9dbbf17e2b2fec64c09f1457e274915e5d342c398d7adf35946" diff --git a/pyproject.toml b/pyproject.toml index 77f7b565..63f9b800 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,38 +1,46 @@ -[tool.poetry] -name = "sdcclient" -version = "0.0.0" # Updated by poetry-dynamic-versioning +[project] +name = "sysdig-sdk-python" +version = "0.19.1" # Updated by poetry-dynamic-versioning description = "Python client for Sysdig Platform" -authors = ["Sysdig Inc. "] +authors = [ + {name = "Sysdig Inc.", email = "info@sysdig.com"}, +] +readme = "README.md" license = "MIT" +requires-python = ">=3.9" +dependencies = [ + "urllib3 >= 2.1.0, < 3.0.0", + "python-dateutil >= 2.8.2", + "pydantic >= 2", + "typing-extensions >= 4.7.1", + "python_dateutil >= 2.5.3" +] -[tool.poetry.dependencies] -python = "^3.8" -requests = "^2.31" -pyaml = ">=20.4,<22.0" -requests-toolbelt = "^1.0.0" -urllib3 = "^2.2.1" -tatsu = [ - { version = "^4.4.0", python = "<3.8" }, - { version = ">=5.5.0,<5.7.0", python = ">=3.8, <3.10" }, - { version = ">=5.7.0,<5.9.0", python = ">=3.10" } +[dependency-groups] +dev = [ + "pytest >= 7.2.1", + "pytest-cov >= 2.8.1", + "tox >= 3.9.0", + "flake8 >= 4.0.0", + "types-python-dateutil >= 2.8.19.14", + "mypy >= 1.5", + "mamba == 0.11.3", + "expects == 0.9.0", + "PyYAML == 6.0.2", + "requests-toolbelt == 1.0.0", + "TatSu == 5.8.3", + "requests == 2.32.4" ] -sphinx = {version = ">=3.3.1,<6.0.0", optional = true} -sphinx-rtd-theme = { version = ">=0.5,<1.1", optional = true } -[tool.poetry.dev-dependencies] -mamba = "^0.11.1" -doublex = "^1.9.2" -doublex-expects = "^0.7.1" -expects = "^0.9.0" -flake8 = "^3.8.4" -coverage = "^6.2" +[tool.uv] +default-groups = ["dev"] -[tool.poetry.extras] -docs = ["sphinx", "sphinx-material", "sphinx-rtd-theme"] +[build-system] +requires = ["hatchling", "hatch-vcs"] +build-backend = "hatchling.build" -[tool.poetry-dynamic-versioning] -enable = true +[tool.hatch.version] +source = "vcs" # Will get the latest git tag to configure this project's version -[build-system] -requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"] -build-backend = "poetry.core.masonry.api" +[tool.hatch.build.targets.wheel] +packages = ["sysdig_client"] diff --git a/ruff.toml b/ruff.toml new file mode 100644 index 00000000..697b6b90 --- /dev/null +++ b/ruff.toml @@ -0,0 +1,297 @@ +# Exclude a variety of commonly ignored directories. +exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".git-rewrite", + ".hg", + ".ipynb_checkpoints", + ".mypy_cache", + ".nox", + ".pants.d", + ".pyenv", + ".pytest_cache", + ".pytype", + ".ruff_cache", + ".svn", + ".tox", + ".venv", + ".vscode", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "node_modules", + "site-packages", + "venv", +] + +# Same as Black. +line-length = 130 +indent-width = 4 + +# Assume Python 3.12 +target-version = "py312" + +[lint] +# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. +# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or +# McCabe complexity (`C901`) by default. +preview = true +select = [ + "B002", # unary-prefix-increment + "B003", # assignment-to-os-environ + "B004", # unreliable-callable-check + "B013", # redundant-tuple-in-exception-handler + "B014", # duplicate-handler-exception + "B016", # cannot-raise-literal + "B021", # f-string-docstring + "B022", # useless-contextlib-suppress + "B025", # duplicate-try-block-exception + "B028", # no-explicit-stacklevel + "B029", # except-with-empty-tuple + "B030", # except-with-non-exception-classes + "B031", # reuse-of-groupby-generator + + "C406", # unnecessary-literal-dict + "C410", # unnecessary-literal-within-list-call + "C415", # unnecessary-subscript-reversal + + "E101", # mixed-spaces-and-tabs + "E401", # multiple-imports-on-one-line + "E501", # line-too-long + "E701", # multiple-statements-on-one-line-colon + "E702", # multiple-statements-on-one-line-semicolon + "E703", # useless-semicolon + "E711", # none-comparison + "E712", # true-false-comparison + "E721", # type-comparison + "E722", # bare-except + "E731", # lambda-assignment + "E741", # ambiguous-variable-name + "E742", # ambiguous-class-name + "E743", # ambiguous-function-name + "E902", # io-error + + "F402", # import-shadowed-by-loop-var + "F404", # late-future-import + "F406", # undefined-local-with-nested-import-star-usage + "F407", # future-feature-not-defined + "F501", # percent-format-invalid-format + "F502", # percent-format-expected-mapping + "F503", # percent-format-expected-sequence + "F504", # percent-format-extra-named-arguments + "F505", # percent-format-missing-argument + "F506", # percent-format-mixed-positional-and-named + "F507", # percent-format-positional-count-mismatch + "F508", # percent-format-star-requires-sequence + "F509", # percent-format-unsupported-format-character + "F521", # string-dot-format-invalid-format + "F522", # string-dot-format-extra-named-arguments + "F523", # string-dot-format-extra-positional-arguments + "F524", # string-dot-format-missing-arguments + "F525", # string-dot-format-mixing-automatic + "F541", # f-string-missing-placeholders + "F601", # multi-value-repeated-key-literal + "F602", # multi-value-repeated-key-variable + "F621", # expressions-in-star-assignment + "F622", # multiple-starred-expressions + "F631", # assert-tuple + "F632", # is-literal + "F633", # invalid-print-syntax + "F634", # if-tuple + "F701", # break-outside-loop + "F702", # continue-outside-loop + "F704", # yield-outside-function + "F706", # return-outside-function + "F707", # default-except-not-last + "F722", # forward-annotation-syntax-error + "F811", # redefined-while-unused + "F821", # undefined-name + "F822", # undefined-export + "F823", # undefined-local + "F841", # unused-variable + "F842", # unused-annotation + "F901", # raise-not-implemented + + "G010", # logging-warn + "G101", # logging-extra-attr-clash + "G201", # logging-exc-info + "G202", # logging-redundant-exc-info + + "N804", # invalid-first-argument-name-for-class-method + "N807", # dunder-function-name + "N801", + "N802", # Function names should be lowercase + "N803", + "N805", + "N818", + "N999", + + "PD007", # pandas-use-of-dot-ix + "PD008", # pandas-use-of-dot-at + "PD009", # pandas-use-of-dot-iat + "PD010", # pandas-use-of-dot-pivot-or-unstack + "PD012", # pandas-use-of-dot-read-table + "PD013", # pandas-use-of-dot-stack + "PD015", # pandas-use-of-pd-merge + "PIE807", # reimplemented-list-builtin + "PLC3002", # unnecessary-direct-lambda-call + "PLE0100", # yield-in-init + "PLE0101", # return-in-init + "PLE0116", # continue-in-finally + "PLE0117", # nonlocal-without-binding + "PLE0118", # load-before-global-declaration + "PLE0302", # unexpected-special-method-signature + "PLE0604", # invalid-all-object + "PLE0605", # invalid-all-format + "PLE1142", # await-outside-async + "PLE1205", # logging-too-many-args + "PLE1206", # logging-too-few-args + "PLE1307", # bad-string-format-type + "PLE1310", # bad-str-strip-call + "PLE1507", # invalid-envvar-value + "PLE2502", # bidirectional-unicode + "PLE2510", # invalid-character-backspace + "PLE2512", # invalid-character-sub + "PLE2513", # invalid-character-esc + "PLE2514", # invalid-character-nul + "PLE2515", # invalid-character-zero-width-space + "PLR0206", # property-with-parameters + "PLR1722", # sys-exit-alias + "PLW0711", # binary-op-exception + "PLW1508", # invalid-envvar-default + "PT010", # pytest-raises-without-exception + "PT024", # pytest-unnecessary-asyncio-mark-on-fixture + "PT025", # pytest-erroneous-use-fixtures-on-fixture + "PT026", # pytest-use-fixtures-without-parameters + "PTH105", # pathlib-replace + "PTH106", # os-rmdir + "PTH114", # os-path-islink + "PTH115", # os-readlink + "PTH116", # os-stat + "PTH117", # os-path-isabs + "PTH121", # os-path-samefile + "PTH124", # py-path + + "RUF006", # asyncio-dangling-task + "RUF007", # pairwise-over-zipped + "RUF008", # mutable-dataclass-default + "RUF009", # function-call-in-dataclass-default-argument + + "S103", # bad-file-permissions + "S302", # suspicious-marshal-usage + "S306", # suspicious-mktemp-usage + "S307", # suspicious-eval-usage + "S312", # suspicious-telnet-usage + "S313", # suspicious-xmlc-element-tree-usage + "S315", # suspicious-xml-expat-reader-usage + "S316", # suspicious-xml-expat-builder-usage + "S317", # suspicious-xml-sax-usage + "S319", # suspicious-xml-pull-dom-usage + "S321", # suspicious-ftp-lib-usage + "S323", # suspicious-unverified-context-usage + "S506", # unsafe-yaml-load + "S508", # snmp-insecure-version + "S509", # snmp-weak-cryptography + "S602", # subprocess-popen-with-shell-equals-true + "S604", # call-with-shell-equals-true + "S605", # start-process-with-a-shell + "S606", # start-process-with-no-shell + "S612", # logging-config-insecure-listen + "S701", # jinja2-autoescape-false + + "SIM202", # negate-not-equal-op + "SIM208", # double-negation + "SIM220", # expr-and-not-expr + "SIM221", # expr-or-not-expr + "SIM223", # expr-and-false + + "T203", # p-print + + "UP001", # useless-metaclass-type + "UP003", # type-of-primitive + "UP005", # deprecated-unittest-alias + "UP013", # convert-typed-dict-functional-to-class + "UP017", # datetime-timezone-utc + "UP021", # replace-universal-newlines + "UP029", # unnecessary-builtin-import + "UP033", # lru-cache-with-maxsize-none + "UP037", # quoted-annotation + + "W291", # trailing-whitespace + + "YTT101", # sys-version-slice3 + "YTT102", # sys-version2 + "YTT103", # sys-version-cmp-str3 + "YTT201", # sys-version-info0-eq3 + "YTT202", # six-py3 + "YTT203", # sys-version-info1-cmp-int + "YTT204", # sys-version-info-minor-cmp-int + "YTT301", # sys-version0 + "YTT302", # sys-version-cmp-str10 + "YTT303", # sys-version-slice1 + + "TID252", # relative-imports + + # FASTAPI Rules + "FAST001", # FastAPI route with redundant response_model argument + "FAST002", # FastAPI dependency without Annotated + "FAST003", # Parameter {arg_name} appears in route path, but not in {function_name} signature + + # Doc Lint + "DOC201", + "DOC202", + "DOC402", + "DOC403", + "DOC501", + "DOC502" +] + +ignore = [ + "N802", # Function names should be lowercase + "DOC201", # `return` is not documented in docstring + "E501", # Line too long + "N803", # Argument names should be lowercase + "E501", + "F821", + "W605", + "E303", + "E241" +] + +# Allow fix for all enabled rules (when `--fix`) is provided. +fixable = ["ALL"] +unfixable = [] + +# Allow unused variables when underscore-prefixed. +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +[format] +# Like Black, use double quotes for strings. +quote-style = "double" + +# Like Black, indent with spaces, rather than tabs. +indent-style = "space" + +# Like Black, respect magic trailing commas. +skip-magic-trailing-comma = false + +# Like Black, automatically detect the appropriate line ending. +line-ending = "auto" + +# Enable auto-formatting of code examples in docstrings. Markdown, +# reStructuredText code/literal blocks and doctests are all supported. +# +# This is currently disabled by default, but it is planned for this +# to be opt-out in the future. +docstring-code-format = false + +# Set the line length limit used when formatting code snippets in +# docstrings. +# +# This only has an effect when the `docstring-code-format` setting is +# enabled. +docstring-code-line-length = "dynamic" diff --git a/scripts/move_model_docs.sh b/scripts/move_model_docs.sh new file mode 100755 index 00000000..e5b100ec --- /dev/null +++ b/scripts/move_model_docs.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +process_file() { + echo "Processing $1" + if [[ "$1" == *.md ]]; then + # It's a markdown file + if [ -f "$1" ]; then + echo "Moving $1 to docs/reference/" + mv "$1" docs/reference/ + # Update .openapi-generator/FILES to reflect the new location + sed -i '' "s|$1|docs/reference/$(basename "$1")|" .openapi-generator/FILES + fi + fi +} + +# Get doc files +for f in docs/*.md; do + [ -e "$f" ] || continue + process_file "$f" +done diff --git a/sdcclient/__init__.py b/sdcclient/__init__.py index b431fdf1..9cb47551 100644 --- a/sdcclient/__init__.py +++ b/sdcclient/__init__.py @@ -7,5 +7,14 @@ from sdcclient._secure_v1 import SdSecureClientV1 from sdcclient.ibm_auth_helper import IbmAuthHelper -__all__ = ["SdMonitorClient", "SdcClient", "SdMonitorClientV1", "SdScanningClient", "SdSecureClient", - "SdSecureClientV1", "IbmAuthHelper", "monitor", "secure"] +__all__ = [ + "SdMonitorClient", + "SdcClient", + "SdMonitorClientV1", + "SdScanningClient", + "SdSecureClient", + "SdSecureClientV1", + "IbmAuthHelper", + "monitor", + "secure", +] diff --git a/sdcclient/_common.py b/sdcclient/_common.py index 72897411..0243cef9 100644 --- a/sdcclient/_common.py +++ b/sdcclient/_common.py @@ -28,7 +28,7 @@ def send(self, request, **kwargs): class _SdcCommon(object): - '''Interact with the Sysdig Monitor/Secure API. + """Interact with the Sysdig Monitor/Secure API. **Arguments** - **token**: A Sysdig Monitor/Secure API token from the *Sysdig Cloud API* section of the Settings page for `monitor `_ or .`secure `_. @@ -38,19 +38,20 @@ class _SdcCommon(object): **Returns** An object for further interactions with the Sysdig Monitor/Secure API. See methods below. - ''' + """ + lasterr = None - def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://app.sysdigcloud.com", ssl_verify=True, custom_headers=None): self.token = os.environ.get("SDC_TOKEN", token) self.hdrs = self.__get_headers(custom_headers) - self.url = os.environ.get("SDC_URL", sdc_url).rstrip('/') + self.url = os.environ.get("SDC_URL", sdc_url).rstrip("/") self.ssl_verify = os.environ.get("SDC_SSL_VERIFY", None) if self.ssl_verify is None: self.ssl_verify = ssl_verify else: - if self.ssl_verify.lower() in ['true', 'false']: - self.ssl_verify = self.ssl_verify.lower() == 'true' + if self.ssl_verify.lower() in ["true", "false"]: + self.ssl_verify = self.ssl_verify.lower() == "true" adapter = SysdigHTTPAdapter(ssl_verify=self.ssl_verify) self.http = requests.Session() @@ -58,10 +59,7 @@ def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=T self.http.mount("http://", adapter) def __get_headers(self, custom_headers): - headers = { - 'Content-Type': 'application/json', - 'Authorization': 'Bearer ' + self.token - } + headers = {"Content-Type": "application/json", "Authorization": "Bearer " + self.token} if custom_headers: headers.update(custom_headers) return headers @@ -74,31 +72,31 @@ def _checkResponse(self, res): try: j = res.json() except Exception: - self.lasterr = 'status code ' + str(errorcode) + self.lasterr = "status code " + str(errorcode) return False - if 'errors' in j: + if "errors" in j: error_msgs = [] - for error in j['errors']: + for error in j["errors"]: error_msg = [] - if 'message' in error: - error_msg.append(error['message']) + if "message" in error: + error_msg.append(error["message"]) - if 'reason' in error: - error_msg.append(error['reason']) + if "reason" in error: + error_msg.append(error["reason"]) - error_msgs.append(': '.join(error_msg)) + error_msgs.append(": ".join(error_msg)) - self.lasterr = '\n'.join(error_msgs) - elif 'message' in j: - self.lasterr = j['message'] + self.lasterr = "\n".join(error_msgs) + elif "message" in j: + self.lasterr = j["message"] else: - self.lasterr = 'status code ' + str(errorcode) + self.lasterr = "status code " + str(errorcode) return False return True def get_user_info(self): - '''**Description** + """**Description** Get details about the current user. **Success Return Value** @@ -106,52 +104,52 @@ def get_user_info(self): **Example** `examples/print_user_info.py `_ - ''' - res = self.http.get(self.url + '/api/user/me', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/user/me", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_user_token(self): - '''**Description** + """**Description** Return the API token of the current user. **Success Return Value** A string containing the user token. - ''' - res = self.http.get(self.url + '/api/token', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/token", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] tkinfo = res.json() - return [True, tkinfo['token']['key']] + return [True, tkinfo["token"]["key"]] def get_connected_agents(self): - '''**Description** + """**Description** Return the agents currently connected to Sysdig Monitor for the current user. **Success Return Value** A list of the agents with all their attributes. - ''' - res = self.http.get(self.url + '/api/agents/connected', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/agents/connected", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() - return [True, data['agents']] + return [True, data["agents"]] def get_n_connected_agents(self): - '''**Description** + """**Description** Return the number of agents currently connected to Sysdig Monitor for the current user. **Success Return Value** An integer number. - ''' - res = self.http.get(self.url + '/api/agents/connected', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/agents/connected", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() - return [True, data['total']] + return [True, data["total"]] def list_notification_channels(self): - '''**Description** + """**Description** List all configured Notification Channels **Arguments** @@ -159,12 +157,12 @@ def list_notification_channels(self): **Success Return Value** A JSON representation of all the notification channels - ''' - res = self.http.get(self.url + '/api/notificationChannels', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/notificationChannels", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_notification_ids(self, channels=None): - '''**Description** + """**Description** Get an array of all configured Notification Channel IDs, or a filtered subset of them. **Arguments** @@ -176,9 +174,9 @@ def get_notification_ids(self, channels=None): **Examples** - `examples/create_alert.py `_ - `examples/restore_alerts.py `_ - ''' + """ - res = self.http.get(self.url + '/api/notificationChannels', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/notificationChannels", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr @@ -189,7 +187,7 @@ def get_notification_ids(self, channels=None): # just return them all. if channels is None: for ch in res.json()["notificationChannels"]: - ids.append(ch['id']) + ids.append(ch["id"]) return [True, ids] # Return the filtered set of channels based on the provided types/names array. @@ -197,47 +195,47 @@ def get_notification_ids(self, channels=None): for c in channels: found = False for ch in res.json()["notificationChannels"]: - if c['type'] == ch['type']: - if c['type'] == 'SNS': - opt = ch['options'] - if set(opt['snsTopicARNs']) == set(c['snsTopicARNs']): + if c["type"] == ch["type"]: + if c["type"] == "SNS": + opt = ch["options"] + if set(opt["snsTopicARNs"]) == set(c["snsTopicARNs"]): found = True - ids.append(ch['id']) - elif c['type'] == 'EMAIL': - opt = ch['options'] - if 'emailRecipients' in c: - if set(c['emailRecipients']) == set(opt['emailRecipients']): + ids.append(ch["id"]) + elif c["type"] == "EMAIL": + opt = ch["options"] + if "emailRecipients" in c: + if set(c["emailRecipients"]) == set(opt["emailRecipients"]): found = True - ids.append(ch['id']) - elif 'name' in c: - if c['name'] == ch.get('name'): + ids.append(ch["id"]) + elif "name" in c: + if c["name"] == ch.get("name"): found = True - ids.append(ch['id']) - elif c['type'] == 'PAGER_DUTY': - opt = ch['options'] - if opt['account'] == c['account'] and opt['serviceName'] == c['serviceName']: + ids.append(ch["id"]) + elif c["type"] == "PAGER_DUTY": + opt = ch["options"] + if opt["account"] == c["account"] and opt["serviceName"] == c["serviceName"]: found = True - ids.append(ch['id']) - elif c['type'] == 'SLACK': - if 'name' in c: - if c['name'] == ch.get('name'): + ids.append(ch["id"]) + elif c["type"] == "SLACK": + if "name" in c: + if c["name"] == ch.get("name"): found = True - ids.append(ch['id']) - elif c['type'] == 'OPSGENIE': - if 'name' in c: - if c['name'] == ch.get('name'): + ids.append(ch["id"]) + elif c["type"] == "OPSGENIE": + if "name" in c: + if c["name"] == ch.get("name"): found = True - ids.append(ch['id']) - elif c['type'] == 'VICTOROPS': - if 'name' in c: - if c['name'] == ch.get('name'): + ids.append(ch["id"]) + elif c["type"] == "VICTOROPS": + if "name" in c: + if c["name"] == ch.get("name"): found = True - ids.append(ch['id']) - elif c['type'] == 'WEBHOOK': - if 'name' in c: - if c['name'] == ch.get('name'): + ids.append(ch["id"]) + elif c["type"] == "WEBHOOK": + if "name" in c: + if c["name"] == ch.get("name"): found = True - ids.append(ch['id']) + ids.append(ch["id"]) if not found: return False, "Channel not found: " + str(c) @@ -245,18 +243,17 @@ def get_notification_ids(self, channels=None): def create_email_notification_channel(self, channel_name, email_recipients): channel_json = { - 'notificationChannel': { - 'type': 'EMAIL', - 'name': channel_name, - 'enabled': True, - 'options': { - 'emailRecipients': email_recipients - } + "notificationChannel": { + "type": "EMAIL", + "name": channel_name, + "enabled": True, + "options": {"emailRecipients": email_recipients}, } } - res = self.http.post(self.url + '/api/notificationChannels', headers=self.hdrs, data=json.dumps(channel_json), - verify=self.ssl_verify) + res = self.http.post( + self.url + "/api/notificationChannels", headers=self.hdrs, data=json.dumps(channel_json), verify=self.ssl_verify + ) return self._request_result(res) def create_notification_channel(self, channel): @@ -264,43 +261,45 @@ def create_notification_channel(self, channel): channel["version"] = None channel["createdOn"] = None channel["modifiedOn"] = None - channel_json = { - 'notificationChannel': channel - } + channel_json = {"notificationChannel": channel} - res = self.http.post(self.url + '/api/notificationChannels', headers=self.hdrs, data=json.dumps(channel_json), - verify=self.ssl_verify) + res = self.http.post( + self.url + "/api/notificationChannels", headers=self.hdrs, data=json.dumps(channel_json), verify=self.ssl_verify + ) return self._request_result(res) def get_notification_channel(self, id): - - res = self.http.get(self.url + '/api/notificationChannels/' + str(id), headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.get(self.url + "/api/notificationChannels/" + str(id), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr - return True, res.json()['notificationChannel'] + return True, res.json()["notificationChannel"] def update_notification_channel(self, channel): - if 'id' not in channel: + if "id" not in channel: return [False, "Invalid channel format"] - res = self.http.put(self.url + '/api/notificationChannels/' + str(channel['id']), headers=self.hdrs, - data=json.dumps({"notificationChannel": channel}), verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/notificationChannels/" + str(channel["id"]), + headers=self.hdrs, + data=json.dumps({"notificationChannel": channel}), + verify=self.ssl_verify, + ) return self._request_result(res) def delete_notification_channel(self, channel): - if 'id' not in channel: + if "id" not in channel: return [False, "Invalid channel format"] - res = self.http.delete(self.url + '/api/notificationChannels/' + str(channel['id']), headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.delete( + self.url + "/api/notificationChannels/" + str(channel["id"]), headers=self.hdrs, verify=self.ssl_verify + ) if not self._checkResponse(res): return False, self.lasterr return True, None def get_data_retention_info(self): - '''**Description** + """**Description** Return the list of data retention intervals, with beginning and end UTC time for each of them. Sysdig Monitor performs rollups of the data it stores. This means that data is stored at different time granularities depending on how far back in time it is. This call can be used to know what precision you can expect before you make a call to :func:`~SdcClient.get_data`. **Success Return Value** @@ -308,8 +307,8 @@ def get_data_retention_info(self): **Example** `examples/print_data_retention_info.py `_ - ''' - res = self.http.get(self.url + '/api/history/timelines/', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/history/timelines/", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_topology_map(self, grouping_hierarchy, time_window_s, sampling_time_s): @@ -318,29 +317,26 @@ def get_topology_map(self, grouping_hierarchy, time_window_s, sampling_time_s): # tlines = self.get_data_retention_info() - for tline in tlines[1]['agents']: - if tline['sampling'] == sampling_time_s * 1000000: + for tline in tlines[1]["agents"]: + if tline["sampling"] == sampling_time_s * 1000000: timeinfo = tline if timeinfo is None: return [False, "sampling time " + str(sampling_time_s) + " not supported"] - timeinfo['from'] = timeinfo['to'] - timeinfo['sampling'] + timeinfo["from"] = timeinfo["to"] - timeinfo["sampling"] # # Create the grouping hierarchy # - gby = [{'metric': g} for g in grouping_hierarchy] + gby = [{"metric": g} for g in grouping_hierarchy] # # Prepare the json # req_json = { - 'format': { - 'type': 'map', - 'exportProcess': True - }, - 'time': timeinfo, + "format": {"type": "map", "exportProcess": True}, + "time": timeinfo, # 'filter': { # 'filters': [ # { @@ -352,48 +348,22 @@ def get_topology_map(self, grouping_hierarchy, time_window_s, sampling_time_s): # ], # 'logic': 'and' # }, - 'limit': { - 'hostGroups': 20, - 'hosts': 20, - 'containers': 20, - 'processes': 10 - }, - 'group': { - 'configuration': { - 'groups': [ - { - 'filters': [], - 'groupBy': gby - } - ] - } - }, - 'nodeMetrics': [ - { - 'id': 'cpu.used.percent', - 'aggregation': 'timeAvg', - 'groupAggregation': 'avg' - } - ], - 'linkMetrics': [ - { - 'id': 'net.bytes.total', - 'aggregation': 'timeAvg', - 'groupAggregation': 'sum' - } - ] + "limit": {"hostGroups": 20, "hosts": 20, "containers": 20, "processes": 10}, + "group": {"configuration": {"groups": [{"filters": [], "groupBy": gby}]}}, + "nodeMetrics": [{"id": "cpu.used.percent", "aggregation": "timeAvg", "groupAggregation": "avg"}], + "linkMetrics": [{"id": "net.bytes.total", "aggregation": "timeAvg", "groupAggregation": "sum"}], } # # Fire the request # - res = self.http.post(self.url + '/api/data?format=map', headers=self.hdrs, - data=json.dumps(req_json), verify=self.ssl_verify) + res = self.http.post( + self.url + "/api/data?format=map", headers=self.hdrs, data=json.dumps(req_json), verify=self.ssl_verify + ) return self._request_result(res) - def get_data(self, metrics, start_ts, end_ts=0, sampling_s=0, - filter='', datasource_type='host', paging=None): - '''**Description** + def get_data(self, metrics, start_ts, end_ts=0, sampling_s=0, filter="", datasource_type="host", paging=None): + """**Description** Export metric data (both time-series and table-based). **Arguments** @@ -413,35 +383,34 @@ def get_data(self, metrics, start_ts, end_ts=0, sampling_s=0, - `examples/get_data_advanced.py `_ - `examples/list_hosts.py `_ - `examples/get_data_datasource.py `_ - ''' + """ reqbody = { - 'metrics': metrics, - 'dataSourceType': datasource_type, + "metrics": metrics, + "dataSourceType": datasource_type, } if start_ts < 0: - reqbody['last'] = -start_ts + reqbody["last"] = -start_ts elif start_ts == 0: return [False, "start_ts cannot be 0"] else: - reqbody['start'] = start_ts - reqbody['end'] = end_ts + reqbody["start"] = start_ts + reqbody["end"] = end_ts - if filter != '': - reqbody['filter'] = filter + if filter != "": + reqbody["filter"] = filter if paging is not None: - reqbody['paging'] = paging + reqbody["paging"] = paging if sampling_s != 0: - reqbody['sampling'] = sampling_s + reqbody["sampling"] = sampling_s - res = self.http.post(self.url + '/api/data/', headers=self.hdrs, data=json.dumps(reqbody), - verify=self.ssl_verify) + res = self.http.post(self.url + "/api/data/", headers=self.hdrs, data=json.dumps(reqbody), verify=self.ssl_verify) return self._request_result(res) def get_sysdig_captures(self, from_sec=None, to_sec=None, scope_filter=None): - '''**Description** + """**Description** Returns the list of sysdig captures for the user. **Arguments** @@ -454,18 +423,19 @@ def get_sysdig_captures(self, from_sec=None, to_sec=None, scope_filter=None): **Example** `examples/list_sysdig_captures.py `_ - ''' - url = '{url}/api/sysdig?source={source}{frm}{to}{scopeFilter}'.format( + """ + url = "{url}/api/sysdig?source={source}{frm}{to}{scopeFilter}".format( url=self.url, source=self.product, - frm="&from=%d" % (from_sec * 10 ** 6) if from_sec else "", - to="&to=%d" % (to_sec * 10 ** 6) if to_sec else "", - scopeFilter="&scopeFilter=%s" % scope_filter if scope_filter else "") + frm="&from=%d" % (from_sec * 10**6) if from_sec else "", + to="&to=%d" % (to_sec * 10**6) if to_sec else "", + scopeFilter="&scopeFilter=%s" % scope_filter if scope_filter else "", + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def poll_sysdig_capture(self, capture): - '''**Description** + """**Description** Fetch the updated state of a sysdig capture. Can be used to poll the status of a capture that has been previously created and started with :func:`~SdcClient.create_sysdig_capture`. **Arguments** @@ -476,17 +446,16 @@ def poll_sysdig_capture(self, capture): **Example** `examples/create_sysdig_capture.py `_ - ''' - if 'id' not in capture: - return [False, 'Invalid capture format'] + """ + if "id" not in capture: + return [False, "Invalid capture format"] - url = '{url}/api/sysdig/{id}?source={source}'.format( - url=self.url, id=capture['id'], source=self.product) + url = "{url}/api/sysdig/{id}?source={source}".format(url=self.url, id=capture["id"], source=self.product) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) - def create_sysdig_capture(self, hostname, capture_name, duration, capture_filter='', folder='/'): - '''**Description** + def create_sysdig_capture(self, hostname, capture_name, duration, capture_filter="", folder="/"): + """**Description** Create a new sysdig capture. The capture will be immediately started. **Arguments** @@ -501,7 +470,7 @@ def create_sysdig_capture(self, hostname, capture_name, duration, capture_filter **Example** `examples/create_sysdig_capture.py `_ - ''' + """ res = self.get_connected_agents() if not res[0]: return res @@ -509,28 +478,28 @@ def create_sysdig_capture(self, hostname, capture_name, duration, capture_filter capture_agent = None for agent in res[1]: - if hostname == agent.get('hostName'): + if hostname == agent.get("hostName"): capture_agent = agent break if capture_agent is None: - return [False, hostname + ' not found'] + return [False, hostname + " not found"] data = { - 'agent': capture_agent, - 'name': capture_name, - 'duration': duration, - 'folder': folder, - 'filters': capture_filter, - 'bucketName': '', - 'source': self.product + "agent": capture_agent, + "name": capture_name, + "duration": duration, + "folder": folder, + "filters": capture_filter, + "bucketName": "", + "source": self.product, } - res = self.http.post(self.url + '/api/sysdig', headers=self.hdrs, data=json.dumps(data), verify=self.ssl_verify) + res = self.http.post(self.url + "/api/sysdig", headers=self.hdrs, data=json.dumps(data), verify=self.ssl_verify) return self._request_result(res) def download_sysdig_capture(self, capture_id): - '''**Description** + """**Description** Download a sysdig capture by id. **Arguments** @@ -538,9 +507,8 @@ def download_sysdig_capture(self, capture_id): **Success Return Value** The bytes of the scap - ''' - url = '{url}/api/sysdig/{id}/download?_product={product}'.format( - url=self.url, id=capture_id, product=self.product) + """ + url = "{url}/api/sysdig/{id}/download?_product={product}".format(url=self.url, id=capture_id, product=self.product) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr @@ -557,7 +525,7 @@ def delete_sysdig_capture(self, capture_id): Returns: A touple of (bool, error) where the first value is false if there's an error and the second value is the error. """ - res = self.http.delete(f'{self.url}/api/sysdig/{capture_id}', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(f"{self.url}/api/sysdig/{capture_id}", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr @@ -565,7 +533,7 @@ def delete_sysdig_capture(self, capture_id): return True, None def create_user(self, user_email, first_name=None, last_name=None, password=None): - ''' + """ Provisions a new user to use Sysdig without sending an email notification. If password is not set through this request a random one is generated for the user which requires them to reset password on first login. @@ -579,7 +547,7 @@ def create_user(self, user_email, first_name=None, last_name=None, password=None Returns: The provisioned user information. - ''' + """ user_info = { "username": user_email, @@ -589,12 +557,13 @@ def create_user(self, user_email, first_name=None, last_name=None, password=None } user_info = {k: v for k, v in user_info.items() if v} - res = self.http.post(self.url + '/api/user/provisioning/', headers=self.hdrs, data=json.dumps(user_info), - verify=self.ssl_verify) + res = self.http.post( + self.url + "/api/user/provisioning/", headers=self.hdrs, data=json.dumps(user_info), verify=self.ssl_verify + ) return self._request_result(res) def create_user_invite(self, user_email, first_name=None, last_name=None, system_role=None): - '''**Description** + """**Description** Invites a new user to use Sysdig Monitor. This should result in an email notification to the specified address. **Arguments** @@ -610,29 +579,25 @@ def create_user_invite(self, user_email, first_name=None, last_name=None, system - `examples/user_team_mgmt.py `_ - `examples/user_team_mgmt_extended.py `_ - ''' + """ # Look up the list of users to see if this exists, do not create if one exists - res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/users", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() - for user in data['users']: - if user['username'] == user_email: - return [False, 'user ' + user_email + ' already exists'] + for user in data["users"]: + if user["username"] == user_email: + return [False, "user " + user_email + " already exists"] # Create the user - options = {'username': user_email, - 'firstName': first_name, - 'lastName': last_name, - 'systemRole': system_role} + options = {"username": user_email, "firstName": first_name, "lastName": last_name, "systemRole": system_role} user_json = {k: v for k, v in options.items() if v is not None} - res = self.http.post(self.url + '/api/users', headers=self.hdrs, data=json.dumps(user_json), - verify=self.ssl_verify) + res = self.http.post(self.url + "/api/users", headers=self.hdrs, data=json.dumps(user_json), verify=self.ssl_verify) return self._request_result(res) def delete_user(self, user_email): - '''**Description** + """**Description** Deletes a user from Sysdig Monitor. **Arguments** @@ -640,36 +605,36 @@ def delete_user(self, user_email): **Example** `examples/user_team_mgmt.py `_ - ''' + """ ok, res = self.get_user_ids([user_email]) if not ok: return ok, res userid = res[0] - res = self.http.delete(self.url + '/api/users/' + str(userid), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + "/api/users/" + str(userid), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, None] def get_user(self, user_email): - res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/users", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] - for u in res.json()['users']: - if u['username'] == user_email: + for u in res.json()["users"]: + if u["username"] == user_email: return [True, u] - return [False, 'User not found'] + return [False, "User not found"] def get_users(self): - '''**Description** + """**Description** Return a list containing details about all users in the Sysdig Monitor environment. The API token must have Admin rights for this to succeed. **Success Return Value** A list user objects - ''' - res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/users", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] - return [True, res.json()['users']] + return [True, res.json()["users"]] def edit_user(self, user_email, firstName=None, lastName=None, systemRole=None): ok, user = self.get_user(user_email) @@ -677,30 +642,31 @@ def edit_user(self, user_email, firstName=None, lastName=None, systemRole=None): return ok, user reqbody = { - 'systemRole': systemRole if systemRole else user['systemRole'], - 'username': user_email, - 'enabled': user.get('enabled', False), - 'version': user['version'] + "systemRole": systemRole if systemRole else user["systemRole"], + "username": user_email, + "enabled": user.get("enabled", False), + "version": user["version"], } if firstName is None: - reqbody['firstName'] = user['firstName'] if 'firstName' in list(user.keys()) else '' + reqbody["firstName"] = user["firstName"] if "firstName" in list(user.keys()) else "" else: - reqbody['firstName'] = firstName + reqbody["firstName"] = firstName if lastName is None: - reqbody['lastName'] = user['lastName'] if 'lastName' in list(user.keys()) else '' + reqbody["lastName"] = user["lastName"] if "lastName" in list(user.keys()) else "" else: - reqbody['lastName'] = lastName + reqbody["lastName"] = lastName - res = self.http.put(self.url + '/api/users/' + str(user['id']), headers=self.hdrs, data=json.dumps(reqbody), - verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/users/" + str(user["id"]), headers=self.hdrs, data=json.dumps(reqbody), verify=self.ssl_verify + ) if not self._checkResponse(res): return [False, self.lasterr] - return [True, 'Successfully edited user'] + return [True, "Successfully edited user"] - def get_teams(self, team_filter='', product_filter=''): - '''**Description** + def get_teams(self, team_filter="", product_filter=""): + """**Description** Return the set of teams that match the filter specified. The *team_filter* should be a substring of the names of the teams to be returned. **Arguments** @@ -709,22 +675,22 @@ def get_teams(self, team_filter='', product_filter=''): **Success Return Value** The teams that match the filter. - ''' - url = f'{self.url}/api/teams' + """ + url = f"{self.url}/api/teams" if product_filter: - if product_filter not in ['SDC', 'SDS']: + if product_filter not in ["SDC", "SDS"]: return [False, 'invalid product header, allowed only "SDC" or "SDS"'] - url = f'{url}?product={product_filter}' + url = f"{url}?product={product_filter}" res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] - ret = [t for t in res.json()['teams'] if team_filter in t['name']] + ret = [t for t in res.json()["teams"] if team_filter in t["name"]] return [True, ret] def get_team_by_id(self, id): - '''**Description** + """**Description** Return the team with the specified team ID, if it is present. **Arguments** @@ -735,15 +701,15 @@ def get_team_by_id(self, id): **Example** `examples/user_team_mgmt.py `_ - ''' - res = self.http.get(self.url + '/api/teams/' + str(id), headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/teams/" + str(id), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] - return [True, res.json()['team']] + return [True, res.json()["team"]] def get_team(self, name): - '''**Description** + """**Description** Return the team with the specified team name, if it is present. **Arguments** @@ -754,14 +720,14 @@ def get_team(self, name): **Example** `examples/user_team_mgmt.py `_ - ''' - res = self.http.get(self.url + '/api/v2/teams/light/name/' + str(name), headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/v2/teams/light/name/" + str(name), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] - light_team = res.json()['team'] + light_team = res.json()["team"] - ok, team_with_memberships = self.get_team_by_id(light_team['id']) + ok, team_with_memberships = self.get_team_by_id(light_team["id"]) if not ok: return [False, self.lasterr] @@ -769,25 +735,25 @@ def get_team(self, name): return [True, team_with_memberships] def get_team_ids(self, teams): - res = self.http.get(self.url + '/api/teams', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/teams", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] - u = [x for x in res.json()['teams'] if x['name'] in teams] - return [True, [x['id'] for x in u]] + u = [x for x in res.json()["teams"] if x["name"] in teams] + return [True, [x["id"] for x in u]] def _get_user_id_dict(self, users): - res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/users", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] - u = [x for x in res.json()['users'] if x['username'] in users] - return [True, dict((user['username'], user['id']) for user in u)] + u = [x for x in res.json()["users"] if x["username"] in users] + return [True, dict((user["username"], user["id"]) for user in u)] def _get_id_user_dict(self, user_ids): - res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/users", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] - u = [x for x in res.json()['users'] if x['id'] in user_ids] - return [True, dict((user['id'], user['username']) for user in u)] + u = [x for x in res.json()["users"] if x["id"] in user_ids] + return [True, dict((user["id"], user["username"]) for user in u)] def get_user_ids(self, users): ok, res = self._get_user_id_dict(users) @@ -796,9 +762,20 @@ def get_user_ids(self, users): else: return [True, list(res.values())] - def create_team(self, name, memberships=None, filter='', description='', show='host', theme='#7BB0B2', - perm_capture=False, perm_custom_events=False, perm_aws_data=False, perm_rapid_response=False): - ''' + def create_team( + self, + name, + memberships=None, + filter="", + description="", + show="host", + theme="#7BB0B2", + perm_capture=False, + perm_custom_events=False, + perm_aws_data=False, + perm_rapid_response=False, + ): + """ **Description** Creates a new team @@ -819,43 +796,47 @@ def create_team(self, name, memberships=None, filter='', description='', show='h **Example** `examples/user_team_mgmt.py `_ - ''' + """ reqbody = { - 'name': name, - 'description': description, - 'theme': theme, - 'show': show, - 'canUseSysdigCapture': perm_capture, - 'canUseCustomEvents': perm_custom_events, - 'canUseAwsMetrics': perm_aws_data, - 'canUseRapidResponse': perm_rapid_response, + "name": name, + "description": description, + "theme": theme, + "show": show, + "canUseSysdigCapture": perm_capture, + "canUseCustomEvents": perm_custom_events, + "canUseAwsMetrics": perm_aws_data, + "canUseRapidResponse": perm_rapid_response, } # Map user-names to IDs if memberships: ok, res = self._get_user_id_dict(list(memberships.keys())) if not ok: - return [False, 'Could not fetch IDs for user names'] - reqbody['userRoles'] = [ - { - 'userId': user_id, - 'role': memberships[user_name] - } - for (user_name, user_id) in res.items() - ] + return [False, "Could not fetch IDs for user names"] + reqbody["userRoles"] = [{"userId": user_id, "role": memberships[user_name]} for (user_name, user_id) in res.items()] else: - reqbody['users'] = [] + reqbody["users"] = [] - if filter != '': - reqbody['filter'] = filter + if filter != "": + reqbody["filter"] = filter - res = self.http.post(self.url + '/api/teams', headers=self.hdrs, data=json.dumps(reqbody), - verify=self.ssl_verify) + res = self.http.post(self.url + "/api/teams", headers=self.hdrs, data=json.dumps(reqbody), verify=self.ssl_verify) return self._request_result(res) - def edit_team(self, name, memberships=None, filter=None, description=None, show=None, theme=None, - perm_capture=None, perm_custom_events=None, perm_aws_data=None, perm_rapid_response=False): - ''' + def edit_team( + self, + name, + memberships=None, + filter=None, + description=None, + show=None, + theme=None, + perm_capture=None, + perm_custom_events=None, + perm_aws_data=None, + perm_rapid_response=False, + ): + """ **Description** Edits an existing team. All arguments are optional. Team settings for any arguments unspecified will remain at their current settings. @@ -876,60 +857,55 @@ def edit_team(self, name, memberships=None, filter=None, description=None, show= **Example** `examples/user_team_mgmt.py `_ - ''' + """ ok, team = self.get_team(name) if not ok: return ok, team reqbody = { - 'name': name, - 'theme': theme if theme else team['theme'], - 'show': show if show else team['show'], - 'canUseSysdigCapture': perm_capture if perm_capture else team['canUseSysdigCapture'], - 'canUseCustomEvents': perm_custom_events if perm_custom_events else team['canUseCustomEvents'], - 'canUseAwsMetrics': perm_aws_data if perm_aws_data else team['canUseAwsMetrics'], - 'canUseRapidResponse': perm_rapid_response, - 'defaultTeamRole': team['defaultTeamRole'], - 'entryPoint': team['entryPoint'], - 'id': team['id'], - 'version': team['version'] + "name": name, + "theme": theme if theme else team["theme"], + "show": show if show else team["show"], + "canUseSysdigCapture": perm_capture if perm_capture else team["canUseSysdigCapture"], + "canUseCustomEvents": perm_custom_events if perm_custom_events else team["canUseCustomEvents"], + "canUseAwsMetrics": perm_aws_data if perm_aws_data else team["canUseAwsMetrics"], + "canUseRapidResponse": perm_rapid_response, + "defaultTeamRole": team["defaultTeamRole"], + "entryPoint": team["entryPoint"], + "id": team["id"], + "version": team["version"], } # Handling team description if description is not None: - reqbody['description'] = description - elif 'description' in list(team.keys()): - reqbody['description'] = team['description'] + reqbody["description"] = description + elif "description" in list(team.keys()): + reqbody["description"] = team["description"] # Handling for users to map (user-name, team-role) pairs to memberships if memberships is not None: ok, res = self._get_user_id_dict(list(memberships.keys())) if not res: - return [False, 'Could not convert user names to IDs'] - reqbody['userRoles'] = [ - { - 'userId': user_id, - 'role': memberships[user_name] - } - for (user_name, user_id) in res.items() - ] - elif 'userRoles' in list(team.keys()): - reqbody['userRoles'] = team['userRoles'] + return [False, "Could not convert user names to IDs"] + reqbody["userRoles"] = [{"userId": user_id, "role": memberships[user_name]} for (user_name, user_id) in res.items()] + elif "userRoles" in list(team.keys()): + reqbody["userRoles"] = team["userRoles"] else: - reqbody['userRoles'] = [] + reqbody["userRoles"] = [] # Special handling for filters since we don't support blank filters if filter is not None: - reqbody['filter'] = filter - elif 'filter' in list(team.keys()): - reqbody['filter'] = team['filter'] + reqbody["filter"] = filter + elif "filter" in list(team.keys()): + reqbody["filter"] = team["filter"] - res = self.http.put(self.url + '/api/teams/' + str(team['id']), headers=self.hdrs, data=json.dumps(reqbody), - verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/teams/" + str(team["id"]), headers=self.hdrs, data=json.dumps(reqbody), verify=self.ssl_verify + ) return self._request_result(res) def delete_team(self, name): - '''**Description** + """**Description** Deletes a team from Sysdig Monitor. **Arguments** @@ -937,18 +913,18 @@ def delete_team(self, name): **Example** `examples/user_team_mgmt.py `_ - ''' + """ ok, team = self.get_team(name) if not ok: return ok, team - res = self.http.delete(self.url + '/api/teams/' + str(team['id']), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + "/api/teams/" + str(team["id"]), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, None] def list_memberships(self, team): - ''' + """ **Description** List all memberships for specified team. @@ -960,22 +936,22 @@ def list_memberships(self, team): **Example** `examples/user_team_mgmt_extended.py `_ - ''' + """ ok, res = self.get_team(team) if not ok: return ok, res - raw_memberships = res['userRoles'] - user_ids = [m['userId'] for m in raw_memberships] + raw_memberships = res["userRoles"] + user_ids = [m["userId"] for m in raw_memberships] ok, res = self._get_id_user_dict(user_ids) if not ok: - return [False, 'Could not fetch IDs for user names'] + return [False, "Could not fetch IDs for user names"] else: - return [True, dict([(res[m['userId']], m['role']) for m in raw_memberships])] + return [True, dict([(res[m["userId"]], m["role"]) for m in raw_memberships])] def save_memberships(self, team, memberships): - ''' + """ **Description** Create new user team memberships or update existing ones. @@ -985,7 +961,7 @@ def save_memberships(self, team, memberships): **Example** `examples/user_team_mgmt_extended.py `_ - ''' + """ res = self.list_memberships(team) @@ -1003,7 +979,7 @@ def save_memberships(self, team, memberships): return [True, None] def remove_memberships(self, team, users): - ''' + """ **Description** Remove user memberships from specified team. @@ -1013,7 +989,7 @@ def remove_memberships(self, team, users): **Example** `examples/user_team_mgmt_extended.py `_ - ''' + """ res = self.list_memberships(team) @@ -1031,7 +1007,7 @@ def remove_memberships(self, team, users): return [True, None] def list_access_keys(self): - ''' + """ **Description** List all the access keys enabled and disabled for this instance of Sysdig Monitor/Secure @@ -1040,50 +1016,45 @@ def list_access_keys(self): **Example** `examples/list_access_keys.py `_ - ''' - res = self.http.get(self.url + '/api/customer/accessKeys', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/customer/accessKeys", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def create_access_key(self, agent_limit=None, agent_reserved=None, team_id=None): - ''' + """ **Description** Create a new access key for Sysdig Monitor/Secure **Reslut** The access keys object - ''' - access_key_payload = { - "customerAccessKey": { - "limit": agent_limit, - "reservation": agent_reserved, - "teamId": team_id - } - } + """ + access_key_payload = {"customerAccessKey": {"limit": agent_limit, "reservation": agent_reserved, "teamId": team_id}} - res = self.http.post(self.url + '/api/customer/accessKeys', headers=self.hdrs, verify=self.ssl_verify, data=json.dumps(access_key_payload)) + res = self.http.post( + self.url + "/api/customer/accessKeys", headers=self.hdrs, verify=self.ssl_verify, data=json.dumps(access_key_payload) + ) return self._request_result(res) def update_access_key(self, access_key, agent_limit=None, agent_reserved=None, team_id=None): - ''' + """ **Description** Create a new access key for Sysdig Monitor/Secure **Reslut** The access keys object - ''' - access_key_payload = { - "customerAccessKey": { - "limit": agent_limit, - "reservation": agent_reserved, - "teamId": team_id - } - } + """ + access_key_payload = {"customerAccessKey": {"limit": agent_limit, "reservation": agent_reserved, "teamId": team_id}} - res = self.http.put(self.url + '/api/customer/accessKeys/' + access_key, headers=self.hdrs, verify=self.ssl_verify, data=json.dumps(access_key_payload)) + res = self.http.put( + self.url + "/api/customer/accessKeys/" + access_key, + headers=self.hdrs, + verify=self.ssl_verify, + data=json.dumps(access_key_payload), + ) return self._request_result(res) def disable_access_key(self, access_key): - ''' + """ **Description** Disable an existing access key @@ -1092,13 +1063,14 @@ def disable_access_key(self, access_key): **Reslut** The access keys object - ''' - res = self.http.post(self.url + '/api/customer/accessKeys/' + access_key + "/disable/", headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.post( + self.url + "/api/customer/accessKeys/" + access_key + "/disable/", headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def enable_access_key(self, access_key): - ''' + """ **Description** Enable an existing access key @@ -1107,25 +1079,25 @@ def enable_access_key(self, access_key): **Reslut** The access keys object - ''' - res = self.http.post(self.url + '/api/customer/accessKeys/' + access_key + "/enable/", headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.post( + self.url + "/api/customer/accessKeys/" + access_key + "/enable/", headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def get_agents_config(self): - res = self.http.get(self.url + '/api/agents/config', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/agents/config", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() return [True, data] def set_agents_config(self, config): - res = self.http.put(self.url + '/api/agents/config', headers=self.hdrs, data=json.dumps(config), - verify=self.ssl_verify) + res = self.http.put(self.url + "/api/agents/config", headers=self.hdrs, data=json.dumps(config), verify=self.ssl_verify) return self._request_result(res) def clear_agents_config(self): - data = {'files': []} + data = {"files": []} return self.set_agents_config(data) def get_user_api_token(self, username, teamname): @@ -1133,12 +1105,11 @@ def get_user_api_token(self, username, teamname): if not ok: return ok, team - res = self.http.get(self.url + '/api/token/%s/%d' % (username, team['id']), headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.get(self.url + "/api/token/%s/%d" % (username, team["id"]), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() - return [True, data['token']['key']] + return [True, data["token"]["key"]] def _request_result(self, res): if not self._checkResponse(res): diff --git a/sdcclient/_monitor.py b/sdcclient/_monitor.py index d8d6d6f8..11d8ff7d 100644 --- a/sdcclient/_monitor.py +++ b/sdcclient/_monitor.py @@ -1,4 +1,5 @@ import json +import re from typing import Any, Tuple, Union from sdcclient._common import _SdcCommon @@ -6,13 +7,12 @@ class SdMonitorClient(DashboardsClientV3, EventsClientV2, _SdcCommon): - - def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://app.sysdigcloud.com", ssl_verify=True, custom_headers=None): super(SdMonitorClient, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDC" def get_alerts(self) -> Union[Tuple[bool, str], Tuple[bool, Any]]: - ''' + """ Retrieve the list of alerts configured by the user. Returns: @@ -24,12 +24,12 @@ def get_alerts(self) -> Union[Tuple[bool, str], Tuple[bool, Any]]: >>> ok, res = client.get_alerts() >>> for alert in res['alerts']: >>> print(f'enabled: {str(alert["enabled"])}, name: {alert["name"]}' ) - ''' - res = self.http.get(self.url + '/api/alerts', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/alerts", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_notifications(self, from_ts, to_ts, state=None, resolved=None) -> Union[Tuple[bool, str], Tuple[bool, Any]]: - ''' + """ Returns the list of Sysdig Monitor alert notifications. Args: @@ -52,28 +52,28 @@ def get_notifications(self, from_ts, to_ts, state=None, resolved=None) -> Union[ >>> ok, res = client.get_notifications(from_ts=int(time.time() - 86400), to_ts=int(time.time()), state='OK') >>> # Get the notifications in the last day and resolved state >>> ok, res = client.get_notifications(from_ts=int(time.time() - 86400), to_ts=int(time.time()), resolved=True) - ''' + """ params = {} if from_ts is not None: - params['from'] = from_ts * 1000000 + params["from"] = from_ts * 1000000 if to_ts is not None: - params['to'] = to_ts * 1000000 + params["to"] = to_ts * 1000000 if state is not None: - params['state'] = state + params["state"] = state if resolved is not None: - params['resolved'] = resolved + params["resolved"] = resolved - res = self.http.get(self.url + '/api/notifications', headers=self.hdrs, params=params, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/notifications", headers=self.hdrs, params=params, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr return True, res.json() def update_notification_resolution(self, notification, resolved) -> Union[Tuple[bool, str], Tuple[bool, Any]]: - ''' + """ Updates the resolution status of an alert notification. Args: @@ -91,21 +91,38 @@ def update_notification_resolution(self, notification, resolved) -> Union[Tuple[ >>> # Resolve all of them >>> for notification in notifications: >>> ok, res = sdclient.update_notification_resolution(notification, True) - ''' - if 'id' not in notification: - return False, 'Invalid notification format' - - notification['resolved'] = resolved - data = {'notification': notification} - - res = self.http.put(self.url + '/api/notifications/' + str(notification['id']), headers=self.hdrs, - data=json.dumps(data), verify=self.ssl_verify) + """ + if "id" not in notification: + return False, "Invalid notification format" + + notification["resolved"] = resolved + data = {"notification": notification} + + res = self.http.put( + self.url + "/api/notifications/" + str(notification["id"]), + headers=self.hdrs, + data=json.dumps(data), + verify=self.ssl_verify, + ) return self._request_result(res) - def create_alert(self, name=None, description=None, severity=None, for_atleast_s=None, condition=None, - segmentby=None, segment_condition='ANY', user_filter='', notify=None, enabled=True, - annotations=None, alert_obj=None, type="MANUAL") -> Union[Tuple[bool, str], Tuple[bool, Any]]: - ''' + def create_alert( + self, + name=None, + description=None, + severity=None, + for_atleast_s=None, + condition=None, + segmentby=None, + segment_condition="ANY", + user_filter="", + notify=None, + enabled=True, + annotations=None, + alert_obj=None, + type="MANUAL", + ) -> Union[Tuple[bool, str], Tuple[bool, Any]]: + """ Create a threshold-based alert. Args: @@ -127,7 +144,7 @@ def create_alert(self, name=None, description=None, severity=None, for_atleast_s A tuple where the first parameter indicates if the call was successful, and the second parameter holds either the error as string, or the response object. - ''' + """ if annotations is None: annotations = {} @@ -138,59 +155,58 @@ def create_alert(self, name=None, description=None, severity=None, for_atleast_s # # Get the list of alerts from the server # - res = self.http.get(self.url + '/api/alerts', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/alerts", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr res.json() if alert_obj is None: if None in (name, description, severity, for_atleast_s, condition): - return False, 'Must specify a full Alert object or all parameters: ' \ - 'name, description, severity, for_atleast_s, condition' + return ( + False, + "Must specify a full Alert object or all parameters: name, description, severity, for_atleast_s, condition", + ) else: # # Populate the alert information # alert_json = { - 'alert': { - 'type': type, - 'name': name, - 'description': description, - 'enabled': enabled, - 'severity': severity, - 'timespan': for_atleast_s * 1000000, - 'condition': condition, - 'filter': user_filter + "alert": { + "type": type, + "name": name, + "description": description, + "enabled": enabled, + "severity": severity, + "timespan": for_atleast_s * 1000000, + "condition": condition, + "filter": user_filter, } } if segmentby: - alert_json['alert']['segmentBy'] = segmentby - alert_json['alert']['segmentCondition'] = {'type': segment_condition} + alert_json["alert"]["segmentBy"] = segmentby + alert_json["alert"]["segmentCondition"] = {"type": segment_condition} if annotations: - alert_json['alert']['annotations'] = annotations + alert_json["alert"]["annotations"] = annotations if notify is not None: - alert_json['alert']['notificationChannelIds'] = notify + alert_json["alert"]["notificationChannelIds"] = notify else: # The REST API enforces "Alert ID and version must be null", so remove them if present, # since these would have been there in a dump from the list_alerts.py example. - alert_obj.pop('id', None) - alert_obj.pop('version', None) - alert_json = { - 'alert': alert_obj - } + alert_obj.pop("id", None) + alert_obj.pop("version", None) + alert_json = {"alert": alert_obj} # # Create the new alert # - res = self.http.post(self.url + '/api/alerts', headers=self.hdrs, data=json.dumps(alert_json), - verify=self.ssl_verify) + res = self.http.post(self.url + "/api/alerts", headers=self.hdrs, data=json.dumps(alert_json), verify=self.ssl_verify) return self._request_result(res) def update_alert(self, alert) -> Union[Tuple[bool, str], Tuple[bool, Any]]: - ''' + """ Update a modified threshold-based alert. Args: @@ -208,17 +224,21 @@ def update_alert(self, alert) -> Union[Tuple[bool, str], Tuple[bool, Any]]: >>> if alert['name'] == alert_name: >>> alert['timespan'] = alert['timespan'] * 2 # Note: Expressed in seconds * 1000000 >>> ok, res_update = client.update_alert(alert) - ''' + """ - if 'id' not in alert: + if "id" not in alert: return False, "Invalid alert format" - res = self.http.put(self.url + '/api/alerts/' + str(alert['id']), headers=self.hdrs, - data=json.dumps({"alert": alert}), verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/alerts/" + str(alert["id"]), + headers=self.hdrs, + data=json.dumps({"alert": alert}), + verify=self.ssl_verify, + ) return self._request_result(res) def delete_alert(self, alert) -> Union[Tuple[bool, str], Tuple[bool, Any]]: - '''**Description** + """**Description** Deletes an alert. **Arguments** @@ -229,18 +249,18 @@ def delete_alert(self, alert) -> Union[Tuple[bool, str], Tuple[bool, Any]]: **Example** `examples/delete_alert.py `_ - ''' - if 'id' not in alert: - return False, 'Invalid alert format' + """ + if "id" not in alert: + return False, "Invalid alert format" - res = self.http.delete(self.url + '/api/alerts/' + str(alert['id']), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + "/api/alerts/" + str(alert["id"]), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr return True, None def get_explore_grouping_hierarchy(self) -> Union[Tuple[bool, str], Tuple[bool, Any]]: - '''**Description** + """**Description** Return the user's current grouping hierarchy as visible in the Explore tab of Sysdig Monitor. **Success Return Value** @@ -248,54 +268,52 @@ def get_explore_grouping_hierarchy(self) -> Union[Tuple[bool, str], Tuple[bool, **Example** `examples/print_explore_grouping.py `_ - ''' - res = self.http.get(self.url + '/api/groupConfigurations', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/groupConfigurations", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr data = res.json() - if 'groupConfigurations' not in data: - return False, 'corrupted groupConfigurations API response' + if "groupConfigurations" not in data: + return False, "corrupted groupConfigurations API response" - gconfs = data['groupConfigurations'] + gconfs = data["groupConfigurations"] for gconf in gconfs: - if gconf['id'] == 'explore': + if gconf["id"] == "explore": res = [] - items = gconf['groups'][0]['groupBy'] + items = gconf["groups"][0]["groupBy"] for item in items: - res.append(item['metric']) + res.append(item["metric"]) return True, res return False, 'corrupted groupConfigurations API response, missing "explore" entry' def set_explore_grouping_hierarchy(self, new_hierarchy) -> Union[Tuple[bool, str], Tuple[bool, Any]]: - '''**Description** + """**Description** Changes the grouping hierarchy in the Explore panel of the current user. **Arguments** - **new_hierarchy**: a list of sysdig segmentation metrics indicating the new grouping hierarchy. - ''' - body = { - 'id': 'explore', - 'groups': [{'groupBy': []}] - } + """ + body = {"id": "explore", "groups": [{"groupBy": []}]} for item in new_hierarchy: - body['groups'][0]['groupBy'].append({'metric': item}) + body["groups"][0]["groupBy"].append({"metric": item}) - res = self.http.put(self.url + '/api/groupConfigurations/explore', headers=self.hdrs, - data=json.dumps(body), verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/groupConfigurations/explore", headers=self.hdrs, data=json.dumps(body), verify=self.ssl_verify + ) if not self._checkResponse(res): return False, self.lasterr else: return True, None def get_metrics(self) -> Union[Tuple[bool, str], Tuple[bool, Any]]: - '''**Description** + """**Description** Return the metric list that can be used for data requests/alerts/dashboards. **Success Return Value** @@ -303,15 +321,15 @@ def get_metrics(self) -> Union[Tuple[bool, str], Tuple[bool, Any]]: **Example** `examples/list_metrics.py `_ - ''' - res = self.http.get(self.url + '/api/data/metrics', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/data/metrics", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @staticmethod def convert_scope_string_to_expression(scope) -> Union[Tuple[bool, str], Tuple[bool, Any]]: - '''**Description** - Internal function to convert a filter string to a filter object to be used with dashboards. - ''' + """**Description** + Internal function to convert a filter string to a filter object to be used with dashboards. + """ # # NOTE: The supported grammar is not perfectly aligned with the grammar supported by the Sysdig backend. # Proper grammar implementation will happen soon. @@ -322,47 +340,44 @@ def convert_scope_string_to_expression(scope) -> Union[Tuple[bool, str], Tuple[b return True, [] expressions = [] - string_expressions = scope.strip(' \t\n\r').split(' and ') + string_expressions = scope.strip(" \t\n\r").split(" and ") expression_re = re.compile( - '^(?Pnot )?(?P[^ ]+) (?P=|!=|in|contains|starts with) (?P(:?"[^"]+"|\'[^\']+\'|(.+)|.+))$') + "^(?Pnot )?(?P[^ ]+) (?P=|!=|in|contains|starts with) (?P(:?\"[^\"]+\"|'[^']+'|(.+)|.+))$" + ) for string_expression in string_expressions: matches = expression_re.match(string_expression) if matches is None: - return False, 'invalid scope format' + return False, "invalid scope format" - is_not_operator = matches.group('not') is not None + is_not_operator = matches.group("not") is not None - if matches.group('operator') == 'in': - list_value = matches.group('value').strip(' ()') - value_matches = re.findall('(:?\'[^\',]+\')|(:?"[^",]+")|(:?[,]+)', list_value) + if matches.group("operator") == "in": + list_value = matches.group("value").strip(" ()") + value_matches = re.findall("(:?'[^',]+')|(:?\"[^\",]+\")|(:?[,]+)", list_value) if len(value_matches) == 0: - return False, 'invalid scope value list format' + return False, "invalid scope value list format" value_matches = map(lambda v: v[0] if v[0] else v[1], value_matches) - values = map(lambda v: v.strip(' "\''), value_matches) + values = map(lambda v: v.strip(" \"'"), value_matches) else: - values = [matches.group('value').strip('"\'')] + values = [matches.group("value").strip("\"'")] operator_parse_dict = { - 'in': 'in' if not is_not_operator else 'notIn', - '=': 'equals' if not is_not_operator else 'notEquals', - '!=': 'notEquals' if not is_not_operator else 'equals', - 'contains': 'contains' if not is_not_operator else 'notContains', - 'starts with': 'startsWith' + "in": "in" if not is_not_operator else "notIn", + "=": "equals" if not is_not_operator else "notEquals", + "!=": "notEquals" if not is_not_operator else "equals", + "contains": "contains" if not is_not_operator else "notContains", + "starts with": "startsWith", } - operator = operator_parse_dict.get(matches.group('operator'), None) + operator = operator_parse_dict.get(matches.group("operator"), None) if operator is None: - return False, 'invalid scope operator' + return False, "invalid scope operator" - expressions.append({ - 'operand': matches.group('operand'), - 'operator': operator, - 'value': values - }) + expressions.append({"operand": matches.group("operand"), "operator": operator, "value": values}) return True, expressions diff --git a/sdcclient/_monitor_v1.py b/sdcclient/_monitor_v1.py index a9d3387f..0fd47c3a 100644 --- a/sdcclient/_monitor_v1.py +++ b/sdcclient/_monitor_v1.py @@ -10,78 +10,88 @@ class SdMonitorClientV1(SdMonitorClient): - '''**Description** - Handles dashboards version 1 (ie. up to February 2019). For later Sysdig Monitor versions, please use :class:`~SdMonitorClient` instead. - ''' + """**Description** + Handles dashboards version 1 (ie. up to February 2019). For later Sysdig Monitor versions, please use :class:`~SdMonitorClient` instead. + """ - def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=True): + def __init__(self, token="", sdc_url="https://app.sysdigcloud.com", ssl_verify=True): super(SdMonitorClientV1, self).__init__(token, sdc_url, ssl_verify) - self._dashboards_api_version = 'v1' - self._dashboards_api_endpoint = '/ui/dashboards' - self._default_dashboards_api_endpoint = '/api/defaultDashboards' + self._dashboards_api_version = "v1" + self._dashboards_api_endpoint = "/ui/dashboards" + self._default_dashboards_api_endpoint = "/api/defaultDashboards" - def create_dashboard_from_template(self, dashboard_name, template, scope, shared=False, public=False, - annotations={}): + def create_dashboard_from_template(self, dashboard_name, template, scope, shared=False, public=False, annotations={}): if scope is not None: if not isinstance(scope, basestring): - return [False, 'Invalid scope format: Expected a string'] + return [False, "Invalid scope format: Expected a string"] # # Clean up the dashboard we retireved so it's ready to be pushed # - template['id'] = None - template['version'] = None - template['schema'] = 1 - template['name'] = dashboard_name - template['isShared'] = shared - template['isPublic'] = public - template['publicToken'] = None + template["id"] = None + template["version"] = None + template["schema"] = 1 + template["name"] = dashboard_name + template["isShared"] = shared + template["isPublic"] = public + template["publicToken"] = None # set dashboard scope to the specific parameter ok, scope_expression = self.convert_scope_string_to_expression(scope) if not ok: return ok, scope_expression - template['filterExpression'] = scope - template['scopeExpressionList'] = map( - lambda ex: {'operand': ex['operand'], 'operator': ex['operator'], 'value': ex['value'], 'displayName': '', - 'isVariable': False}, scope_expression) - - if 'widgets' in template and template['widgets'] is not None: + template["filterExpression"] = scope + template["scopeExpressionList"] = map( + lambda ex: { + "operand": ex["operand"], + "operator": ex["operator"], + "value": ex["value"], + "displayName": "", + "isVariable": False, + }, + scope_expression, + ) + + if "widgets" in template and template["widgets"] is not None: # Default dashboards (aka Explore views) specify panels with the property `widgets`, # while custom dashboards use `items` - template['items'] = list(template['widgets']) - del template['widgets'] + template["items"] = list(template["widgets"]) + del template["widgets"] # NOTE: Individual panels might override the dashboard scope, the override will NOT be reset - if 'items' in template and template['items'] is not None: - for chart in template['items']: - if 'overrideFilter' not in chart: - chart['overrideFilter'] = False + if "items" in template and template["items"] is not None: + for chart in template["items"]: + if "overrideFilter" not in chart: + chart["overrideFilter"] = False - if not chart['overrideFilter']: + if not chart["overrideFilter"]: # patch frontend bug to hide scope override warning even when it's not really overridden - chart['scope'] = scope + chart["scope"] = scope # if chart scope is equal to dashboard scope, set it as non override - chart_scope = chart['scope'] if 'scope' in chart else None - chart['overrideFilter'] = chart_scope != scope + chart_scope = chart["scope"] if "scope" in chart else None + chart["overrideFilter"] = chart_scope != scope - if 'annotations' in template: - template['annotations'].update(annotations) + if "annotations" in template: + template["annotations"].update(annotations) else: - template['annotations'] = annotations + template["annotations"] = annotations - template['annotations']['createdByEngine'] = True + template["annotations"]["createdByEngine"] = True # # Create the new dashboard # - res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, - data=json.dumps({'dashboard': template}), verify=self.ssl_verify) + res = self.http.post( + self.url + self._dashboards_api_endpoint, + headers=self.hdrs, + data=json.dumps({"dashboard": template}), + verify=self.ssl_verify, + ) return self._request_result(res) def create_dashboard(self, name): - ''' + """ **Description** Creates an empty dashboard. You can then add panels by using ``add_dashboard_panel``. @@ -93,23 +103,21 @@ def create_dashboard(self, name): **Example** `examples/dashboard.py `_ - ''' - dashboard_configuration = { - 'name': name, - 'schema': 2, - 'items': [] - } + """ + dashboard_configuration = {"name": name, "schema": 2, "items": []} # # Create the new dashboard # - res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, - data=json.dumps({'dashboard': dashboard_configuration}), - verify=self.ssl_verify) + res = self.http.post( + self.url + self._dashboards_api_endpoint, + headers=self.hdrs, + data=json.dumps({"dashboard": dashboard_configuration}), + verify=self.ssl_verify, + ) return self._request_result(res) - def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, sort_by=None, limit=None, - layout=None): + def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, sort_by=None, limit=None, layout=None): """**Description** Adds a panel to the dashboard. A panel can be a time series, or a top chart (i.e. bar chart), or a number panel. @@ -133,19 +141,14 @@ def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, `examples/dashboard.py `_ """ panel_configuration = { - 'name': name, - 'showAs': None, - 'showAsType': None, - 'metrics': [], - 'gridConfiguration': { - 'col': 1, - 'row': 1, - 'size_x': 12, - 'size_y': 6 - } + "name": name, + "showAs": None, + "showAsType": None, + "metrics": [], + "gridConfiguration": {"col": 1, "row": 1, "size_x": 12, "size_y": 6}, } - if panel_type == 'timeSeries': + if panel_type == "timeSeries": # # In case of a time series, the current dashboard implementation # requires the timestamp to be explicitly specified as "key". @@ -154,7 +157,7 @@ def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, # specify time window and sampling) # metrics = copy.copy(metrics) - metrics.insert(0, {'id': 'timestamp'}) + metrics.insert(0, {"id": "timestamp"}) # # Convert list of metrics to format used by Sysdig Monitor @@ -163,97 +166,88 @@ def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, k_count = 0 v_count = 0 for i, metric in enumerate(metrics): - property_name = 'v' if 'aggregations' in metric else 'k' + property_name = "v" if "aggregations" in metric else "k" - if property_name == 'k': + if property_name == "k": i = k_count k_count += 1 else: i = v_count v_count += 1 - property_names[metric['id']] = property_name + str(i) - - panel_configuration['metrics'].append({ - 'metricId': metric['id'], - 'aggregation': metric['aggregations']['time'] if 'aggregations' in metric else None, - 'groupAggregation': metric['aggregations']['group'] if 'aggregations' in metric else None, - 'propertyName': property_name + str(i) - }) + property_names[metric["id"]] = property_name + str(i) + + panel_configuration["metrics"].append( + { + "metricId": metric["id"], + "aggregation": metric["aggregations"]["time"] if "aggregations" in metric else None, + "groupAggregation": metric["aggregations"]["group"] if "aggregations" in metric else None, + "propertyName": property_name + str(i), + } + ) - panel_configuration['scope'] = scope + panel_configuration["scope"] = scope # if chart scope is equal to dashboard scope, set it as non override - panel_configuration['overrideFilter'] = ('scope' in dashboard and dashboard['scope'] != scope) or \ - ('scope' not in dashboard and scope is not None) + panel_configuration["overrideFilter"] = ("scope" in dashboard and dashboard["scope"] != scope) or ( + "scope" not in dashboard and scope is not None + ) # # Configure panel type # - if panel_type == 'timeSeries': - panel_configuration['showAs'] = 'timeSeries' - panel_configuration['showAsType'] = 'line' + if panel_type == "timeSeries": + panel_configuration["showAs"] = "timeSeries" + panel_configuration["showAsType"] = "line" if limit is not None: - panel_configuration['paging'] = { - 'from': 0, - 'to': limit - 1 - } + panel_configuration["paging"] = {"from": 0, "to": limit - 1} - elif panel_type == 'number': - panel_configuration['showAs'] = 'summary' - panel_configuration['showAsType'] = 'summary' - elif panel_type == 'top': - panel_configuration['showAs'] = 'top' - panel_configuration['showAsType'] = 'bars' + elif panel_type == "number": + panel_configuration["showAs"] = "summary" + panel_configuration["showAsType"] = "summary" + elif panel_type == "top": + panel_configuration["showAs"] = "top" + panel_configuration["showAsType"] = "bars" if sort_by is None: - panel_configuration['sorting'] = [{ - 'id': 'v0', - 'mode': 'desc' - }] + panel_configuration["sorting"] = [{"id": "v0", "mode": "desc"}] else: - panel_configuration['sorting'] = [{ - 'id': property_names[sort_by['metric']], - 'mode': sort_by['mode'] - }] + panel_configuration["sorting"] = [{"id": property_names[sort_by["metric"]], "mode": sort_by["mode"]}] if limit is None: - panel_configuration['paging'] = { - 'from': 0, - 'to': 10 - } + panel_configuration["paging"] = {"from": 0, "to": 10} else: - panel_configuration['paging'] = { - 'from': 0, - 'to': limit - 1 - } + panel_configuration["paging"] = {"from": 0, "to": limit - 1} # # Configure layout # if layout is not None: - panel_configuration['gridConfiguration'] = layout + panel_configuration["gridConfiguration"] = layout # # Clone existing dashboard... # dashboard_configuration = copy.deepcopy(dashboard) - dashboard_configuration['id'] = None + dashboard_configuration["id"] = None # # ... and add the new panel # - dashboard_configuration['items'].append(panel_configuration) + dashboard_configuration["items"].append(panel_configuration) # # Update dashboard # - res = self.http.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, - data=json.dumps({'dashboard': dashboard_configuration}), - verify=self.ssl_verify) + res = self.http.put( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard["id"]), + headers=self.hdrs, + data=json.dumps({"dashboard": dashboard_configuration}), + verify=self.ssl_verify, + ) return self._request_result(res) def remove_dashboard_panel(self, dashboard, panel_name): - '''**Description** + """**Description** Removes a panel from the dashboard. The panel to remove is identified by the specified ``name``. **Arguments** @@ -264,41 +258,44 @@ def remove_dashboard_panel(self, dashboard, panel_name): **Example** `examples/dashboard.py `_ - ''' + """ # # Clone existing dashboard... # dashboard_configuration = copy.deepcopy(dashboard) - dashboard_configuration['id'] = None + dashboard_configuration["id"] = None # # ... find the panel # def filter_fn(panel): - return panel['name'] == panel_name + return panel["name"] == panel_name - panels = list(filter(filter_fn, dashboard_configuration['items'])) + panels = list(filter(filter_fn, dashboard_configuration["items"])) if len(panels) > 0: # # ... and remove it # for panel in panels: - dashboard_configuration['items'].remove(panel) + dashboard_configuration["items"].remove(panel) # # Update dashboard # - res = self.http.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), - headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), - verify=self.ssl_verify) + res = self.http.put( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard["id"]), + headers=self.hdrs, + data=json.dumps({"dashboard": dashboard_configuration}), + verify=self.ssl_verify, + ) return self._request_result(res) else: - return [False, 'Not found'] + return [False, "Not found"] def _get_dashboard_converters(self): - '''**Description** - Internal function to return dashboard converters from one version to another one. - ''' + """**Description** + Internal function to return dashboard converters from one version to another one. + """ # There's not really a previous version... return {} diff --git a/sdcclient/_scanning.py b/sdcclient/_scanning.py index 24de165f..2cea3429 100644 --- a/sdcclient/_scanning.py +++ b/sdcclient/_scanning.py @@ -19,12 +19,12 @@ class SdScanningClient(ScanningAlertsClientV1, _SdcCommon): - def __init__(self, token="", sdc_url='https://secure.sysdig.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://secure.sysdig.com", ssl_verify=True, custom_headers=None): super(SdScanningClient, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDS" def add_image(self, image, force=False, dockerfile=None, annotations={}, autosubscribe=True): - '''**Description** + """**Description** Add an image to the scanner **Arguments** @@ -35,22 +35,21 @@ def add_image(self, image, force=False, dockerfile=None, annotations={}, autosub **Success Return Value** A JSON object representing the image that was added. - ''' + """ itype = self._discover_inputimage_format(image) - if itype != 'tag': + if itype != "tag": return [False, "can only add a tag"] payload = {} if dockerfile: - payload['dockerfile'] = base64.b64encode(dockerfile.encode()).decode("utf-8") - payload['tag'] = image + payload["dockerfile"] = base64.b64encode(dockerfile.encode()).decode("utf-8") + payload["tag"] = image if annotations: - payload['annotations'] = annotations + payload["annotations"] = annotations url = "{base_url}/api/scanning/v1/anchore/images?autosubscribe={autosubscribe}{force}".format( - base_url=self.url, - autosubscribe=str(autosubscribe), - force="&force=true" if force else "") + base_url=self.url, autosubscribe=str(autosubscribe), force="&force=true" if force else "" + ) res = self.http.post(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -59,7 +58,7 @@ def add_image(self, image, force=False, dockerfile=None, annotations={}, autosub return [True, res.json()] def get_image(self, image, show_history=False): - '''**Description** + """**Description** Find the image with the tag and return its json description **Arguments** @@ -67,21 +66,18 @@ def get_image(self, image, show_history=False): **Success Return Value** A JSON object representing the image. - ''' + """ itype = self._discover_inputimage_format(image) - if itype not in ['tag', 'imageid', 'imageDigest']: + if itype not in ["tag", "imageid", "imageDigest"]: return [False, "cannot use input image string: no discovered imageDigest"] params = {} - params['history'] = str(show_history and itype not in ['imageid', 'imageDigest']).lower() - if itype == 'tag': - params['fulltag'] = image + params["history"] = str(show_history and itype not in ["imageid", "imageDigest"]).lower() + if itype == "tag": + params["fulltag"] = image url = self.url + "/api/scanning/v1/anchore/images" - url += { - 'imageid': '/by_id/{}'.format(image), - 'imageDigest': '/{}'.format(image) - }.get(itype, '') + url += {"imageid": "/by_id/{}".format(image), "imageDigest": "/{}".format(image)}.get(itype, "") res = self.http.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -90,7 +86,7 @@ def get_image(self, image, show_history=False): return [True, res.json()] def list_images(self): - '''**Description** + """**Description** List the current set of images in the scanner. **Arguments** @@ -98,7 +94,7 @@ def list_images(self): **Success Return Value** A JSON object containing all the images. - ''' + """ url = self.url + "/api/scanning/v1/anchore/images" res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -120,7 +116,7 @@ def list_image_tags(self): return [True, res.json()] def list_whitelisted_cves(self): - '''**Description** + """**Description** List the whitelisted global CVEs. **Arguments** @@ -132,10 +128,13 @@ def list_whitelisted_cves(self): **Deprecated** This method has been deprecated since the API has changed. Use the list_vulnerability_exception_bundles and get_vulnerability_exception_bundle methods. - ''' - warn("list_whitelisted_cves has been deprecated and doesn't work properly, please use the " - "list_vulnerability_exception_bundles and get_vulnerability_exception_bundle methods", - DeprecationWarning, 3) + """ + warn( + "list_whitelisted_cves has been deprecated and doesn't work properly, please use the " + "list_vulnerability_exception_bundles and get_vulnerability_exception_bundle methods", + DeprecationWarning, + 3, + ) url = self.url + "/api/scanning/v1/whitelists/global?bundle=default" res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -144,7 +143,7 @@ def list_whitelisted_cves(self): return [True, res.json()] def query_image_content(self, image, content_type=""): - '''**Description** + """**Description** Find the image with the tag and return its content. **Arguments** @@ -159,16 +158,16 @@ def query_image_content(self, image, content_type=""): **Success Return Value** A JSON object representing the image content. - ''' + """ content_type = content_type.lower() supported_types = ["os", "files", "npm", "gem", "python", "java"] if content_type not in supported_types: return False, f"unsupported type provided: {content_type}, must be one of {supported_types}" - return self._query_image(image, query_group='content', query_type=content_type) + return self._query_image(image, query_group="content", query_type=content_type) def query_image_metadata(self, image, metadata_type=""): - '''**Description** + """**Description** Find the image with the tag and return its metadata. **Arguments** @@ -177,11 +176,11 @@ def query_image_metadata(self, image, metadata_type=""): **Success Return Value** A JSON object representing the image metadata. - ''' - return self._query_image(image, query_group='metadata', query_type=metadata_type) + """ + return self._query_image(image, query_group="metadata", query_type=metadata_type) def query_image_vuln(self, image, vuln_type="", vendor_only=True): - '''**Description** + """**Description** Find the image with the tag and return its vulnerabilities. **Arguments** @@ -191,12 +190,11 @@ def query_image_vuln(self, image, vuln_type="", vendor_only=True): **Success Return Value** A JSON object representing the image vulnerabilities. - ''' - return self._query_image(image, query_group='vuln', query_type=vuln_type, vendor_only=vendor_only) + """ + return self._query_image(image, query_group="vuln", query_type=vuln_type, vendor_only=vendor_only) - def query_images_by_vulnerability(self, vulnerability_id, namespace=None, package=None, severity=None, - vendor_only=True): - '''**Description** + def query_images_by_vulnerability(self, vulnerability_id, namespace=None, package=None, severity=None, vendor_only=True): + """**Description** Search system for images with the given vulnerability ID present **Arguments** @@ -208,14 +206,15 @@ def query_images_by_vulnerability(self, vulnerability_id, namespace=None, packag **Success Return Value** A JSON object representing the images. - ''' + """ url = "{base_url}/api/scanning/v1/anchore/query/images/by_vulnerability?vulnerability_id={vulnerability_id}{namespace}{package}{severity}&vendor_only={vendor_only}".format( - base_url=self.url, - vulnerability_id=vulnerability_id, - namespace="&namespace={}".format(namespace) if namespace else "", - package="&affected_package={}".format(package) if package else "", - severity="&severity={}".format(severity) if severity else "", - vendor_only=vendor_only) + base_url=self.url, + vulnerability_id=vulnerability_id, + namespace="&namespace={}".format(namespace) if namespace else "", + package="&affected_package={}".format(package) if package else "", + severity="&severity={}".format(severity) if severity else "", + vendor_only=vendor_only, + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -224,7 +223,7 @@ def query_images_by_vulnerability(self, vulnerability_id, namespace=None, packag return [True, res.json()] def query_images_by_package(self, name, version=None, package_type=None): - '''**Description** + """**Description** Search system for images with the given package installed **Arguments** @@ -234,12 +233,13 @@ def query_images_by_package(self, name, version=None, package_type=None): **Success Return Value** A JSON object representing the images. - ''' + """ url = "{base_url}/api/scanning/v1/anchore/query/images/by_package?name={name}{version}{package_type}".format( - base_url=self.url, - name=name, - version="&version={}".format(version) if version else "", - package_type="&package_type={}".format(package_type) if package_type else "") + base_url=self.url, + name=name, + version="&version={}".format(version) if version else "", + package_type="&package_type={}".format(package_type) if package_type else "", + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -256,11 +256,12 @@ def _query_image(self, image, query_group="", query_type="", vendor_only=True): return [False, "cannot use input image string (no discovered imageDigest)"] url = "{base_url}/api/scanning/v1/anchore/images/{image_digest}/{query_group}/{query_type}{vendor_only}".format( - base_url=self.url, - image_digest=image_digest, - query_group=query_group, - query_type=query_type if query_type else '', - vendor_only="?vendor_only={}".format(vendor_only) if query_group == 'vuln' else '') + base_url=self.url, + image_digest=image_digest, + query_group=query_group, + query_type=query_type if query_type else "", + vendor_only="?vendor_only={}".format(vendor_only) if query_group == "vuln" else "", + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -269,12 +270,12 @@ def _query_image(self, image, query_group="", query_type="", vendor_only=True): return [True, res.json()] def delete_image(self, image, force=False): - '''**Description** + """**Description** Delete image from the scanner. **Arguments** - None - ''' + """ _, _, image_digest = self._discover_inputimage(image) if not image_digest: return [False, "cannot use input image string: no discovered imageDigest"] @@ -287,7 +288,7 @@ def delete_image(self, image, force=False): return [True, res.json()] def check_image_evaluation(self, image, show_history=False, detail=False, tag=None, policy=None): - '''**Description** + """**Description** Check the latest policy evaluation for an image **Arguments** @@ -299,23 +300,24 @@ def check_image_evaluation(self, image, show_history=False, detail=False, tag=No **Success Return Value** A JSON object representing the evaluation status. - ''' + """ itype, _, image_digest = self._discover_inputimage(image) if not image_digest: return [False, "could not get image record from anchore"] - if not tag and itype != 'tag': + if not tag and itype != "tag": return [False, "input image name is not a tag, and no --tag is specified"] thetag = tag if tag else image url = "{base_url}/api/scanning/v1/anchore/images/{image_digest}/check?history={history}&detail={detail}&tag={tag}{policy_id}" url = url.format( - base_url=self.url, - image_digest=image_digest, - history=str(show_history).lower(), - detail=str(detail).lower(), - tag=thetag, - policy_id=("&policyId=%s" % policy) if policy else "") + base_url=self.url, + image_digest=image_digest, + history=str(show_history).lower(), + detail=str(detail).lower(), + tag=thetag, + policy_id=("&policyId=%s" % policy) if policy else "", + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -324,7 +326,7 @@ def check_image_evaluation(self, image, show_history=False, detail=False, tag=No return [True, res.json()] def get_pdf_report(self, image, tag=None, date=None): - '''**Description** + """**Description** Get a pdf report of one image **Arguments** @@ -335,19 +337,17 @@ def get_pdf_report(self, image, tag=None, date=None): **Success Return Value** The pdf content - ''' + """ image_type, _, image_digest = self._discover_inputimage(image) if not image_digest: return [False, "could not get image record from anchore"] - if not tag and image_type != 'tag': + if not tag and image_type != "tag": return [False, "input image name is not a tag"] image_tag = tag if tag else image url = "{base_url}/api/scanning/v1/images/{image_digest}/report?tag={tag}{at}".format( - base_url=self.url, - image_digest=image_digest, - tag=image_tag, - at=("&at=%s" % date) if date else "") + base_url=self.url, image_digest=image_digest, tag=image_tag, at=("&at=%s" % date) if date else "" + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -356,7 +356,7 @@ def get_pdf_report(self, image, tag=None, date=None): return [True, res.content] def get_latest_pdf_report_by_digest(self, image_digest, full_tag=None): - '''**Description** + """**Description** Get the latest pdf report of one image digest **Arguments** @@ -365,11 +365,10 @@ def get_latest_pdf_report_by_digest(self, image_digest, full_tag=None): **Success Return Value** The pdf content - ''' + """ url = "{base_url}/api/scanning/v1/images/{image_digest}/report?tag={tag}".format( - base_url=self.url, - image_digest=image_digest, - tag=full_tag) + base_url=self.url, image_digest=image_digest, tag=full_tag + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -378,7 +377,7 @@ def get_latest_pdf_report_by_digest(self, image_digest, full_tag=None): return [True, res.content] def import_image(self, infile, image_id, digest_id, image_name, sync=False): - '''**Description** + """**Description** Import an image archive **Arguments** @@ -388,18 +387,21 @@ def import_image(self, infile, image_id, digest_id, image_name, sync=False): **Success Return Value** If synchronous, A JSON object representing the image that was imported. - ''' + """ try: - m = MultipartEncoder( - fields={'archive_file': (infile, open(infile, 'rb'), 'text/plain')} - ) + m = MultipartEncoder(fields={"archive_file": (infile, open(infile, "rb"), "text/plain")}) if sync: url = self.url + "/api/scanning/v1/anchore/import/images" else: url = self.url + "/api/scanning/v1/import/images" - headers = {'Authorization': 'Bearer ' + self.token, 'Content-Type': m.content_type, - 'imageId': image_id, 'digestId': digest_id, 'imageName': image_name} + headers = { + "Authorization": "Bearer " + self.token, + "Content-Type": m.content_type, + "imageId": image_id, + "digestId": digest_id, + "imageName": image_name, + } res = self.http.post(url, data=m, headers=headers, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -410,7 +412,7 @@ def import_image(self, infile, image_id, digest_id, image_name, sync=False): print(err) def get_anchore_users_account(self): - '''**Description** + """**Description** Get the anchore user account. **Arguments** @@ -418,7 +420,7 @@ def get_anchore_users_account(self): **Success Return Value** A JSON object containing user account information. - ''' + """ url = self.url + "/api/scanning/v1/account" res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -427,7 +429,7 @@ def get_anchore_users_account(self): return [True, res.json()] def get_image_scan_result_by_id(self, image_id, full_tag_name, detail): - '''**Description** + """**Description** Get the anchore image scan result for an image id. **Arguments** @@ -437,21 +439,18 @@ def get_image_scan_result_by_id(self, image_id, full_tag_name, detail): **Success Return Value** A JSON object containing pass/fail status of image scan policy. - ''' + """ url = "{base_url}/api/scanning/v1/anchore/images/by_id/{image_id}/check?tag={full_tag_name}&detail={detail}".format( - base_url=self.url, - image_id=image_id, - full_tag_name=full_tag_name, - detail=detail) + base_url=self.url, image_id=image_id, full_tag_name=full_tag_name, detail=detail + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()] - def add_registry(self, registry, registry_user, registry_pass, insecure=False, registry_type="docker_v2", - validate=True): - '''**Description** + def add_registry(self, registry, registry_user, registry_pass, insecure=False, registry_type="docker_v2", validate=True): + """**Description** Add image registry **Arguments** @@ -464,26 +463,27 @@ def add_registry(self, registry, registry_user, registry_pass, insecure=False, r **Success Return Value** A JSON object representing the registry. - ''' - registry_types = ['docker_v2', 'awsecr'] + """ + registry_types = ["docker_v2", "awsecr"] if registry_type and registry_type not in registry_types: return [False, "input registry type not supported (supported registry_types: " + str(registry_types)] if self._registry_string_is_valid(registry): - return [False, - "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional"] + return [ + False, + "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional", + ] if not registry_type: registry_type = self._get_registry_type(registry) payload = { - 'registry': registry, - 'registry_user': registry_user, - 'registry_pass': registry_pass, - 'registry_type': registry_type, - 'registry_verify': not insecure} - url = "{base_url}/api/scanning/v1/anchore/registries?validate={validate}".format( - base_url=self.url, - validate=validate) + "registry": registry, + "registry_user": registry_user, + "registry_pass": registry_pass, + "registry_type": registry_type, + "registry_verify": not insecure, + } + url = "{base_url}/api/scanning/v1/anchore/registries?validate={validate}".format(base_url=self.url, validate=validate) res = self.http.post(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -491,9 +491,8 @@ def add_registry(self, registry, registry_user, registry_pass, insecure=False, r return [True, res.json()] - def update_registry(self, registry, registry_user, registry_pass, insecure=False, registry_type="docker_v2", - validate=True): - '''**Description** + def update_registry(self, registry, registry_user, registry_pass, insecure=False, registry_type="docker_v2", validate=True): + """**Description** Update an existing image registry. **Arguments** @@ -506,21 +505,23 @@ def update_registry(self, registry, registry_user, registry_pass, insecure=False **Success Return Value** A JSON object representing the registry. - ''' + """ if self._registry_string_is_valid(registry): - return [False, - "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional"] + return [ + False, + "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional", + ] payload = { - 'registry': registry, - 'registry_user': registry_user, - 'registry_pass': registry_pass, - 'registry_type': registry_type, - 'registry_verify': not insecure} + "registry": registry, + "registry_user": registry_user, + "registry_pass": registry_pass, + "registry_type": registry_type, + "registry_verify": not insecure, + } url = "{base_url}/api/scanning/v1/anchore/registries/{registry}?validate={validate}".format( - base_url=self.url, - registry=registry, - validate=validate) + base_url=self.url, registry=registry, validate=validate + ) res = self.http.put(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -529,16 +530,18 @@ def update_registry(self, registry, registry_user, registry_pass, insecure=False return [True, res.json()] def delete_registry(self, registry): - '''**Description** + """**Description** Delete an existing image registry **Arguments** - registry: Full hostname/port of registry. Eg. myrepo.example.com:5000 - ''' + """ # do some input string checking if re.match(".*\\/.*", registry): - return [False, - "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional"] + return [ + False, + "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional", + ] url = self.url + "/api/scanning/v1/anchore/registries/" + registry res = self.http.delete(url, headers=self.hdrs, verify=self.ssl_verify) @@ -548,7 +551,7 @@ def delete_registry(self, registry): return [True, res.json()] def list_registry(self): - '''**Description** + """**Description** List all current image registries **Arguments** @@ -556,7 +559,7 @@ def list_registry(self): **Success Return Value** A JSON object representing the list of registries. - ''' + """ url = self.url + "/api/scanning/v1/anchore/registries" res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -565,7 +568,7 @@ def list_registry(self): return [True, res.json()] def get_registry(self, registry): - '''**Description** + """**Description** Find the registry and return its json description **Arguments** @@ -573,10 +576,12 @@ def get_registry(self, registry): **Success Return Value** A JSON object representing the registry. - ''' + """ if self._registry_string_is_valid(registry): - return [False, - "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional"] + return [ + False, + "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional", + ] url = self.url + "/api/scanning/v1/anchore/registries/" + registry res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) @@ -594,7 +599,7 @@ def _registry_string_is_valid(self, registry): return re.match(".*\\/.*", registry) def add_repo(self, repo, autosubscribe=True, lookuptag=None): - '''**Description** + """**Description** Add a repository **Arguments** @@ -604,12 +609,13 @@ def add_repo(self, repo, autosubscribe=True, lookuptag=None): **Success Return Value** A JSON object representing the repo. - ''' + """ url = "{base_url}/api/scanning/v1/anchore/repositories?repository={repo}&autosubscribe={autosubscribe}{lookuptag}".format( - base_url=self.url, - repo=repo, - autosubscribe=autosubscribe, - lookuptag="&lookuptag={}".format(lookuptag) if lookuptag else "") + base_url=self.url, + repo=repo, + autosubscribe=autosubscribe, + lookuptag="&lookuptag={}".format(lookuptag) if lookuptag else "", + ) res = self.http.post(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -618,34 +624,34 @@ def add_repo(self, repo, autosubscribe=True, lookuptag=None): return [True, res.json()] def watch_repo(self, repo): - '''**Description** + """**Description** Instruct engine to start automatically watching the repo for image updates **Arguments** - repo: Input repository can be in the following formats: registry/repo - ''' - return self.activate_subscription('repo_update', repo) + """ + return self.activate_subscription("repo_update", repo) def unwatch_repo(self, repo): - '''**Description** + """**Description** Instruct engine to stop automatically watching the repo for image updates **Arguments** - repo: Input repository can be in the following formats: registry/repo - ''' - return self.deactivate_subscription('repo_update', repo) + """ + return self.deactivate_subscription("repo_update", repo) def delete_repo(self, repo): - '''**Description** + """**Description** Delete a repository from the watch list (does not delete already analyzed images) **Arguments** - repo: Input repository can be in the following formats: registry/repo - ''' - return self.delete_subscription('repo_update', repo) + """ + return self.delete_subscription("repo_update", repo) def list_repos(self): - '''**Description** + """**Description** List added repositories **Arguments** @@ -653,11 +659,11 @@ def list_repos(self): **Success Return Value** A JSON object representing the list of repositories. - ''' + """ return self.get_subscriptions("repo_update") def get_repo(self, repo): - '''**Description** + """**Description** Get a repository **Arguments** @@ -665,11 +671,11 @@ def get_repo(self, repo): **Success Return Value** A JSON object representing the registry. - ''' + """ return self.get_subscriptions("repo_update", repo) def add_policy(self, name, rules, comment="", bundleid=None): - '''**Description** + """**Description** Create a new policy **Arguments** @@ -680,17 +686,12 @@ def add_policy(self, name, rules, comment="", bundleid=None): **Success Return Value** A JSON object containing the policy description. - ''' - policy = { - 'name': name, - 'comment': comment, - 'rules': rules, - 'version': '1_0' - } + """ + policy = {"name": name, "comment": comment, "rules": rules, "version": "1_0"} if bundleid: - policy['policyBundleId'] = bundleid + policy["policyBundleId"] = bundleid - url = self.url + '/api/scanning/v1/policies' + url = self.url + "/api/scanning/v1/policies" data = json.dumps(policy) res = self.http.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): @@ -699,9 +700,7 @@ def add_policy(self, name, rules, comment="", bundleid=None): return [True, res.json()] def list_policy_bundles(self, detail=False): - url = "{base_url}/api/scanning/v1/anchore/policies?detail={detail}".format( - base_url=self.url, - detail=str(detail)) + url = "{base_url}/api/scanning/v1/anchore/policies?detail={detail}".format(base_url=self.url, detail=str(detail)) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -709,7 +708,7 @@ def list_policy_bundles(self, detail=False): return [True, res.json()] def list_policies(self, bundleid=None): - '''**Description** + """**Description** List the current set of scanning policies. **Arguments** @@ -717,10 +716,10 @@ def list_policies(self, bundleid=None): **Success Return Value** A JSON object containing the list of policies. - ''' - url = self.url + '/api/scanning/v1/policies' + """ + url = self.url + "/api/scanning/v1/policies" if bundleid: - url += '?bundleId=' + bundleid + url += "?bundleId=" + bundleid res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -729,7 +728,7 @@ def list_policies(self, bundleid=None): return [True, res.json()] def get_policy(self, policyid, bundleid=None): - '''**Description** + """**Description** Retrieve the policy with the given id in the targeted policy bundle **Arguments** @@ -738,7 +737,7 @@ def get_policy(self, policyid, bundleid=None): **Success Return Value** A JSON object containing the policy description. - ''' + """ ok, policies = self.list_policies(bundleid) if not ok: return [ok, policies] @@ -750,7 +749,7 @@ def get_policy(self, policyid, bundleid=None): return [False, "Policy not found"] def update_policy(self, policyid, policy_description): - '''**Description** + """**Description** Update the policy with the given id **Arguments** @@ -759,8 +758,8 @@ def update_policy(self, policyid, policy_description): **Success Return Value** A JSON object containing the policy description. - ''' - url = self.url + '/api/scanning/v1/policies/' + policyid + """ + url = self.url + "/api/scanning/v1/policies/" + policyid data = json.dumps(policy_description) res = self.http.put(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): @@ -769,16 +768,16 @@ def update_policy(self, policyid, policy_description): return [True, res.json()] def delete_policy(self, policyid, bundleid=None): - '''**Description** + """**Description** Delete the policy with the given id in the targeted policy Bundle **Arguments** - policyid: Unique identifier associated with this policy. - policy_description: A dictionary with the policy description. - ''' - url = self.url + '/api/scanning/v1/policies/' + policyid + """ + url = self.url + "/api/scanning/v1/policies/" + policyid if bundleid: - url += '?bundleId=' + bundleid + url += "?bundleId=" + bundleid res = self.http.delete(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -786,9 +785,16 @@ def delete_policy(self, policyid, bundleid=None): return [True, res.text] - def add_alert(self, name, description=None, scope="", triggers={'failed': True, 'unscanned': True}, - enabled=False, notification_channels=[]): - ''' + def add_alert( + self, + name, + description=None, + scope="", + triggers={"failed": True, "unscanned": True}, + enabled=False, + notification_channels=[], + ): + """ Create a new alert **Warning**: `add_alert` is deprecated and will be removed soon, use `add_runtime_alert` or `add_repository_alert` from `ScanningAlertsClientV1` instead. @@ -807,19 +813,19 @@ def add_alert(self, name, description=None, scope="", triggers={'failed': True, .. deprecated:: `add_alert` is deprecated and will be removed soon, use `add_runtime_alert` or `add_repository_alert` from `ScanningAlertsClientV1` instead. - ''' + """ alert = { - 'name': name, - 'description': description, - 'triggers': triggers, - 'scope': scope, - 'enabled': enabled, - 'autoscan': True, - 'notificationChannelIds': notification_channels, + "name": name, + "description": description, + "triggers": triggers, + "scope": scope, + "enabled": enabled, + "autoscan": True, + "notificationChannelIds": notification_channels, } - url = self.url + '/api/scanning/v1/alerts' + url = self.url + "/api/scanning/v1/alerts" data = json.dumps(alert) res = self.http.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): @@ -828,7 +834,7 @@ def add_alert(self, name, description=None, scope="", triggers={'failed': True, return [True, res.json()] def update_alert(self, alertid, alert_description): - ''' + """ Update the alert with the given id. **Warning**: `update_alert` is deprecated and will be removed soon, use `update_runtime_alert` or `update_repository_alert` from `ScanningAlertsClientV1` instead. @@ -843,8 +849,8 @@ def update_alert(self, alertid, alert_description): .. deprecated:: `update_alert` is deprecated and will be removed soon, use `update_runtime_alert` or `update_repository_alert` from `ScanningAlertsClientV1` instead. - ''' - url = self.url + '/api/scanning/v1/alerts/' + alertid + """ + url = self.url + "/api/scanning/v1/alerts/" + alertid data = json.dumps(alert_description) res = self.http.put(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): @@ -853,7 +859,7 @@ def update_alert(self, alertid, alert_description): return [True, res.json()] def get_subscriptions(self, subscription_type=None, subscription_key=None): - '''**Description** + """**Description** Get the list of subscriptions **Arguments** @@ -863,7 +869,7 @@ def get_subscriptions(self, subscription_type=None, subscription_key=None): - 'vuln_update': Receive notification when vulnerabilities are added, removed or modified - 'repo_update': Receive notification when a repo is updated - subscription_key: Fully qualified name of tag to subscribe to. Eg. docker.io/library/alpine:latest - ''' + """ url = self.url + "/api/scanning/v1/anchore/subscriptions/" if subscription_key or subscription_type: url += "?" @@ -878,7 +884,7 @@ def get_subscriptions(self, subscription_type=None, subscription_key=None): return [True, res.json()] def activate_subscription(self, subscription_type, subscription_key): - '''**Description** + """**Description** Activate a subscription **Arguments** @@ -888,11 +894,11 @@ def activate_subscription(self, subscription_type, subscription_key): - 'vuln_update': Receive notification when vulnerabilities are added, removed or modified - 'repo_update': Receive notification when a repo is updated - subscription_key: Fully qualified name of tag to subscribe to. Eg. docker.io/library/alpine:latest - ''' + """ return self._update_subscription(subscription_type, subscription_key, True) def deactivate_subscription(self, subscription_type, subscription_key): - '''**Description** + """**Description** Deactivate a subscription **Arguments** @@ -902,11 +908,11 @@ def deactivate_subscription(self, subscription_type, subscription_key): - 'vuln_update': Receive notification when vulnerabilities are added, removed or modified - 'repo_update': Receive notification when a repo is updated - subscription_key: Fully qualified name of tag to subscribe to. Eg. docker.io/library/alpine:latest - ''' + """ return self._update_subscription(subscription_type, subscription_key, False) def delete_subscription(self, subscription_type, subscription_key): - '''**Description** + """**Description** Delete a subscription **Arguments** @@ -916,7 +922,7 @@ def delete_subscription(self, subscription_type, subscription_key): - 'vuln_update': Receive notification when vulnerabilities are added, removed or modified - 'repo_update': Receive notification when a repo is updated - subscription_key: Fully qualified name of tag to subscribe to. Eg. docker.io/library/alpine:latest - ''' + """ try: url = self._subscription_url(subscription_type, subscription_key) except Exception as err: @@ -934,7 +940,7 @@ def _update_subscription(self, subscription_type, subscription_key, activate): except Exception as err: return [False, err] - payload = {'active': activate, 'subscription_key': subscription_key, 'subscription_type': subscription_type} + payload = {"active": activate, "subscription_key": subscription_key, "subscription_type": subscription_type} res = self.http.put(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -955,7 +961,7 @@ def _subscription_url(self, subscription_type, subscription_key): return self.url + "/api/scanning/v1/anchore/subscriptions/" + id def list_subscription(self): - '''**Description** + """**Description** List all subscriptions **Arguments** @@ -963,11 +969,11 @@ def list_subscription(self): **Success Return Value** A JSON object representing the list of subscriptions. - ''' + """ return self.get_subscriptions() def list_runtime(self, scope="", skip_policy_evaluation=True, start_time=None, end_time=None): - '''**Description** + """**Description** List runtime containers **Arguments** @@ -978,18 +984,15 @@ def list_runtime(self, scope="", skip_policy_evaluation=True, start_time=None, e **Success Return Value** A JSON object representing the list of runtime containers. - ''' - containers = { - 'scope': scope, - 'skipPolicyEvaluation': skip_policy_evaluation - } + """ + containers = {"scope": scope, "skipPolicyEvaluation": skip_policy_evaluation} if start_time or end_time: - containers['time'] = {} - containers['time']['from'] = int(start_time * 100000) if start_time else 0 + containers["time"] = {} + containers["time"]["from"] = int(start_time * 100000) if start_time else 0 end_time = end_time if end_time else time.time() - containers['time']['to'] = int(end_time * 1000000) + containers["time"]["to"] = int(end_time * 1000000) - url = self.url + '/api/scanning/v1/query/containers' + url = self.url + "/api/scanning/v1/query/containers" data = json.dumps(containers) res = self.http.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): @@ -1001,11 +1004,11 @@ def _discover_inputimage_format(self, input_string): itype = None if re.match("^sha256:[0-9a-fA-F]{64}", input_string): - itype = 'imageDigest' + itype = "imageDigest" elif re.match("[0-9a-fA-F]{64}", input_string): - itype = 'imageid' + itype = "imageid" else: - itype = 'tag' + itype = "tag" return itype @@ -1029,9 +1032,9 @@ def _discover_inputimage(self, input_string): ok, ret = self.get_image(input_string) if ok: image_record = ret[0] - urldigest = image_record.get('imageDigest', None) - for image_detail in image_record.get('image_detail', []): - if input_string == image_detail.get('imageId', ''): + urldigest = image_record.get("imageDigest", None) + for image_detail in image_record.get("image_detail", []): + if input_string == image_detail.get("imageId", ""): ret_type = "imageid" break @@ -1044,7 +1047,7 @@ def get_vulnerability_details(self, id): url = f"{self.url}/api/scanning/v1/anchore/query/vulnerabilities" params = { - "id": id, + "id": id, } res = self.http.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) @@ -1063,9 +1066,9 @@ def add_vulnerability_exception_bundle(self, name, comment=""): url = f"{self.url}/api/scanning/v1/vulnexceptions" params = { - "version": "1_0", - "name": name, - "comment": comment, + "version": "1_0", + "name": name, + "comment": comment, } data = json.dumps(params) @@ -1076,7 +1079,6 @@ def add_vulnerability_exception_bundle(self, name, comment=""): return [True, res.json()] def delete_vulnerability_exception_bundle(self, id): - url = self.url + f"/api/scanning/v1/vulnexceptions/{id}" res = self.http.delete(url, headers=self.hdrs, verify=self.ssl_verify) @@ -1089,7 +1091,7 @@ def list_vulnerability_exception_bundles(self): url = f"{self.url}/api/scanning/v1/vulnexceptions" params = { - "bundleId": "default", + "bundleId": "default", } res = self.http.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) @@ -1102,7 +1104,7 @@ def get_vulnerability_exception_bundle(self, bundle): url = f"{self.url}/api/scanning/v1/vulnexceptions/{bundle}" params = { - "bundleId": "default", + "bundleId": "default", } res = self.http.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) @@ -1118,11 +1120,11 @@ def add_vulnerability_exception(self, bundle, cve, note=None, expiration_date=No url = f"{self.url}/api/scanning/v1/vulnexceptions/{bundle}/vulnerabilities" params = { - "gate": "vulnerabilities", - "is_busy": False, - "trigger_id": f"{cve}+*", - "expiration_date": int(expiration_date) if expiration_date else None, - "notes": note, + "gate": "vulnerabilities", + "is_busy": False, + "trigger_id": f"{cve}+*", + "expiration_date": int(expiration_date) if expiration_date else None, + "notes": note, } data = json.dumps(params) @@ -1138,7 +1140,7 @@ def delete_vulnerability_exception(self, bundle, id): url = f"{self.url}/api/scanning/v1/vulnexceptions/{bundle}/vulnerabilities/{id}" params = { - "bundleId": "default", + "bundleId": "default", } res = self.http.delete(url, params=params, headers=self.hdrs, verify=self.ssl_verify) @@ -1151,15 +1153,15 @@ def update_vulnerability_exception(self, bundle, id, cve, enabled, note, expirat url = f"{self.url}/api/scanning/v1/vulnexceptions/{bundle}/vulnerabilities/{id}" data = { - "id": id, - "gate": "vulnerabilities", - "trigger_id": f"{cve}+*", - "enabled": enabled, - "notes": note, - "expiration_date": int(expiration_date) if expiration_date else None, + "id": id, + "gate": "vulnerabilities", + "trigger_id": f"{cve}+*", + "enabled": enabled, + "notes": note, + "expiration_date": int(expiration_date) if expiration_date else None, } params = { - "bundleId": "default", + "bundleId": "default", } res = self.http.put(url, data=json.dumps(data), params=params, headers=self.hdrs, verify=self.ssl_verify) @@ -1187,17 +1189,13 @@ def download_cve_report_csv(self, vuln_type="os", scope_type="static"): url = f"{self.url}/api/scanning/v1/reports/csv" params = { - "queryType": "vuln", - "scopeType": scope_type, - "staticScope": { - "registry": "", - "repository": "", - "tag": "" - }, - "runtimeScope": {}, - "imageQueryFilter": {"vType": vuln_type}, - "offset": 0, - "limit": 100000 + "queryType": "vuln", + "scopeType": scope_type, + "staticScope": {"registry": "", "repository": "", "tag": ""}, + "runtimeScope": {}, + "imageQueryFilter": {"vType": vuln_type}, + "offset": 0, + "limit": 100000, } res = self.http.post(url, data=json.dumps(params), headers=self.hdrs, verify=self.ssl_verify) @@ -1207,7 +1205,7 @@ def download_cve_report_csv(self, vuln_type="os", scope_type="static"): return [True, res.content.decode("utf-8")] def get_image_scanning_results(self, image_name, policy_id=None): - ''' + """ Args: image_name (str): Image name to retrieve the scanning results from policy_id (str): Policy ID to check against. If not specified, will check against all policies. @@ -1217,7 +1215,7 @@ def get_image_scanning_results(self, image_name, policy_id=None): The first parameter, if true, means that the result is correct, while if false, means that there's been an error. The second parameter will hold the response of the API call. - ''' + """ try: ok, res = self.get_image(image_name) if not ok: @@ -1226,12 +1224,11 @@ def get_image_scanning_results(self, image_name, policy_id=None): image_digest = res[0]["imageDigest"] image_tag = res[0]["image_detail"][0]["fulltag"] except RetryError: - return [False, "could not retrieve image digest for the given image name, " - "ensure that the image has been scanned"] + return [False, "could not retrieve image digest for the given image name, ensure that the image has been scanned"] url = f"{self.url}/api/scanning/v1/images/{image_digest}/policyEvaluation" params = { - "tag": image_tag, + "tag": image_tag, } res = self.http.get(url, headers=self.hdrs, params=params, verify=self.ssl_verify) @@ -1241,17 +1238,17 @@ def get_image_scanning_results(self, image_name, policy_id=None): json_res = res.json() result = { - "image_digest": json_res["imageDigest"], - "image_id": json_res["imageId"], - "status": json_res["status"], - "image_tag": image_tag, - "total_stop": json_res["nStop"], - "total_warn": json_res["nWarn"], - "last_evaluation": datetime.utcfromtimestamp(json_res["at"]), - "policy_id": "*", - "policy_name": "All policies", - "warn_results": [], - "stop_results": [] + "image_digest": json_res["imageDigest"], + "image_id": json_res["imageId"], + "status": json_res["status"], + "image_tag": image_tag, + "total_stop": json_res["nStop"], + "total_warn": json_res["nWarn"], + "last_evaluation": datetime.utcfromtimestamp(json_res["at"]), + "policy_id": "*", + "policy_name": "All policies", + "warn_results": [], + "stop_results": [], } if policy_id: @@ -1262,26 +1259,34 @@ def get_image_scanning_results(self, image_name, policy_id=None): result["policy_name"] = filtered_result_by_policy_id["policyName"] result["total_stop"] = filtered_result_by_policy_id["nStop"] result["total_warn"] = filtered_result_by_policy_id["nWarn"] - result["warn_results"] = [rule_result["checkOutput"] - for gate_result in filtered_result_by_policy_id["gateResults"] - for rule_result in gate_result["ruleResults"] - if rule_result["gateAction"] == "warn"] - result["stop_results"] = [rule_result["checkOutput"] - for gate_result in filtered_result_by_policy_id["gateResults"] - for rule_result in gate_result["ruleResults"] - if rule_result["gateAction"] == "stop"] + result["warn_results"] = [ + rule_result["checkOutput"] + for gate_result in filtered_result_by_policy_id["gateResults"] + for rule_result in gate_result["ruleResults"] + if rule_result["gateAction"] == "warn" + ] + result["stop_results"] = [ + rule_result["checkOutput"] + for gate_result in filtered_result_by_policy_id["gateResults"] + for rule_result in gate_result["ruleResults"] + if rule_result["gateAction"] == "stop" + ] else: return [False, "the specified policy ID doesn't exist"] else: - result["warn_results"] = [rule_result["checkOutput"] - for result in json_res["results"] - for gate_result in result["gateResults"] - for rule_result in gate_result["ruleResults"] - if rule_result["gateAction"] == "warn"] - result["stop_results"] = [rule_result["checkOutput"] - for result in json_res["results"] - for gate_result in result["gateResults"] - for rule_result in gate_result["ruleResults"] - if rule_result["gateAction"] == "stop"] + result["warn_results"] = [ + rule_result["checkOutput"] + for result in json_res["results"] + for gate_result in result["gateResults"] + for rule_result in gate_result["ruleResults"] + if rule_result["gateAction"] == "warn" + ] + result["stop_results"] = [ + rule_result["checkOutput"] + for result in json_res["results"] + for gate_result in result["gateResults"] + for rule_result in gate_result["ruleResults"] + if rule_result["gateAction"] == "stop" + ] return [True, result] diff --git a/sdcclient/_secure.py b/sdcclient/_secure.py index 47289527..0c608b1a 100644 --- a/sdcclient/_secure.py +++ b/sdcclient/_secure.py @@ -5,12 +5,8 @@ from sdcclient.secure import FalcoRulesFilesClientOld, PolicyEventsClientV1, PolicyEventsClientOld, PolicyClientV2 -class SdSecureClient(FalcoRulesFilesClientOld, - PolicyEventsClientV1, - PolicyEventsClientOld, - PolicyClientV2, - _SdcCommon): - def __init__(self, token="", sdc_url='https://secure.sysdig.com', ssl_verify=True, custom_headers=None): +class SdSecureClient(FalcoRulesFilesClientOld, PolicyEventsClientV1, PolicyEventsClientOld, PolicyClientV2, _SdcCommon): + def __init__(self, token="", sdc_url="https://secure.sysdig.com", ssl_verify=True, custom_headers=None): super(SdSecureClient, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDS" @@ -18,16 +14,16 @@ def __init__(self, token="", sdc_url='https://secure.sysdig.com', ssl_verify=Tru @property def policy_v2(self): - '''**Description** - True if policy V2 API is available - ''' + """**Description** + True if policy V2 API is available + """ if self._policy_v2 is None: - res = self.http.get(self.url + '/api/v2/policies/default', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/v2/policies/default", headers=self.hdrs, verify=self.ssl_verify) self._policy_v2 = res.status_code != 404 return self._policy_v2 def list_rules(self): - '''**Description** + """**Description** Returns the list of rules in the system. These are grouped by name and do not necessarily represent individual rule objects, as multiple rules can have the same name. @@ -37,12 +33,12 @@ def list_rules(self): **Success Return Value** A JSON object representing the list of rules. - ''' - res = self.http.get(self.url + '/api/secure/rules/summaries', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/secure/rules/summaries", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_rules_group(self, name): - '''**Description** + """**Description** Retrieve a group of all rules having the given name. This is used to show how a base rule is modified by later rules that override/append to the rule. @@ -52,13 +48,12 @@ def get_rules_group(self, name): **Success Return Value** A JSON object representing the list of rules. - ''' - res = self.http.get(self.url + '/api/secure/rules/groups?name={}'.format(name), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/secure/rules/groups?name={}".format(name), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_rule_id(self, id): - '''**Description** + """**Description** Retrieve info about a single rule **Arguments** @@ -66,12 +61,12 @@ def get_rule_id(self, id): **Success Return Value** A JSON object representing the rule. - ''' - res = self.http.get(self.url + '/api/secure/rules/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/secure/rules/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def add_rule(self, name, details={}, description="", tags=[]): - '''**Description** + """**Description** Create a new rule **Arguments** @@ -82,19 +77,13 @@ def add_rule(self, name, details={}, description="", tags=[]): **Success Return Value** A JSON object representing the rule. - ''' - rule = { - "name": name, - "description": description, - "details": details, - "tags": tags - } - res = self.http.post(self.url + '/api/secure/rules', data=json.dumps(rule), headers=self.hdrs, - verify=self.ssl_verify) + """ + rule = {"name": name, "description": description, "details": details, "tags": tags} + res = self.http.post(self.url + "/api/secure/rules", data=json.dumps(rule), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def update_rule(self, id, details={}, description="", tags=[]): - '''**Description** + """**Description** Update info associated with a rule **Arguments** @@ -105,24 +94,25 @@ def update_rule(self, id, details={}, description="", tags=[]): **Success Return Value** A JSON object representing the rule. - ''' + """ ok, res = self.get_rule_id(id) if not ok: return [False, res] rule = res if details: - rule['details'] = details + rule["details"] = details if description: - rule['description'] = description + rule["description"] = description if tags: - rule['tags'] = tags - res = self.http.put(self.url + '/api/secure/rules/{}'.format(id), data=json.dumps(rule), headers=self.hdrs, - verify=self.ssl_verify) + rule["tags"] = tags + res = self.http.put( + self.url + "/api/secure/rules/{}".format(id), data=json.dumps(rule), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def delete_rule(self, id): - '''**Description** + """**Description** Delete the rule with given id. **Arguments** @@ -130,12 +120,12 @@ def delete_rule(self, id): **Success Return Value** A JSON object representing the rule. - ''' - res = self.http.delete(self.url + '/api/secure/rules/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.delete(self.url + "/api/secure/rules/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def list_falco_macros(self): - '''**Description** + """**Description** Returns the list of macros in the system. These are grouped by name and do not necessarily represent individual macro objects, as multiple macros can have the same name. @@ -145,12 +135,12 @@ def list_falco_macros(self): **Success Return Value** A JSON object representing the list of falco macros. - ''' - res = self.http.get(self.url + '/api/secure/falco/macros/summaries', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/secure/falco/macros/summaries", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_falco_macros_group(self, name): - '''**Description** + """**Description** Retrieve a group of all falco groups having the given name. This is used to show how a base macro is modified by later macrosthat override/append to the macro. @@ -160,13 +150,14 @@ def get_falco_macros_group(self, name): **Success Return Value** A JSON object representing the list of falco macros. - ''' - res = self.http.get(self.url + '/api/secure/falco/macros/groups?name={}'.format(name), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.get( + self.url + "/api/secure/falco/macros/groups?name={}".format(name), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def get_falco_macro_id(self, id): - '''**Description** + """**Description** Retrieve info about a single falco macro **Arguments** @@ -174,13 +165,12 @@ def get_falco_macro_id(self, id): **Success Return Value** A JSON object representing the falco macro. - ''' - res = self.http.get(self.url + '/api/secure/falco/macros/{}'.format(id), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/secure/falco/macros/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def add_falco_macro(self, name, condition, append=False): - '''**Description** + """**Description** Create a new macro **Arguments** @@ -189,21 +179,15 @@ def add_falco_macro(self, name, condition, append=False): **Success Return Value** A JSON object representing the falco macro. - ''' - macro = { - "name": name, - "condition": { - "components": [], - "condition": condition - }, - "append": append - } - res = self.http.post(self.url + '/api/secure/falco/macros', data=json.dumps(macro), headers=self.hdrs, - verify=self.ssl_verify) + """ + macro = {"name": name, "condition": {"components": [], "condition": condition}, "append": append} + res = self.http.post( + self.url + "/api/secure/falco/macros", data=json.dumps(macro), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def update_falco_macro(self, id, condition): - '''**Description** + """**Description** Update info associated with a macro **Arguments** @@ -212,19 +196,20 @@ def update_falco_macro(self, id, condition): **Success Return Value** A JSON object representing the macro. - ''' + """ ok, res = self.get_falco_macro_id(id) if not ok: return [False, res] macro = res - macro['condition']['condition'] = condition + macro["condition"]["condition"] = condition - res = self.http.put(self.url + '/api/secure/falco/macros/{}'.format(id), data=json.dumps(macro), - headers=self.hdrs, verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/secure/falco/macros/{}".format(id), data=json.dumps(macro), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def delete_falco_macro(self, id): - '''**Description** + """**Description** Delete the macro with given id. **Arguments** @@ -232,13 +217,12 @@ def delete_falco_macro(self, id): **Success Return Value** A JSON object representing the macro. - ''' - res = self.http.delete(self.url + '/api/secure/falco/macros/{}'.format(id), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.delete(self.url + "/api/secure/falco/macros/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def list_falco_lists(self): - '''**Description** + """**Description** Returns the list of falco lists in the system. These are grouped by name and do not necessarily represent individual falco list objects, as multiple falco lists can have the same name. @@ -248,12 +232,12 @@ def list_falco_lists(self): **Success Return Value** A JSON object representing the list of falco lists. - ''' - res = self.http.get(self.url + '/api/secure/falco/lists/summaries', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/secure/falco/lists/summaries", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_falco_lists_group(self, name): - '''**Description** + """**Description** Retrieve a group of all falco lists having the given name. This is used to show how a base list is modified by later lists that override/append to the list. @@ -263,13 +247,14 @@ def get_falco_lists_group(self, name): **Success Return Value** A JSON object representing the list of falco lists. - ''' - res = self.http.get(self.url + '/api/secure/falco/lists/groups?name={}'.format(name), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.get( + self.url + "/api/secure/falco/lists/groups?name={}".format(name), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def get_falco_list_id(self, id): - '''**Description** + """**Description** Retrieve info about a single falco list **Arguments** @@ -277,13 +262,12 @@ def get_falco_list_id(self, id): **Success Return Value** A JSON object representing the falco list. - ''' - res = self.http.get(self.url + '/api/secure/falco/lists/{}'.format(id), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/secure/falco/lists/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def add_falco_list(self, name, items, append=False): - '''**Description** + """**Description** Create a new list **Arguments** @@ -292,20 +276,15 @@ def add_falco_list(self, name, items, append=False): **Success Return Value** A JSON object representing the falco list. - ''' - flist = { - "name": name, - "items": { - "items": items - }, - "append": append - } - res = self.http.post(self.url + '/api/secure/falco/lists', data=json.dumps(flist), headers=self.hdrs, - verify=self.ssl_verify) + """ + flist = {"name": name, "items": {"items": items}, "append": append} + res = self.http.post( + self.url + "/api/secure/falco/lists", data=json.dumps(flist), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def update_falco_list(self, id, items): - '''**Description** + """**Description** Update info associated with a list **Arguments** @@ -314,19 +293,20 @@ def update_falco_list(self, id, items): **Success Return Value** A JSON object representing the list. - ''' + """ ok, res = self.get_falco_list_id(id) if not ok: return [False, res] flist = res - flist['items']['items'] = items + flist["items"]["items"] = items - res = self.http.put(self.url + '/api/secure/falco/lists/{}'.format(id), data=json.dumps(flist), - headers=self.hdrs, verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/secure/falco/lists/{}".format(id), data=json.dumps(flist), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def delete_falco_list(self, id): - '''**Description** + """**Description** Delete the list with given id. **Arguments** @@ -334,14 +314,14 @@ def delete_falco_list(self, id): **Success Return Value** A JSON object representing the list. - ''' - res = self.http.delete(self.url + '/api/secure/falco/lists/{}'.format(id), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.delete(self.url + "/api/secure/falco/lists/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) - def add_compliance_task(self, name, module_name='docker-bench-security', schedule='06:00:00Z/PT12H', scope=None, - enabled=True): - '''**Description** + def add_compliance_task( + self, name, module_name="docker-bench-security", schedule="06:00:00Z/PT12H", scope=None, enabled=True + ): + """**Description** Add a new compliance task. **Arguments** @@ -353,21 +333,13 @@ def add_compliance_task(self, name, module_name='docker-bench-security', schedul **Success Return Value** A JSON representation of the compliance task. - ''' - task = { - "id": None, - "name": name, - "moduleName": module_name, - "enabled": enabled, - "scope": scope, - "schedule": schedule - } - res = self.http.post(self.url + '/api/complianceTasks', data=json.dumps(task), headers=self.hdrs, - verify=self.ssl_verify) + """ + task = {"id": None, "name": name, "moduleName": module_name, "enabled": enabled, "scope": scope, "schedule": schedule} + res = self.http.post(self.url + "/api/complianceTasks", data=json.dumps(task), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def list_compliance_tasks(self): - '''**Description** + """**Description** Get the list of all compliance tasks. **Arguments** @@ -375,12 +347,12 @@ def list_compliance_tasks(self): **Success Return Value** A JSON list with the representation of each compliance task. - ''' - res = self.http.get(self.url + '/api/complianceTasks', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/complianceTasks", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_compliance_task(self, id): - '''**Description** + """**Description** Get a compliance task. **Arguments** @@ -388,12 +360,12 @@ def get_compliance_task(self, id): **Success Return Value** A JSON representation of the compliance task. - ''' - res = self.http.get(self.url + '/api/complianceTasks/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/complianceTasks/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def update_compliance_task(self, id, name=None, module_name=None, schedule=None, scope=None, enabled=None): - '''**Description** + """**Description** Update an existing compliance task. **Arguments** @@ -406,40 +378,34 @@ def update_compliance_task(self, id, name=None, module_name=None, schedule=None, **Success Return Value** A JSON representation of the compliance task. - ''' + """ ok, res = self.get_compliance_task(id) if not ok: return ok, res task = res - options = { - 'name': name, - 'moduleName': module_name, - 'schedule': schedule, - 'scope': scope, - 'enabled': enabled - } + options = {"name": name, "moduleName": module_name, "schedule": schedule, "scope": scope, "enabled": enabled} task.update({k: v for k, v in options.items() if v is not None}) - res = self.http.put(self.url + '/api/complianceTasks/{}'.format(id), data=json.dumps(task), headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/complianceTasks/{}".format(id), data=json.dumps(task), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def delete_compliance_task(self, id): - '''**Description** + """**Description** Delete the compliance task with the given id **Arguments** - id: the id of the compliance task to delete - ''' - res = self.http.delete(self.url + '/api/complianceTasks/{}'.format(id), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.delete(self.url + "/api/complianceTasks/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr return True, None def list_compliance_results(self, limit=50, direction=None, cursor=None, filter=""): - '''**Description** + """**Description** Get the list of all compliance tasks runs. **Arguments** @@ -450,18 +416,19 @@ def list_compliance_results(self, limit=50, direction=None, cursor=None, filter= **Success Return Value** A JSON list with the representation of each compliance task run. - ''' + """ url = "{url}/api/complianceResults?cursor{cursor}&filter={filter}&limit={limit}{direction}".format( url=self.url, limit=limit, direction="&direction=%s" % direction if direction else "", cursor="=%d" % cursor if cursor is not None else "", - filter=filter) + filter=filter, + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_compliance_results(self, id): - '''**Description** + """**Description** Retrieve the details for a specific compliance task run result. **Arguments** @@ -469,13 +436,12 @@ def get_compliance_results(self, id): **Success Return Value** A JSON representation of the compliance task run result. - ''' - res = self.http.get(self.url + '/api/complianceResults/{}'.format(id), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/complianceResults/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_compliance_results_csv(self, id): - '''**Description** + """**Description** Retrieve the details for a specific compliance task run result in csv. **Arguments** @@ -483,17 +449,17 @@ def get_compliance_results_csv(self, id): **Success Return Value** A CSV representation of the compliance task run result. - ''' - res = self.http.get(self.url + '/api/complianceResults/{}/csv'.format(id), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/complianceResults/{}/csv".format(id), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr return True, res.text - def list_commands_audit(self, from_sec=None, to_sec=None, scope_filter=None, command_filter=None, limit=100, - offset=0, metrics=[]): - '''**Description** + def list_commands_audit( + self, from_sec=None, to_sec=None, scope_filter=None, command_filter=None, limit=100, offset=0, metrics=[] + ): + """**Description** List the commands audit. **DEPRECATED**: Use sdcclient.secure.ActivityAuditClientV1 instead. This is maintained for old on-prem versions, but will be removed over time. @@ -508,7 +474,7 @@ def list_commands_audit(self, from_sec=None, to_sec=None, scope_filter=None, com **Success Return Value** A JSON representation of the commands audit. - ''' + """ if to_sec is None: to_sec = time.time() if from_sec is None: @@ -518,16 +484,17 @@ def list_commands_audit(self, from_sec=None, to_sec=None, scope_filter=None, com url=self.url, offset=offset, limit=limit, - frm=int(from_sec * 10 ** 6), - to=int(to_sec * 10 ** 6), + frm=int(from_sec * 10**6), + to=int(to_sec * 10**6), scope="&scopeFilter=" + scope_filter if scope_filter else "", commandFilter="&commandFilter=" + command_filter if command_filter else "", - metrics="&metrics=" + json.dumps(metrics) if metrics else "") + metrics="&metrics=" + json.dumps(metrics) if metrics else "", + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_command_audit(self, id, metrics=[]): - '''**Description** + """**Description** Get a command audit. **DEPRECATED**: Use sdcclient.secure.ActivityAuditClientV1 instead. This is maintained for old on-prem versions, but will be removed over time. @@ -537,17 +504,15 @@ def get_command_audit(self, id, metrics=[]): **Success Return Value** A JSON representation of the command audit. - ''' + """ url = "{url}/api/commands/{id}?from=0&to={to}{metrics}".format( - url=self.url, - id=id, - to=int(time.time() * 10 ** 6), - metrics="&metrics=" + json.dumps(metrics) if metrics else "") + url=self.url, id=id, to=int(time.time() * 10**6), metrics="&metrics=" + json.dumps(metrics) if metrics else "" + ) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def list_image_profiles(self): - '''**Description** + """**Description** List the current set of image profiles. **Arguments** @@ -556,16 +521,14 @@ def list_image_profiles(self): **Success Return Value** A JSON object containing the details of each profile. - ''' - url = "{url}/api/v1/profiling/profileGroups/0/profiles".format( - url=self.url - ) + """ + url = "{url}/api/v1/profiling/profileGroups/0/profiles".format(url=self.url) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_image_profile(self, profileId): - '''**Description** + """**Description** Find the image profile with a (partial) profile ID and return its json description. **Arguments** @@ -578,7 +541,7 @@ def get_image_profile(self, profileId): collision profiles is returned, and the full complete ID string is printed. In this case, it returns false. - ''' + """ # RETRIEVE ALL THE IMAGE PROFILES ok, image_profiles = self.list_image_profiles() @@ -586,7 +549,7 @@ def get_image_profile(self, profileId): if not ok: return [False, self.lasterr] - ''' + """ The content of the json stored in the image_profiles dictionary: { @@ -597,9 +560,9 @@ def get_image_profile(self, profileId): ... ] } - ''' + """ - matched_profiles = self.__get_matched_profileIDs(profileId, image_profiles['profiles']) + matched_profiles = self.__get_matched_profileIDs(profileId, image_profiles["profiles"]) # Profile ID not found if len(matched_profiles) == 0: @@ -608,10 +571,7 @@ def get_image_profile(self, profileId): # Principal workflow. Profile ID found elif len(matched_profiles) == 1: # Matched id. Return information - url = "{url}/api/v1/profiling/profiles/{profileId}".format( - url=self.url, - profileId=matched_profiles[0]['profileId'] - ) + url = "{url}/api/v1/profiling/profiles/{profileId}".format(url=self.url, profileId=matched_profiles[0]["profileId"]) res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -621,7 +581,7 @@ def get_image_profile(self, profileId): return [False, matched_profiles] def __get_matched_profileIDs(self, requested_profile, profile_list): - ''' + """ **Description** Helper function for retrieving the list of matching profile @@ -705,17 +665,16 @@ def __get_matched_profileIDs(self, requested_profile, profile_list): }, ... ] - ''' + """ matched_profiles = [] request_len = len(requested_profile) for profile in profile_list: - # get the length of the substring to match str_len_match = min(len(profile), request_len) - if profile['profileId'][0:str_len_match] == requested_profile[0:str_len_match]: + if profile["profileId"][0:str_len_match] == requested_profile[0:str_len_match]: matched_profiles.append(profile) return matched_profiles diff --git a/sdcclient/_secure_v1.py b/sdcclient/_secure_v1.py index aeba49dd..906472cd 100644 --- a/sdcclient/_secure_v1.py +++ b/sdcclient/_secure_v1.py @@ -4,12 +4,12 @@ class SdSecureClientV1(SdSecureClient): - '''**Description** - Handles policies version 1 (ie. up to August 2019). For later Sysdig Secure versions, please use :class:`~SdSecureClient` instead. - ''' + """**Description** + Handles policies version 1 (ie. up to August 2019). For later Sysdig Secure versions, please use :class:`~SdSecureClient` instead. + """ def create_default_policies(self): - '''**Description** + """**Description** Create a set of default policies using the current system falco rules file as a reference. For every falco rule in the system falco rules file, one policy will be created. The policy will take the name and description from the name and description of the corresponding falco rule. If a policy already exists with the same name, no policy is added or modified. Existing @@ -20,12 +20,12 @@ def create_default_policies(self): **Success Return Value** JSON containing details on any new policies that were added. - ''' - res = self.http.post(self.url + '/api/policies/createDefault', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.post(self.url + "/api/policies/createDefault", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def delete_all_policies(self): - '''**Description** + """**Description** Delete all existing policies. The falco rules file is unchanged. **Arguments** @@ -33,15 +33,15 @@ def delete_all_policies(self): **Success Return Value** The string "Policies Deleted" - ''' - res = self.http.post(self.url + '/api/policies/deleteAll', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.post(self.url + "/api/policies/deleteAll", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, "Policies Deleted"] def list_policies(self): - '''**Description** + """**Description** List the current set of policies. **Arguments** @@ -49,12 +49,12 @@ def list_policies(self): **Success Return Value** A JSON object containing the number and details of each policy. - ''' - res = self.http.get(self.url + '/api/policies', headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/policies", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_policy_priorities(self): - '''**Description** + """**Description** Get a list of policy ids in the order they will be evaluated. **Arguments** @@ -62,13 +62,13 @@ def get_policy_priorities(self): **Success Return Value** A JSON object representing the list of policy ids. - ''' + """ - res = self.http.get(self.url + '/api/policies/priorities', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/policies/priorities", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def set_policy_priorities(self, priorities_json): - '''**Description** + """**Description** Change the policy evaluation order **Arguments** @@ -76,18 +76,20 @@ def set_policy_priorities(self, priorities_json): **Success Return Value** A JSON object representing the updated list of policy ids. - ''' + """ try: json.loads(priorities_json) except Exception as e: return [False, "priorities json is not valid json: {}".format(str(e))] - res = self.http.put(self.url + '/api/policies/priorities', headers=self.hdrs, data=priorities_json, verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/policies/priorities", headers=self.hdrs, data=priorities_json, verify=self.ssl_verify + ) return self._request_result(res) def get_policy(self, name): - '''**Description** + """**Description** Find the policy with name and return its json description. **Arguments** @@ -96,7 +98,7 @@ def get_policy(self, name): **Success Return Value** A JSON object containing the description of the policy. If there is no policy with the given name, returns False. - ''' + """ ok, res = self.list_policies() if not ok: return [False, res] @@ -111,7 +113,7 @@ def get_policy(self, name): return [False, "No policy with name {}".format(name)] def get_policy_id(self, id): - '''**Description** + """**Description** Find the policy with id and return its json description. **Arguments** @@ -120,12 +122,12 @@ def get_policy_id(self, id): **Success Return Value** A JSON object containing the description of the policy. If there is no policy with the given name, returns False. - ''' - res = self.http.get(self.url + '/api/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.get(self.url + "/api/policies/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def add_policy(self, policy_json): - '''**Description** + """**Description** Add a new policy using the provided json. **Arguments** @@ -133,18 +135,18 @@ def add_policy(self, policy_json): **Success Return Value** The string "OK" - ''' + """ try: policy_obj = json.loads(policy_json) except Exception as e: return [False, "policy json is not valid json: {}".format(str(e))] body = {"policy": policy_obj} - res = self.http.post(self.url + '/api/policies', headers=self.hdrs, data=json.dumps(body), verify=self.ssl_verify) + res = self.http.post(self.url + "/api/policies", headers=self.hdrs, data=json.dumps(body), verify=self.ssl_verify) return self._request_result(res) def update_policy(self, policy_json): - '''**Description** + """**Description** Update an existing policy using the provided json. The 'id' field from the policy is used to determine which policy to update. @@ -153,7 +155,7 @@ def update_policy(self, policy_json): **Success Return Value** The string "OK" - ''' + """ try: policy_obj = json.loads(policy_json) @@ -165,11 +167,16 @@ def update_policy(self, policy_json): body = {"policy": policy_obj} - res = self.http.put(self.url + '/api/policies/{}'.format(policy_obj["id"]), headers=self.hdrs, data=json.dumps(body), verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/policies/{}".format(policy_obj["id"]), + headers=self.hdrs, + data=json.dumps(body), + verify=self.ssl_verify, + ) return self._request_result(res) def delete_policy_name(self, name): - '''**Description** + """**Description** Delete the policy with the given name. **Arguments** @@ -177,7 +184,7 @@ def delete_policy_name(self, name): **Success Return Value** The JSON object representing the now-deleted policy. - ''' + """ ok, res = self.list_policies() if not ok: return [False, res] @@ -190,7 +197,7 @@ def delete_policy_name(self, name): return [False, "No policy with name {}".format(name)] def delete_policy_id(self, id): - '''**Description** + """**Description** Delete the policy with the given id **Arguments** @@ -198,6 +205,6 @@ def delete_policy_id(self, id): **Success Return Value** The JSON object representing the now-deleted policy. - ''' - res = self.http.delete(self.url + '/api/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + """ + res = self.http.delete(self.url + "/api/policies/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) diff --git a/sdcclient/ibm_auth_helper.py b/sdcclient/ibm_auth_helper.py index 25db43fe..7aca4429 100644 --- a/sdcclient/ibm_auth_helper.py +++ b/sdcclient/ibm_auth_helper.py @@ -2,7 +2,7 @@ class IbmAuthHelper: - '''Authenticate with IBM Cloud IAM. + """Authenticate with IBM Cloud IAM. **Arguments** **url**: Sysdig endpoint URL that should point to IBM Cloud @@ -11,41 +11,30 @@ class IbmAuthHelper: **Returns** A dictionary that will authenticate you with the IBM Cloud IAM API. - ''' + """ @staticmethod def get_headers(url, apikey, guid): iam_token = IbmAuthHelper.__get_iam_token(url, apikey) - return { - 'Authorization': 'Bearer ' + iam_token, - 'IBMInstanceID': guid - } + return {"Authorization": "Bearer " + iam_token, "IBMInstanceID": guid} @staticmethod def __get_iam_endpoint(url): - IAM_ENDPOINT = { - 'stage': 'iam.test.cloud.ibm.com', - 'prod': 'iam.cloud.ibm.com' - } - if '.test.' in url: - return IAM_ENDPOINT['stage'] + IAM_ENDPOINT = {"stage": "iam.test.cloud.ibm.com", "prod": "iam.cloud.ibm.com"} + if ".test." in url: + return IAM_ENDPOINT["stage"] else: - return IAM_ENDPOINT['prod'] + return IAM_ENDPOINT["prod"] @staticmethod def __get_iam_token(url, apikey): env_url = IbmAuthHelper.__get_iam_endpoint(url) response = requests.post( - 'https://' + env_url + '/identity/token', - data={ - 'grant_type': 'urn:ibm:params:oauth:grant-type:apikey', - 'response_type': 'cloud_iam', - 'apikey': apikey - }, - headers={ - 'Accept': 'application/json' - }) + "https://" + env_url + "/identity/token", + data={"grant_type": "urn:ibm:params:oauth:grant-type:apikey", "response_type": "cloud_iam", "apikey": apikey}, + headers={"Accept": "application/json"}, + ) if response.status_code == 200: - return response.json()['access_token'] + return response.json()["access_token"] else: response.raise_for_status() diff --git a/sdcclient/monitor/_dashboards_v2.py b/sdcclient/monitor/_dashboards_v2.py index 61fd9b7a..dbde75d0 100644 --- a/sdcclient/monitor/_dashboards_v2.py +++ b/sdcclient/monitor/_dashboards_v2.py @@ -7,16 +7,15 @@ class DashboardsClientV2(_SdcCommon): - def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://app.sysdigcloud.com", ssl_verify=True, custom_headers=None): super(DashboardsClientV2, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDC" - self._dashboards_api_version = 'v2' - self._dashboards_api_endpoint = '/api/{}/dashboards'.format(self._dashboards_api_version) - self._default_dashboards_api_endpoint = '/api/{}/defaultDashboards'.format(self._dashboards_api_version) + self._dashboards_api_version = "v2" + self._dashboards_api_endpoint = "/api/{}/dashboards".format(self._dashboards_api_version) + self._default_dashboards_api_endpoint = "/api/{}/defaultDashboards".format(self._dashboards_api_version) def get_views_list(self): - res = self.http.get(self.url + self._default_dashboards_api_endpoint, headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.get(self.url + self._default_dashboards_api_endpoint, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()] @@ -26,24 +25,25 @@ def get_view(self, name): if gvres[0] is False: return gvres - vlist = gvres[1]['defaultDashboards'] + vlist = gvres[1]["defaultDashboards"] id = None for v in vlist: - if v['name'] == name: - id = v['id'] + if v["name"] == name: + id = v["id"] break if not id: - return [False, 'view ' + name + ' not found'] + return [False, "view " + name + " not found"] - res = self.http.get(self.url + self._default_dashboards_api_endpoint + '/' + id, headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.get( + self.url + self._default_dashboards_api_endpoint + "/" + id, headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def get_dashboards(self): - '''**Description** + """**Description** Return the list of dashboards available under the given user account. This includes the dashboards created by the user and the ones shared with her by other users. **Success Return Value** @@ -51,12 +51,12 @@ def get_dashboards(self): **Example** `examples/list_dashboards.py `_ - ''' + """ res = self.http.get(self.url + self._dashboards_api_endpoint, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def update_dashboard(self, dashboard_data): - '''**Description** + """**Description** Updates dashboard with provided in data. Please note that the dictionary will require a valid ID and version field to work as expected. **Success Return Value** @@ -64,13 +64,17 @@ def update_dashboard(self, dashboard_data): **Example** `examples/dashboard_basic_crud.py `_ - ''' - res = self.http.put(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_data['id']), - headers=self.hdrs, verify=self.ssl_verify, data=json.dumps({'dashboard': dashboard_data})) + """ + res = self.http.put( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard_data["id"]), + headers=self.hdrs, + verify=self.ssl_verify, + data=json.dumps({"dashboard": dashboard_data}), + ) return self._request_result(res) def find_dashboard_by(self, name=None): - '''**Description** + """**Description** Finds dashboards with the specified name. You can then delete the dashboard (with :func:`~SdcClient.delete_dashboard`) or edit panels (with :func:`~SdcClient.add_dashboard_panel` and :func:`~SdcClient.remove_dashboard_panel`) **Arguments** @@ -81,35 +85,39 @@ def find_dashboard_by(self, name=None): **Example** `examples/dashboard.py `_ - ''' + """ res = self.get_dashboards() if res[0] is False: return res else: + def filter_fn(configuration): - return configuration['name'] == name + return configuration["name"] == name def create_item(configuration): - return {'dashboard': configuration} + return {"dashboard": configuration} - dashboards = list(map(create_item, list(filter(filter_fn, res[1]['dashboards'])))) + dashboards = list(map(create_item, list(filter(filter_fn, res[1]["dashboards"])))) return [True, dashboards] def create_dashboard_with_configuration(self, configuration): # Remove id and version properties if already set configuration_clone = copy.deepcopy(configuration) - if 'id' in configuration_clone: - del configuration_clone['id'] - if 'version' in configuration_clone: - del configuration_clone['version'] - - res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, - data=json.dumps({'dashboard': configuration_clone}), - verify=self.ssl_verify) + if "id" in configuration_clone: + del configuration_clone["id"] + if "version" in configuration_clone: + del configuration_clone["version"] + + res = self.http.post( + self.url + self._dashboards_api_endpoint, + headers=self.hdrs, + data=json.dumps({"dashboard": configuration_clone}), + verify=self.ssl_verify, + ) return self._request_result(res) def create_dashboard(self, name): - ''' + """ **Description** Creates an empty dashboard. You can then add panels by using ``add_dashboard_panel``. @@ -121,27 +129,29 @@ def create_dashboard(self, name): **Example** `examples/dashboard.py `_ - ''' + """ dashboard_configuration = { - 'name': name, - 'schema': 2, - 'widgets': [], - 'eventsOverlaySettings': { - 'filterNotificationsUserInputFilter': '' - } + "name": name, + "schema": 2, + "widgets": [], + "eventsOverlaySettings": {"filterNotificationsUserInputFilter": ""}, } # # Create the new dashboard # - res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, - data=json.dumps({'dashboard': dashboard_configuration}), - verify=self.ssl_verify) + res = self.http.post( + self.url + self._dashboards_api_endpoint, + headers=self.hdrs, + data=json.dumps({"dashboard": dashboard_configuration}), + verify=self.ssl_verify, + ) return self._request_result(res) # TODO COVER - def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, sort_direction='desc', limit=None, - layout=None): + def add_dashboard_panel( + self, dashboard, name, panel_type, metrics, scope=None, sort_direction="desc", limit=None, layout=None + ): """**Description** Adds a panel to the dashboard. A panel can be a time series, or a top chart (i.e. bar chart), or a number panel. @@ -165,19 +175,14 @@ def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, `examples/dashboard.py `_ """ panel_configuration = { - 'name': name, - 'showAs': None, - 'metrics': [], - 'gridConfiguration': { - 'col': 1, - 'row': 1, - 'size_x': 12, - 'size_y': 6 - }, - 'customDisplayOptions': {} + "name": name, + "showAs": None, + "metrics": [], + "gridConfiguration": {"col": 1, "row": 1, "size_x": 12, "size_y": 6}, + "customDisplayOptions": {}, } - if panel_type == 'timeSeries': + if panel_type == "timeSeries": # # In case of a time series, the current dashboard implementation # requires the timestamp to be explicitly specified as "key". @@ -186,7 +191,7 @@ def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, # specify time window and sampling) # metrics = copy.copy(metrics) - metrics.insert(0, {'id': 'timestamp'}) + metrics.insert(0, {"id": "timestamp"}) # # Convert list of metrics to format used by Sysdig Monitor @@ -195,79 +200,62 @@ def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, k_count = 0 v_count = 0 for i, metric in enumerate(metrics): - property_name = 'v' if 'aggregations' in metric else 'k' + property_name = "v" if "aggregations" in metric else "k" - if property_name == 'k': + if property_name == "k": i = k_count k_count += 1 else: i = v_count v_count += 1 - property_names[metric['id']] = property_name + str(i) - - panel_configuration['metrics'].append({ - 'id': metric['id'], - 'timeAggregation': metric['aggregations']['time'] if 'aggregations' in metric else None, - 'groupAggregation': metric['aggregations']['group'] if 'aggregations' in metric else None, - 'propertyName': property_name + str(i) - }) + property_names[metric["id"]] = property_name + str(i) + + panel_configuration["metrics"].append( + { + "id": metric["id"], + "timeAggregation": metric["aggregations"]["time"] if "aggregations" in metric else None, + "groupAggregation": metric["aggregations"]["group"] if "aggregations" in metric else None, + "propertyName": property_name + str(i), + } + ) - panel_configuration['scope'] = scope + panel_configuration["scope"] = scope # if chart scope is equal to dashboard scope, set it as non override - panel_configuration['overrideScope'] = ('scope' in dashboard and dashboard['scope'] != scope) or \ - ('scope' not in dashboard and scope is not None) - - if 'custom_display_options' not in panel_configuration: - panel_configuration['custom_display_options'] = { - 'valueLimit': { - 'count': 10, - 'direction': 'desc' - }, - 'histogram': { - 'numberOfBuckets': 10 - }, - 'yAxisScale': 'linear', - 'yAxisLeftDomain': { - 'from': 0, - 'to': None - }, - 'yAxisRightDomain': { - 'from': 0, - 'to': None - }, - 'xAxis': { - 'from': 0, - 'to': None - } + panel_configuration["overrideScope"] = ("scope" in dashboard and dashboard["scope"] != scope) or ( + "scope" not in dashboard and scope is not None + ) + + if "custom_display_options" not in panel_configuration: + panel_configuration["custom_display_options"] = { + "valueLimit": {"count": 10, "direction": "desc"}, + "histogram": {"numberOfBuckets": 10}, + "yAxisScale": "linear", + "yAxisLeftDomain": {"from": 0, "to": None}, + "yAxisRightDomain": {"from": 0, "to": None}, + "xAxis": {"from": 0, "to": None}, } # # Configure panel type # - if panel_type == 'timeSeries': - panel_configuration['showAs'] = 'timeSeries' + if panel_type == "timeSeries": + panel_configuration["showAs"] = "timeSeries" if limit is not None: - panel_configuration['custom_display_options']['valueLimit'] = { - 'count': limit, - 'direction': 'desc' - } + panel_configuration["custom_display_options"]["valueLimit"] = {"count": limit, "direction": "desc"} - elif panel_type == 'number': - panel_configuration['showAs'] = 'summary' - elif panel_type == 'top': - panel_configuration['showAs'] = 'top' + elif panel_type == "number": + panel_configuration["showAs"] = "summary" + elif panel_type == "top": + panel_configuration["showAs"] = "top" if limit is not None: - panel_configuration['custom_display_options']['valueLimit'] = { - 'count': limit, - 'direction': sort_direction - } + panel_configuration["custom_display_options"]["valueLimit"] = {"count": limit, "direction": sort_direction} # # Configure layout # if layout is not None: - panel_configuration['gridConfiguration'] = layout + panel_configuration["gridConfiguration"] = layout # # Clone existing dashboard... @@ -277,19 +265,22 @@ def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, # # ... and add the new panel # - dashboard_configuration['widgets'].append(panel_configuration) + dashboard_configuration["widgets"].append(panel_configuration) # # Update dashboard # - res = self.http.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, - data=json.dumps({'dashboard': dashboard_configuration}), - verify=self.ssl_verify) + res = self.http.put( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard["id"]), + headers=self.hdrs, + data=json.dumps({"dashboard": dashboard_configuration}), + verify=self.ssl_verify, + ) return self._request_result(res) # TODO COVER def remove_dashboard_panel(self, dashboard, panel_name): - '''**Description** + """**Description** Removes a panel from the dashboard. The panel to remove is identified by the specified ``name``. **Arguments** @@ -300,7 +291,7 @@ def remove_dashboard_panel(self, dashboard, panel_name): **Example** `examples/dashboard.py `_ - ''' + """ # # Clone existing dashboard... # @@ -310,90 +301,103 @@ def remove_dashboard_panel(self, dashboard, panel_name): # ... find the panel # def filter_fn(panel): - return panel['name'] == panel_name + return panel["name"] == panel_name - panels = list(filter(filter_fn, dashboard_configuration['widgets'])) + panels = list(filter(filter_fn, dashboard_configuration["widgets"])) if len(panels) > 0: # # ... and remove it # for panel in panels: - dashboard_configuration['widgets'].remove(panel) + dashboard_configuration["widgets"].remove(panel) # # Update dashboard # - res = self.http.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), - headers=self.hdrs, - data=json.dumps({'dashboard': dashboard_configuration}), - verify=self.ssl_verify) + res = self.http.put( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard["id"]), + headers=self.hdrs, + data=json.dumps({"dashboard": dashboard_configuration}), + verify=self.ssl_verify, + ) return self._request_result(res) else: - return [False, 'Not found'] + return [False, "Not found"] def create_dashboard_from_template(self, dashboard_name, template, scope, shared=False, public=False): if scope is not None: if not isinstance(scope, str): - return [False, 'Invalid scope format: Expected a string'] + return [False, "Invalid scope format: Expected a string"] # # Clean up the dashboard we retireved so it's ready to be pushed # - template['id'] = None - template['version'] = None - template['schema'] = 2 - template['name'] = dashboard_name - template['shared'] = shared - template['public'] = public - template['publicToken'] = None + template["id"] = None + template["version"] = None + template["schema"] = 2 + template["name"] = dashboard_name + template["shared"] = shared + template["public"] = public + template["publicToken"] = None # default dashboards don't have eventsOverlaySettings property # make sure to add the default set if the template doesn't include it - if 'eventsOverlaySettings' not in template or not template['eventsOverlaySettings']: - template['eventsOverlaySettings'] = { - 'filterNotificationsUserInputFilter': '' - } + if "eventsOverlaySettings" not in template or not template["eventsOverlaySettings"]: + template["eventsOverlaySettings"] = {"filterNotificationsUserInputFilter": ""} # set dashboard scope to the specific parameter scopeOk, scopeRes = convert_scope_string_to_expression(scope) if not scopeOk: return scopeOk, scopeRes if scopeRes: - template['scopeExpressionList'] = list(map( - lambda ex: {'operand': ex['operand'], 'operator': ex['operator'], 'value': ex['value'], - 'displayName': '', 'variable': False}, scopeRes)) + template["scopeExpressionList"] = list( + map( + lambda ex: { + "operand": ex["operand"], + "operator": ex["operator"], + "value": ex["value"], + "displayName": "", + "variable": False, + }, + scopeRes, + ) + ) else: - template['scopeExpressionList'] = None + template["scopeExpressionList"] = None # NOTE: Individual panels might override the dashboard scope, the override will NOT be reset - if 'widgets' in template and template['widgets'] is not None: - for chart in template['widgets']: - if 'overrideScope' not in chart: - chart['overrideScope'] = False + if "widgets" in template and template["widgets"] is not None: + for chart in template["widgets"]: + if "overrideScope" not in chart: + chart["overrideScope"] = False - if not chart['overrideScope']: + if not chart["overrideScope"]: # patch frontend bug to hide scope override warning even when it's not really overridden - chart['scope'] = scope + chart["scope"] = scope - if chart['showAs'] != 'map': + if chart["showAs"] != "map": # if chart scope is equal to dashboard scope, set it as non override - chart_scope = chart['scope'] if 'scope' in chart else None - chart['overrideScope'] = chart_scope != scope + chart_scope = chart["scope"] if "scope" in chart else None + chart["overrideScope"] = chart_scope != scope else: # topology panels must override the scope - chart['overrideScope'] = True + chart["overrideScope"] = True # # Create the new dashboard # - res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, - data=json.dumps({'dashboard': template}), verify=self.ssl_verify) + res = self.http.post( + self.url + self._dashboards_api_endpoint, + headers=self.hdrs, + data=json.dumps({"dashboard": template}), + verify=self.ssl_verify, + ) return self._request_result(res) def create_dashboard_from_view(self, newdashname, viewname, filter, shared=False, public=False): - '''**Description** + """**Description** Create a new dasboard using one of the Sysdig Monitor views as a template. You will be able to define the scope of the new dashboard. **Arguments** @@ -408,7 +412,7 @@ def create_dashboard_from_view(self, newdashname, viewname, filter, shared=False **Example** `examples/create_dashboard.py `_ - ''' + """ # # Find our template view # @@ -416,10 +420,10 @@ def create_dashboard_from_view(self, newdashname, viewname, filter, shared=False if not ok: return ok, gvres - view = gvres['defaultDashboard'] + view = gvres["defaultDashboard"] - view['timeMode'] = {'mode': 1} - view['time'] = {'last': 2 * 60 * 60 * 1000000, 'sampling': 2 * 60 * 60 * 1000000} + view["timeMode"] = {"mode": 1} + view["time"] = {"last": 2 * 60 * 60 * 1000000, "sampling": 2 * 60 * 60 * 1000000} # # Create the new dashboard @@ -427,7 +431,7 @@ def create_dashboard_from_view(self, newdashname, viewname, filter, shared=False return self.create_dashboard_from_template(newdashname, view, filter, shared, public) def get_dashboard(self, dashboard_id): - '''**Description** + """**Description** Return a dashboard with the pased in ID. This includes the dashboards created by the user and the ones shared with them by other users. **Success Return Value** @@ -435,13 +439,14 @@ def get_dashboard(self, dashboard_id): **Example** `examples/dashboard_basic_crud.py `_ - ''' - res = self.http.get(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.get( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def create_dashboard_from_dashboard(self, newdashname, templatename, filter, shared=False, public=False): - '''**Description** + """**Description** Create a new dasboard using one of the existing dashboards as a template. You will be able to define the scope of the new dasboard. **Arguments** @@ -456,7 +461,7 @@ def create_dashboard_from_dashboard(self, newdashname, templatename, filter, sha **Example** `examples/create_dashboard.py `_ - ''' + """ # # Get the list of dashboards from the server # @@ -471,13 +476,13 @@ def create_dashboard_from_dashboard(self, newdashname, templatename, filter, sha # dboard = None - for db in j['dashboards']: - if db['name'] == templatename: + for db in j["dashboards"]: + if db["name"] == templatename: dboard = db break if dboard is None: - self.lasterr = 'can\'t find dashboard ' + templatename + ' to use as a template' + self.lasterr = "can't find dashboard " + templatename + " to use as a template" return [False, self.lasterr] # @@ -486,7 +491,7 @@ def create_dashboard_from_dashboard(self, newdashname, templatename, filter, sha return self.create_dashboard_from_template(newdashname, dboard, filter, shared, public) def create_dashboard_from_file(self, dashboard_name, filename, filter, shared=False, public=False): - ''' + """ **Description** Create a new dasboard using a dashboard template saved to disk. See :func:`~SdcClient.save_dashboard_to_file` to use the file to create a dashboard (usefl to create and restore backups). @@ -508,7 +513,7 @@ def create_dashboard_from_file(self, dashboard_name, filename, filter, shared=Fa **Example** `examples/dashboard_save_load.py `_ - ''' + """ # # Load the Dashboard # @@ -518,21 +523,18 @@ def create_dashboard_from_file(self, dashboard_name, filename, filter, shared=Fa # # Handle old files # - if 'dashboard' not in loaded_object: - loaded_object = { - 'version': 'v1', - 'dashboard': loaded_object - } + if "dashboard" not in loaded_object: + loaded_object = {"version": "v1", "dashboard": loaded_object} - dashboard = loaded_object['dashboard'] + dashboard = loaded_object["dashboard"] - if loaded_object['version'] != self._dashboards_api_version: + if loaded_object["version"] != self._dashboards_api_version: # # Convert the dashboard (if possible) # - conversion_result, dashboard = convert_dashboard_between_versions(dashboard, - loaded_object['version'], - self._dashboards_api_version) + conversion_result, dashboard = convert_dashboard_between_versions( + dashboard, loaded_object["version"], self._dashboards_api_version + ) if not conversion_result: return conversion_result, dashboard @@ -543,7 +545,7 @@ def create_dashboard_from_file(self, dashboard_name, filename, filter, shared=Fa return self.create_dashboard_from_template(dashboard_name, dashboard, filter, shared, public) def save_dashboard_to_file(self, dashboard, filename): - ''' + """ **Description** Save a dashboard to disk. See :func:`~SdcClient.create_dashboard_from_file` to use the file to create a dashboard (usefl to create and restore backups). @@ -557,15 +559,12 @@ def save_dashboard_to_file(self, dashboard, filename): **Example** `examples/dashboard_save_load.py `_ - ''' - with open(filename, 'w') as outf: - json.dump({ - 'version': self._dashboards_api_version, - 'dashboard': dashboard - }, outf) + """ + with open(filename, "w") as outf: + json.dump({"version": self._dashboards_api_version, "dashboard": dashboard}, outf) def delete_dashboard(self, dashboard): - '''**Description** + """**Description** Deletes a dashboard. **Arguments** @@ -576,12 +575,13 @@ def delete_dashboard(self, dashboard): **Example** `examples/delete_dashboard.py `_ - ''' - if 'id' not in dashboard: + """ + if "id" not in dashboard: return [False, "Invalid dashboard format"] - res = self.http.delete(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.delete( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard["id"]), headers=self.hdrs, verify=self.ssl_verify + ) if not self._checkResponse(res): return [False, self.lasterr] diff --git a/sdcclient/monitor/_dashboards_v3.py b/sdcclient/monitor/_dashboards_v3.py index b690f4d3..1088107e 100644 --- a/sdcclient/monitor/_dashboards_v3.py +++ b/sdcclient/monitor/_dashboards_v3.py @@ -2,24 +2,22 @@ import json from sdcclient._common import _SdcCommon -from sdcclient.monitor.dashboard_converters import convert_dashboard_between_versions, \ - convert_scope_string_to_expression +from sdcclient.monitor.dashboard_converters import convert_dashboard_between_versions, convert_scope_string_to_expression PANEL_VISUALIZATION_TIMECHART = "advancedTimechart" PANEL_VISUALIZATION_NUMBER = "advancedNumber" class DashboardsClientV3(_SdcCommon): - def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://app.sysdigcloud.com", ssl_verify=True, custom_headers=None): super(DashboardsClientV3, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDC" - self._dashboards_api_version = 'v3' - self._dashboards_api_endpoint = '/api/{}/dashboards'.format(self._dashboards_api_version) - self._default_dashboards_api_endpoint = '/api/{}/dashboards/templates'.format(self._dashboards_api_version) + self._dashboards_api_version = "v3" + self._dashboards_api_endpoint = "/api/{}/dashboards".format(self._dashboards_api_version) + self._default_dashboards_api_endpoint = "/api/{}/dashboards/templates".format(self._dashboards_api_version) def get_views_list(self): - res = self.http.get(self.url + self._default_dashboards_api_endpoint, headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.get(self.url + self._default_dashboards_api_endpoint, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()] @@ -29,20 +27,21 @@ def get_view(self, name): if gvres[0] is False: return gvres - vlist = gvres[1]['dashboardTemplates'] + vlist = gvres[1]["dashboardTemplates"] id = None for v in vlist: - if v['name'] == name: - id = v['dashboardId'] + if v["name"] == name: + id = v["dashboardId"] break if not id: - return [False, 'view ' + name + ' not found'] + return [False, "view " + name + " not found"] - res = self.http.get(self.url + self._default_dashboards_api_endpoint + '/' + id, headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.get( + self.url + self._default_dashboards_api_endpoint + "/" + id, headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def get_dashboards(self, light=True): @@ -69,16 +68,12 @@ def get_dashboards(self, light=True): >>> for dashboard in res["dashboards"]: >>> print(dashboard["name"]) """ - params = { - "light": "true" if light else "false" - } - res = self.http.get(self.url + self._dashboards_api_endpoint, params=params, - headers=self.hdrs, - verify=self.ssl_verify) + params = {"light": "true" if light else "false"} + res = self.http.get(self.url + self._dashboards_api_endpoint, params=params, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def update_dashboard(self, dashboard_data): - '''**Description** + """**Description** Updates dashboard with provided in data. Please note that the dictionary will require a valid ID and version field to work as expected. **Success Return Value** @@ -86,13 +81,17 @@ def update_dashboard(self, dashboard_data): **Example** `examples/dashboard_basic_crud.py `_ - ''' - res = self.http.put(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_data['id']), - headers=self.hdrs, verify=self.ssl_verify, data=json.dumps({'dashboard': dashboard_data})) + """ + res = self.http.put( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard_data["id"]), + headers=self.hdrs, + verify=self.ssl_verify, + data=json.dumps({"dashboard": dashboard_data}), + ) return self._request_result(res) def find_dashboard_by(self, name=None): - '''**Description** + """**Description** Finds dashboards with the specified name. You can then delete the dashboard (with :func:`~SdcClient.delete_dashboard`) or edit panels (with :func:`~SdcClient.add_dashboard_panel` and :func:`~SdcClient.remove_dashboard_panel`) **Arguments** @@ -103,35 +102,39 @@ def find_dashboard_by(self, name=None): **Example** `examples/dashboard.py `_ - ''' + """ res = self.get_dashboards() if res[0] is False: return res else: + def filter_fn(configuration): - return configuration['name'] == name + return configuration["name"] == name def create_item(configuration): - return {'dashboard': configuration} + return {"dashboard": configuration} - dashboards = list(map(create_item, list(filter(filter_fn, res[1]['dashboards'])))) + dashboards = list(map(create_item, list(filter(filter_fn, res[1]["dashboards"])))) return [True, dashboards] def create_dashboard_with_configuration(self, configuration): # Remove id and version properties if already set configuration_clone = copy.deepcopy(configuration) - if 'id' in configuration_clone: - del configuration_clone['id'] - if 'version' in configuration_clone: - del configuration_clone['version'] - - res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, - data=json.dumps({'dashboard': configuration_clone}), - verify=self.ssl_verify) + if "id" in configuration_clone: + del configuration_clone["id"] + if "version" in configuration_clone: + del configuration_clone["version"] + + res = self.http.post( + self.url + self._dashboards_api_endpoint, + headers=self.hdrs, + data=json.dumps({"dashboard": configuration_clone}), + verify=self.ssl_verify, + ) return self._request_result(res) def create_dashboard(self, name): - ''' + """ **Description** Creates an empty dashboard. You can then add panels by using ``add_dashboard_panel``. @@ -143,24 +146,25 @@ def create_dashboard(self, name): **Example** `examples/dashboard.py `_ - ''' + """ dashboard_configuration = { - 'name': name, - 'schema': 3, - 'widgets': [], - 'eventsOverlaySettings': { - 'filterNotificationsUserInputFilter': '' - }, - 'layout': [], - 'panels': [], + "name": name, + "schema": 3, + "widgets": [], + "eventsOverlaySettings": {"filterNotificationsUserInputFilter": ""}, + "layout": [], + "panels": [], } # # Create the new dashboard # - res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, - data=json.dumps({'dashboard': dashboard_configuration}), - verify=self.ssl_verify) + res = self.http.post( + self.url + self._dashboards_api_endpoint, + headers=self.hdrs, + data=json.dumps({"dashboard": dashboard_configuration}), + verify=self.ssl_verify, + ) return self._request_result(res) # TODO COVER @@ -175,21 +179,11 @@ def add_dashboard_panel(self, dashboard, panel_name, visualization, query): "advancedQueries": [ { "enabled": True, - "displayInfo": { - "displayName": "", - "timeSeriesDisplayNameTemplate": "", - "type": "lines" - }, - "format": { - "unit": "%", - "inputFormat": "0-100", - "displayFormat": "auto", - "decimals": None, - "yAxis": "auto" - }, - "query": query + "displayInfo": {"displayName": "", "timeSeriesDisplayNameTemplate": "", "type": "lines"}, + "format": {"unit": "%", "inputFormat": "0-100", "displayFormat": "auto", "decimals": None, "yAxis": "auto"}, + "query": query, } - ] + ], } new_layout = { "panelId": new_panel_id, @@ -202,9 +196,7 @@ def add_dashboard_panel(self, dashboard, panel_name, visualization, query): if visualization == PANEL_VISUALIZATION_TIMECHART: new_panel["axesConfiguration"] = { - "bottom": { - "enabled": True - }, + "bottom": {"enabled": True}, "left": { "enabled": True, "displayName": None, @@ -215,7 +207,7 @@ def add_dashboard_panel(self, dashboard, panel_name, visualization, query): "maxValue": None, "minInputFormat": "0-100", "maxInputFormat": "0-100", - "scale": "linear" + "scale": "linear", }, "right": { "enabled": True, @@ -227,22 +219,17 @@ def add_dashboard_panel(self, dashboard, panel_name, visualization, query): "maxValue": None, "minInputFormat": "1", "maxInputFormat": "1", - "scale": "linear" - } - } - new_panel["legendConfiguration"] = { - "enabled": True, - "position": "right", - "layout": "table", - "showCurrent": True + "scale": "linear", + }, } + new_panel["legendConfiguration"] = {"enabled": True, "position": "right", "layout": "table", "showCurrent": True} if visualization == PANEL_VISUALIZATION_NUMBER: new_panel["numberThresholds"] = { "values": [], "base": { "severity": "none", "displayText": "", - } + }, } dboard["panels"].append(new_panel) @@ -261,70 +248,72 @@ def remove_dashboard_panel(self, dashboard, panel_id): def create_dashboard_from_template(self, dashboard_name, template, scope=None, shared=False, public=False): if scope is not None: if not isinstance(scope, list) and not isinstance(scope, str): - return [False, 'Invalid scope format: Expected a list, a string or None'] + return [False, "Invalid scope format: Expected a list, a string or None"] else: scope = [] # # Clean up the dashboard we retireved so it's ready to be pushed # - template['id'] = None - template['version'] = None - template['schema'] = 3 - template['name'] = dashboard_name - template['shared'] = shared - template['public'] = public - template['publicToken'] = None + template["id"] = None + template["version"] = None + template["schema"] = 3 + template["name"] = dashboard_name + template["shared"] = shared + template["public"] = public + template["publicToken"] = None # default dashboards don't have eventsOverlaySettings property # make sure to add the default set if the template doesn't include it - if 'eventsOverlaySettings' not in template or not template['eventsOverlaySettings']: - template['eventsOverlaySettings'] = { - 'filterNotificationsUserInputFilter': '' - } + if "eventsOverlaySettings" not in template or not template["eventsOverlaySettings"]: + template["eventsOverlaySettings"] = {"filterNotificationsUserInputFilter": ""} # set dashboard scope to the specific parameter - template['scopeExpressionList'] = [] + template["scopeExpressionList"] = [] if isinstance(scope, list): for s in scope: ok, converted_scope = convert_scope_string_to_expression(s) if not ok: return ok, converted_scope - template['scopeExpressionList'].append(converted_scope[0]) + template["scopeExpressionList"].append(converted_scope[0]) elif isinstance(scope, str): ok, converted_scope = convert_scope_string_to_expression(scope) if not ok: return ok, converted_scope - template['scopeExpressionList'] = converted_scope + template["scopeExpressionList"] = converted_scope # NOTE: Individual panels might override the dashboard scope, the override will NOT be reset - if 'widgets' in template and template['widgets'] is not None: - for chart in template['widgets']: - if 'overrideScope' not in chart: - chart['overrideScope'] = False + if "widgets" in template and template["widgets"] is not None: + for chart in template["widgets"]: + if "overrideScope" not in chart: + chart["overrideScope"] = False - if not chart['overrideScope']: + if not chart["overrideScope"]: # patch frontend bug to hide scope override warning even when it's not really overridden - chart['scope'] = scope + chart["scope"] = scope - if chart['showAs'] != 'map': + if chart["showAs"] != "map": # if chart scope is equal to dashboard scope, set it as non override - chart_scope = chart['scope'] if 'scope' in chart else None - chart['overrideScope'] = chart_scope != scope + chart_scope = chart["scope"] if "scope" in chart else None + chart["overrideScope"] = chart_scope != scope else: # topology panels must override the scope - chart['overrideScope'] = True + chart["overrideScope"] = True # # Create the new dashboard # - res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, - data=json.dumps({'dashboard': template}), verify=self.ssl_verify) + res = self.http.post( + self.url + self._dashboards_api_endpoint, + headers=self.hdrs, + data=json.dumps({"dashboard": template}), + verify=self.ssl_verify, + ) return self._request_result(res) def create_dashboard_from_file(self, dashboard_name, filename, filter=None, shared=False, public=False): - ''' + """ **Description** Create a new dasboard using a dashboard template saved to disk. See :func:`~SdcClient.save_dashboard_to_file` to use the file to create a dashboard (usefl to create and restore backups). @@ -346,7 +335,7 @@ def create_dashboard_from_file(self, dashboard_name, filename, filter=None, shar **Example** `examples/dashboard_save_load.py `_ - ''' + """ # # Load the Dashboard # @@ -356,21 +345,18 @@ def create_dashboard_from_file(self, dashboard_name, filename, filter=None, shar # # Handle old files # - if 'dashboard' not in loaded_object: - loaded_object = { - 'version': f'v{loaded_object["schema"]}', - 'dashboard': loaded_object - } + if "dashboard" not in loaded_object: + loaded_object = {"version": f"v{loaded_object['schema']}", "dashboard": loaded_object} - dashboard = loaded_object['dashboard'] + dashboard = loaded_object["dashboard"] - if loaded_object['version'] != self._dashboards_api_version: + if loaded_object["version"] != self._dashboards_api_version: # # Convert the dashboard (if possible) # - conversion_result, dashboard = convert_dashboard_between_versions(dashboard, - loaded_object['version'], - self._dashboards_api_version) + conversion_result, dashboard = convert_dashboard_between_versions( + dashboard, loaded_object["version"], self._dashboards_api_version + ) if not conversion_result: return conversion_result, dashboard @@ -381,7 +367,7 @@ def create_dashboard_from_file(self, dashboard_name, filename, filter=None, shar return self.create_dashboard_from_template(dashboard_name, dashboard, filter, shared, public) def get_dashboard(self, dashboard_id): - '''**Description** + """**Description** Return a dashboard with the pased in ID. This includes the dashboards created by the user and the ones shared with them by other users. **Success Return Value** @@ -389,13 +375,14 @@ def get_dashboard(self, dashboard_id): **Example** `examples/dashboard_basic_crud.py `_ - ''' - res = self.http.get(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), headers=self.hdrs, - verify=self.ssl_verify) + """ + res = self.http.get( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), headers=self.hdrs, verify=self.ssl_verify + ) return self._request_result(res) def create_dashboard_from_dashboard(self, newdashname, templatename, filter=None, shared=False, public=False): - '''**Description** + """**Description** Create a new dasboard using one of the existing dashboards as a template. You will be able to define the scope of the new dasboard. **Arguments** @@ -410,12 +397,13 @@ def create_dashboard_from_dashboard(self, newdashname, templatename, filter=None **Example** `examples/create_dashboard.py `_ - ''' + """ # # Get the list of dashboards from the server # - dashboard = self.http.get(self.url + self._dashboards_api_endpoint, params={"light": "true"}, headers=self.hdrs, - verify=self.ssl_verify) + dashboard = self.http.get( + self.url + self._dashboards_api_endpoint, params={"light": "true"}, headers=self.hdrs, verify=self.ssl_verify + ) if not self._checkResponse(dashboard): return [False, self.lasterr] @@ -426,13 +414,13 @@ def create_dashboard_from_dashboard(self, newdashname, templatename, filter=None # dboard = None - for db in j['dashboards']: - if db['name'] == templatename: + for db in j["dashboards"]: + if db["name"] == templatename: dboard = db break if dboard is None: - self.lasterr = 'can\'t find dashboard ' + templatename + ' to use as a template' + self.lasterr = "can't find dashboard " + templatename + " to use as a template" return [False, self.lasterr] ok, dboard = self.get_dashboard(dboard["id"]) @@ -445,8 +433,12 @@ def create_dashboard_from_dashboard(self, newdashname, templatename, filter=None def favorite_dashboard(self, dashboard_id, favorite): data = {"dashboard": {"favorite": favorite}} - res = self.http.patch(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), json=data, - headers=self.hdrs, verify=self.ssl_verify) + res = self.http.patch( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), + json=data, + headers=self.hdrs, + verify=self.ssl_verify, + ) return self._request_result(res) def share_dashboard_with_all_teams(self, dashboard, mode="r"): @@ -478,19 +470,21 @@ def share_dashboard_with_team(self, dashboard, team_id, mode="r"): if dboard["sharingSettings"] is None: dboard["sharingSettings"] = [] - dboard["sharingSettings"].append({ - "member": { - "type": "TEAM", - "id": team_id, - }, - "role": role, - }) + dboard["sharingSettings"].append( + { + "member": { + "type": "TEAM", + "id": team_id, + }, + "role": role, + } + ) dboard["shared"] = True return self.update_dashboard(dboard) def create_dashboard_from_view(self, newdashname, viewname, filter, shared=False, public=False): - '''**Description** + """**Description** Create a new dasboard using one of the Sysdig Monitor views as a template. You will be able to define the scope of the new dashboard. **Arguments** @@ -505,7 +499,7 @@ def create_dashboard_from_view(self, newdashname, viewname, filter, shared=False **Example** `examples/create_dashboard.py `_ - ''' + """ # # Find our template view # @@ -513,10 +507,10 @@ def create_dashboard_from_view(self, newdashname, viewname, filter, shared=False if gvres[0] is False: return gvres - view = gvres[1]['dashboard'] + view = gvres[1]["dashboard"] - view['timeMode'] = {'mode': 1} - view['time'] = {'last': 2 * 60 * 60 * 1000000, 'sampling': 2 * 60 * 60 * 1000000} + view["timeMode"] = {"mode": 1} + view["time"] = {"last": 2 * 60 * 60 * 1000000, "sampling": 2 * 60 * 60 * 1000000} # # Create the new dashboard @@ -524,7 +518,7 @@ def create_dashboard_from_view(self, newdashname, viewname, filter, shared=False return self.create_dashboard_from_template(newdashname, view, filter, shared, public) def save_dashboard_to_file(self, dashboard, filename): - ''' + """ **Description** Save a dashboard to disk. See :func:`~SdcClient.create_dashboard_from_file` to use the file to create a dashboard (usefl to create and restore backups). @@ -538,15 +532,12 @@ def save_dashboard_to_file(self, dashboard, filename): **Example** `examples/dashboard_save_load.py `_ - ''' - with open(filename, 'w') as outf: - json.dump({ - 'version': self._dashboards_api_version, - 'dashboard': dashboard - }, outf) + """ + with open(filename, "w") as outf: + json.dump({"version": self._dashboards_api_version, "dashboard": dashboard}, outf) def delete_dashboard(self, dashboard): - '''**Description** + """**Description** Deletes a dashboard. **Arguments** @@ -557,12 +548,13 @@ def delete_dashboard(self, dashboard): **Example** `examples/delete_dashboard.py `_ - ''' - if 'id' not in dashboard: + """ + if "id" not in dashboard: return [False, "Invalid dashboard format"] - res = self.http.delete(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.delete( + self.url + self._dashboards_api_endpoint + "/" + str(dashboard["id"]), headers=self.hdrs, verify=self.ssl_verify + ) if not self._checkResponse(res): return [False, self.lasterr] diff --git a/sdcclient/monitor/_events_v1.py b/sdcclient/monitor/_events_v1.py index 7419122c..d1f45cfe 100644 --- a/sdcclient/monitor/_events_v1.py +++ b/sdcclient/monitor/_events_v1.py @@ -4,12 +4,12 @@ class EventsClientV1(_SdcCommon): - def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://app.sysdigcloud.com", ssl_verify=True, custom_headers=None): super().__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDC" def get_events(self, from_s=None, to_s=None, last_s=None): - '''**Description** + """**Description** Returns the list of Sysdig Monitor events. **Arguments** @@ -25,7 +25,7 @@ def get_events(self, from_s=None, to_s=None, last_s=None): **Example** `examples/list_events.py `_ - ''' + """ options = { "from": from_s, @@ -33,7 +33,7 @@ def get_events(self, from_s=None, to_s=None, last_s=None): "last": last_s, } params = {k: v for k, v in options.items() if v is not None} - res = self.http.get(self.url + '/api/events/', headers=self.hdrs, params=params, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/events/", headers=self.hdrs, params=params, verify=self.ssl_verify) return self._request_result(res) def get_event(self, id): @@ -53,12 +53,12 @@ def get_event(self, id): >>> if ok: >>> print(res["event"]) """ - url = f'{self.url}/api/events/{id}' + url = f"{self.url}/api/events/{id}" res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def post_event(self, name, description=None, severity=None, event_filter=None, tags=None): - '''**Description** + """**Description** Send an event to Sysdig Monitor. The events you post are available in the Events tab in the Sysdig Monitor UI and can be overlied to charts. **Arguments** @@ -74,23 +74,14 @@ def post_event(self, name, description=None, severity=None, event_filter=None, t **Examples** - `examples/post_event_simple.py `_ - `examples/post_event.py `_ - ''' - options = { - 'name': name, - 'description': description, - 'severity': severity, - 'filter': event_filter, - 'tags': tags - } - edata = { - 'event': {k: v for k, v in options.items() if v is not None} - } - res = self.http.post(self.url + '/api/events/', headers=self.hdrs, data=json.dumps(edata), - verify=self.ssl_verify) + """ + options = {"name": name, "description": description, "severity": severity, "filter": event_filter, "tags": tags} + edata = {"event": {k: v for k, v in options.items() if v is not None}} + res = self.http.post(self.url + "/api/events/", headers=self.hdrs, data=json.dumps(edata), verify=self.ssl_verify) return self._request_result(res) def delete_event(self, event): - '''**Description** + """**Description** Deletes an event. **Arguments** @@ -101,11 +92,11 @@ def delete_event(self, event): **Example** `examples/delete_event.py `_ - ''' - if 'id' not in event: + """ + if "id" not in event: return [False, "Invalid event format"] - res = self.http.delete(self.url + '/api/events/' + str(event['id']), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + "/api/events/" + str(event["id"]), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, None] diff --git a/sdcclient/monitor/_events_v2.py b/sdcclient/monitor/_events_v2.py index ecc27fa9..85a84075 100644 --- a/sdcclient/monitor/_events_v2.py +++ b/sdcclient/monitor/_events_v2.py @@ -5,13 +5,14 @@ class EventsClientV2(_SdcCommon): - def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://app.sysdigcloud.com", ssl_verify=True, custom_headers=None): super().__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDC" - def get_events(self, name=None, category=None, direction='before', status=None, limit=100, pivot=None, from_s=None, - to_s=None): - '''**Description** + def get_events( + self, name=None, category=None, direction="before", status=None, limit=100, pivot=None, from_s=None, to_s=None + ): + """**Description** Returns the list of Sysdig Monitor events. **Arguments** @@ -29,8 +30,8 @@ def get_events(self, name=None, category=None, direction='before', status=None, **Example** `examples/list_events.py `_ - ''' - valid_categories = ['alert', 'custom', 'docker', 'containerd', 'kubernetes'] + """ + valid_categories = ["alert", "custom", "docker", "containerd", "kubernetes"] if category is None: category = valid_categories @@ -63,20 +64,20 @@ def get_events(self, name=None, category=None, direction='before', status=None, return False, "'from_s' must be lower than 'to_s'" options = { - 'alertStatus': status, - 'category': ','.join(category), - 'dir': direction, - 'feed': 'true', - 'include_pivot': 'true', - 'include_total': 'true', - 'limit': str(limit), - 'pivot': pivot, - 'filter': name, - 'from': from_s, - 'to': to_s, + "alertStatus": status, + "category": ",".join(category), + "dir": direction, + "feed": "true", + "include_pivot": "true", + "include_total": "true", + "limit": str(limit), + "pivot": pivot, + "filter": name, + "from": from_s, + "to": to_s, } params = {k: v for k, v in options.items() if v is not None} - res = self.http.get(self.url + '/api/v2/events/', headers=self.hdrs, params=params, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/v2/events/", headers=self.hdrs, params=params, verify=self.ssl_verify) return self._request_result(res) def get_event(self, id): @@ -97,12 +98,12 @@ def get_event(self, id): >>> print(res["event"]) """ - url = f'{self.url}/api/v2/events/{id}' + url = f"{self.url}/api/v2/events/{id}" res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def delete_event(self, event): - '''**Description** + """**Description** Deletes an event. **Arguments** @@ -113,18 +114,17 @@ def delete_event(self, event): **Example** `examples/delete_event.py `_ - ''' - if 'id' not in event: + """ + if "id" not in event: return [False, "Invalid event format"] - res = self.http.delete(self.url + '/api/v2/events/' + str(event['id']), headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.delete(self.url + "/api/v2/events/" + str(event["id"]), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, None] def post_event(self, name, description=None, severity=None, event_filter=None, tags=None): - '''**Description** + """**Description** Send an event to Sysdig Monitor. The events you post are available in the Events tab in the Sysdig Monitor UI and can be overlied to charts. **Arguments** @@ -140,17 +140,8 @@ def post_event(self, name, description=None, severity=None, event_filter=None, t **Examples** - `examples/post_event_simple.py `_ - `examples/post_event.py `_ - ''' - options = { - 'name': name, - 'description': description, - 'severity': severity, - 'scope': event_filter, - 'tags': tags - } - edata = { - 'event': {k: v for k, v in options.items() if v is not None} - } - res = self.http.post(self.url + '/api/v2/events/', headers=self.hdrs, data=json.dumps(edata), - verify=self.ssl_verify) + """ + options = {"name": name, "description": description, "severity": severity, "scope": event_filter, "tags": tags} + edata = {"event": {k: v for k, v in options.items() if v is not None}} + res = self.http.post(self.url + "/api/v2/events/", headers=self.hdrs, data=json.dumps(edata), verify=self.ssl_verify) return self._request_result(res) diff --git a/sdcclient/monitor/dashboard_converters/_dashboard_scope.py b/sdcclient/monitor/dashboard_converters/_dashboard_scope.py index f35e2703..b74a33f0 100644 --- a/sdcclient/monitor/dashboard_converters/_dashboard_scope.py +++ b/sdcclient/monitor/dashboard_converters/_dashboard_scope.py @@ -64,10 +64,9 @@ def flatten(S): grammar = tatsu.compile(_SCOPE_GRAMMAR) scope_list = [] - scope_expressions = scope.strip(' \t\n\r').split(' and ') + scope_expressions = scope.strip(" \t\n\r").split(" and ") for scope in scope_expressions: - operand, parsed_operator, value = grammar.parse(scope) operator_match = { @@ -85,19 +84,13 @@ def flatten(S): value = flatten(value) if len(value) > 1: value = list(value[1:-1]) # Remove '[' and ']' - value = [elem for elem in value if elem != ','] # Remove ',' + value = [elem for elem in value if elem != ","] # Remove ',' else: value = [value] operator = "" if parsed_operator not in operator_match else operator_match[parsed_operator] - scope_list.append({ - 'displayName': "", - "isVariable": False, - 'operand': operand, - 'operator': operator, - 'value': value - }) + scope_list.append({"displayName": "", "isVariable": False, "operand": operand, "operator": operator, "value": value}) return [True, scope_list] except Exception as ex: return [False, f"invalid scope: {scope}, {ex.message}"] diff --git a/sdcclient/monitor/dashboard_converters/_dashboard_versions.py b/sdcclient/monitor/dashboard_converters/_dashboard_versions.py index 90f5b428..625a48b8 100644 --- a/sdcclient/monitor/dashboard_converters/_dashboard_versions.py +++ b/sdcclient/monitor/dashboard_converters/_dashboard_versions.py @@ -56,58 +56,55 @@ def convert_scope(prop_name, old_dashboard, new_dashboard): if scope_conversion[0]: if scope_conversion[1]: - new_dashboard['scopeExpressionList'] = scope_conversion[1] + new_dashboard["scopeExpressionList"] = scope_conversion[1] else: # the property can be either `null` or a non-empty array - new_dashboard['scopeExpressionList'] = None + new_dashboard["scopeExpressionList"] = None else: - raise SyntaxError('scope not supported by the current grammar') + raise SyntaxError("scope not supported by the current grammar") def convert_events_filter(prop_name, old_dashboard, new_dashboard): - rename_to('eventsOverlaySettings')(prop_name, old_dashboard, new_dashboard) + rename_to("eventsOverlaySettings")(prop_name, old_dashboard, new_dashboard) - if 'showNotificationsDoNotFilterSameMetrics' in new_dashboard['eventsOverlaySettings']: - del new_dashboard['eventsOverlaySettings']['showNotificationsDoNotFilterSameMetrics'] - if 'showNotificationsDoNotFilterSameScope' in new_dashboard['eventsOverlaySettings']: - del new_dashboard['eventsOverlaySettings']['showNotificationsDoNotFilterSameScope'] + if "showNotificationsDoNotFilterSameMetrics" in new_dashboard["eventsOverlaySettings"]: + del new_dashboard["eventsOverlaySettings"]["showNotificationsDoNotFilterSameMetrics"] + if "showNotificationsDoNotFilterSameScope" in new_dashboard["eventsOverlaySettings"]: + del new_dashboard["eventsOverlaySettings"]["showNotificationsDoNotFilterSameScope"] def convert_items(prop_name, old_dashboard, new_dashboard): def convert_color_coding(prop_name, old_widget, new_widget): best_value = None worst_value = None - for item in old_widget[prop_name]['thresholds']: - if item['color'] == 'best': - best_value = item['max'] if not item['max'] else item['min'] - elif item['color'] == 'worst': - worst_value = item['min'] if not item['min'] else item['max'] + for item in old_widget[prop_name]["thresholds"]: + if item["color"] == "best": + best_value = item["max"] if not item["max"] else item["min"] + elif item["color"] == "worst": + worst_value = item["min"] if not item["min"] else item["max"] if best_value is not None and worst_value is not None: - new_widget[prop_name] = { - 'best': best_value, - 'worst': worst_value - } + new_widget[prop_name] = {"best": best_value, "worst": worst_value} def convert_display_options(prop_name, old_widget, new_widget): keep_as_is(prop_name, old_widget, new_widget) - if 'yAxisScaleFactor' in new_widget[prop_name]: - del new_widget[prop_name]['yAxisScaleFactor'] + if "yAxisScaleFactor" in new_widget[prop_name]: + del new_widget[prop_name]["yAxisScaleFactor"] def convert_group(prop_name, old_widget, new_widget): - group_by_metrics = old_widget[prop_name]['configuration']['groups'][0]['groupBy'] + group_by_metrics = old_widget[prop_name]["configuration"]["groups"][0]["groupBy"] migrated = [] for metric in group_by_metrics: - migrated.append({'id': metric['metric']}) + migrated.append({"id": metric["metric"]}) - new_widget['groupingLabelIds'] = migrated + new_widget["groupingLabelIds"] = migrated def convert_override_filter(prop_name, old_widget, new_widget): - if old_widget['showAs'] == 'map': + if old_widget["showAs"] == "map": # override scope always true if scope is set - new_widget['overrideScope'] = True + new_widget["overrideScope"] = True else: - new_widget['overrideScope'] = old_widget[prop_name] + new_widget["overrideScope"] = old_widget[prop_name] def convert_name(prop_name, old_widget, new_widget): # @@ -116,12 +113,12 @@ def convert_name(prop_name, old_widget, new_widget): unique_id = 1 name = old_widget[prop_name] - for widget in old_dashboard['items']: + for widget in old_dashboard["items"]: if widget == old_widget: break if old_widget[prop_name] == widget[prop_name]: - old_widget[prop_name] = '{} ({})'.format(name, unique_id) + old_widget[prop_name] = "{} ({})".format(name, unique_id) unique_id += 1 keep_as_is(prop_name, old_widget, new_widget) @@ -130,14 +127,14 @@ def convert_metrics(prop_name, old_widget, new_widget): def convert_property_name(prop_name, old_metric, new_metric): keep_as_is(prop_name, old_metric, new_metric) - if old_metric['metricId'] == 'timestamp': - return 'k0' + if old_metric["metricId"] == "timestamp": + return "k0" metric_migrations = { - 'metricId': rename_to('id'), - 'aggregation': rename_to('timeAggregation'), - 'groupAggregation': rename_to('groupAggregation'), - 'propertyName': convert_property_name + "metricId": rename_to("id"), + "aggregation": rename_to("timeAggregation"), + "groupAggregation": rename_to("groupAggregation"), + "propertyName": convert_property_name, } migrated_metrics = [] @@ -155,52 +152,49 @@ def convert_property_name(prop_name, old_metric, new_metric): # other keys: k* (from 0 or 1, depending on timestamp) # values: v* (from 0) sorted_metrics = [] - timestamp_key = [m for m in migrated_metrics - if m['id'] == 'timestamp' and - not ('timeAggregation' in m) or - not (m['timeAggregation'] is not None) - ] - no_timestamp_keys = [m for m in migrated_metrics - if m['id'] != 'timestamp' and - not ('timeAggregation' in m) or - not (m['timeAggregation'] is not None) - ] - values = [m for m in migrated_metrics - if 'timeAggregation' in m and - m['timeAggregation'] is not None - ] + timestamp_key = [ + m + for m in migrated_metrics + if m["id"] == "timestamp" and not ("timeAggregation" in m) or not (m["timeAggregation"] is not None) + ] + no_timestamp_keys = [ + m + for m in migrated_metrics + if m["id"] != "timestamp" and not ("timeAggregation" in m) or not (m["timeAggregation"] is not None) + ] + values = [m for m in migrated_metrics if "timeAggregation" in m and m["timeAggregation"] is not None] if timestamp_key: - timestamp_key[0]['propertyName'] = 'k0' + timestamp_key[0]["propertyName"] = "k0" sorted_metrics.append(timestamp_key[0]) k_offset = 1 if timestamp_key else 0 for i in range(0, len(no_timestamp_keys)): - no_timestamp_keys[i]['propertyName'] = 'k{}'.format(i + k_offset) + no_timestamp_keys[i]["propertyName"] = "k{}".format(i + k_offset) sorted_metrics.append(no_timestamp_keys[i]) for i in range(0, len(values)): - values[i]['propertyName'] = 'v{}'.format(i) + values[i]["propertyName"] = "v{}".format(i) sorted_metrics.append(values[i]) - new_widget['metrics'] = sorted_metrics + new_widget["metrics"] = sorted_metrics widget_migrations = { - 'colorCoding': when_set(convert_color_coding), - 'compareToConfig': when_set(keep_as_is), - 'customDisplayOptions': with_default(convert_display_options, {}), - 'gridConfiguration': keep_as_is, - 'group': when_set(convert_group), - 'hasTransparentBackground': when_set(rename_to('transparentBackground')), - 'limitToScope': when_set(keep_as_is), - 'isPanelTitleVisible': when_set(rename_to('panelTitleVisible')), - 'markdownSource': when_set(keep_as_is), - 'metrics': with_default(convert_metrics, []), - 'name': with_default(convert_name, 'Panel'), - 'overrideFilter': convert_override_filter, - 'paging': drop_it, - 'scope': with_default(keep_as_is, None), - 'showAs': keep_as_is, - 'showAsType': drop_it, - 'sorting': drop_it, - 'textpanelTooltip': when_set(keep_as_is), + "colorCoding": when_set(convert_color_coding), + "compareToConfig": when_set(keep_as_is), + "customDisplayOptions": with_default(convert_display_options, {}), + "gridConfiguration": keep_as_is, + "group": when_set(convert_group), + "hasTransparentBackground": when_set(rename_to("transparentBackground")), + "limitToScope": when_set(keep_as_is), + "isPanelTitleVisible": when_set(rename_to("panelTitleVisible")), + "markdownSource": when_set(keep_as_is), + "metrics": with_default(convert_metrics, []), + "name": with_default(convert_name, "Panel"), + "overrideFilter": convert_override_filter, + "paging": drop_it, + "scope": with_default(keep_as_is, None), + "showAs": keep_as_is, + "showAsType": drop_it, + "sorting": drop_it, + "textpanelTooltip": when_set(keep_as_is), } migrated_widgets = [] @@ -212,30 +206,28 @@ def convert_property_name(prop_name, old_metric, new_metric): migrated_widgets.append(migrated_widget) - new_dashboard['widgets'] = migrated_widgets + new_dashboard["widgets"] = migrated_widgets return migrated migrations = { - 'autoCreated': keep_as_is, - 'createdOn': keep_as_is, - 'eventsFilter': with_default(convert_events_filter, { - 'filterNotificationsUserInputFilter': '' - }), - 'filterExpression': convert_scope, - 'scopeExpressionList': ignore, # scope will be generated from 'filterExpression' - 'id': keep_as_is, - 'isPublic': rename_to('public'), - 'isShared': rename_to('shared'), - 'items': convert_items, - 'layout': drop_it, - 'modifiedOn': keep_as_is, - 'name': keep_as_is, - 'publicToken': drop_it, - 'schema': convert_schema, - 'teamId': keep_as_is, - 'username': keep_as_is, - 'version': keep_as_is, + "autoCreated": keep_as_is, + "createdOn": keep_as_is, + "eventsFilter": with_default(convert_events_filter, {"filterNotificationsUserInputFilter": ""}), + "filterExpression": convert_scope, + "scopeExpressionList": ignore, # scope will be generated from 'filterExpression' + "id": keep_as_is, + "isPublic": rename_to("public"), + "isShared": rename_to("shared"), + "items": convert_items, + "layout": drop_it, + "modifiedOn": keep_as_is, + "name": keep_as_is, + "publicToken": drop_it, + "schema": convert_schema, + "teamId": keep_as_is, + "username": keep_as_is, + "version": keep_as_is, } # @@ -248,15 +240,11 @@ def convert_property_name(prop_name, old_metric, new_metric): return True, migrated -_DASHBOARD_CONVERTERS = { - 'v2': { - 'v1': _convert_dashboard_v1_to_v2 - } -} +_DASHBOARD_CONVERTERS = {"v2": {"v1": _convert_dashboard_v1_to_v2}} def convert_dashboard_between_versions(dashboard, version_from, version_to): - ''' + """ **Description** Converts a dashboard from a version to another version. Current conversions supported: @@ -268,15 +256,15 @@ def convert_dashboard_between_versions(dashboard, version_from, version_to): **Success Return Value** A dashboard transformed between versions. - ''' + """ converters_to = _DASHBOARD_CONVERTERS.get(version_to, None) if converters_to is None: - return False, f'unexpected error: no dashboard converters from version {version_to} are supported' + return False, f"unexpected error: no dashboard converters from version {version_to} are supported" converter = converters_to.get(version_from, None) if converter is None: - return False, 'dashboard version {} cannot be converted to {}'.format(version_from, version_to) + return False, "dashboard version {} cannot be converted to {}".format(version_from, version_to) try: return converter(dashboard) diff --git a/sdcclient/secure/__init__.py b/sdcclient/secure/__init__.py index 1537faf9..5d558925 100644 --- a/sdcclient/secure/__init__.py +++ b/sdcclient/secure/__init__.py @@ -2,10 +2,19 @@ from ._falco_rules_files_old import FalcoRulesFilesClientOld from ._policy_events_old import PolicyEventsClientOld from ._policy_events_v1 import PolicyEventsClientV1 -from ._policy_v2 import (policy_action_capture, policy_action_kill, policy_action_pause, policy_action_stop, - PolicyClientV2) +from ._policy_v2 import policy_action_capture, policy_action_kill, policy_action_pause, policy_action_stop, PolicyClientV2 from .scanning._alerts import ScanningAlertsClientV1 -__all__ = ["PolicyEventsClientOld", "PolicyEventsClientV1", "FalcoRulesFilesClientOld", - "PolicyClientV2", "policy_action_pause", "policy_action_stop", "policy_action_kill", "policy_action_capture", - "ActivityAuditClientV1", "ActivityAuditDataSource", "ScanningAlertsClientV1"] +__all__ = [ + "PolicyEventsClientOld", + "PolicyEventsClientV1", + "FalcoRulesFilesClientOld", + "PolicyClientV2", + "policy_action_pause", + "policy_action_stop", + "policy_action_kill", + "policy_action_capture", + "ActivityAuditClientV1", + "ActivityAuditDataSource", + "ScanningAlertsClientV1", +] diff --git a/sdcclient/secure/_activity_audit_v1.py b/sdcclient/secure/_activity_audit_v1.py index 2a13f5fe..3d23a0cf 100644 --- a/sdcclient/secure/_activity_audit_v1.py +++ b/sdcclient/secure/_activity_audit_v1.py @@ -10,16 +10,15 @@ class ActivityAuditDataSource: FILE = "fileaccess" -_seconds_to_nanoseconds = 10 ** 9 +_seconds_to_nanoseconds = 10**9 class ActivityAuditClientV1(_SdcCommon): - def __init__(self, token="", sdc_url='https://secure.sysdig.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://secure.sysdig.com", ssl_verify=True, custom_headers=None): super(ActivityAuditClientV1, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDS" - def list_events(self, from_date=None, to_date=None, scope_filter=None, limit=0, - data_sources=None): + def list_events(self, from_date=None, to_date=None, scope_filter=None, limit=0, data_sources=None): """ List the events in the Activity Audit. @@ -56,7 +55,7 @@ def list_events(self, from_date=None, to_date=None, scope_filter=None, limit=0, filters = scope_filter if scope_filter else [] if data_sources: quoted_data_sources = [f'"{data_source}"' for data_source in data_sources] - data_source_filter = f'type in ({",".join(quoted_data_sources)})' + data_source_filter = f"type in ({','.join(quoted_data_sources)})" filters.append(data_source_filter) query_params = { @@ -66,8 +65,9 @@ def list_events(self, from_date=None, to_date=None, scope_filter=None, limit=0, "filter": " and ".join(filters), } - res = self.http.get(self.url + '/api/v1/activityAudit/events', headers=self.hdrs, verify=self.ssl_verify, - params=query_params) + res = self.http.get( + self.url + "/api/v1/activityAudit/events", headers=self.hdrs, verify=self.ssl_verify, params=query_params + ) ok, res = self._request_result(res) if not ok: return False, res @@ -75,23 +75,25 @@ def list_events(self, from_date=None, to_date=None, scope_filter=None, limit=0, events = [] # Pagination required by Secure API - while "page" in res and \ - "total" in res["page"] and \ - res["page"]["total"] > number_of_events_per_query: + while "page" in res and "total" in res["page"] and res["page"]["total"] > number_of_events_per_query: events = events + res["data"] if 0 < limit < len(events): - events = events[0:limit - 1] + events = events[0 : limit - 1] break paginated_query_params = { "limit": number_of_events_per_query, "filter": " and ".join(filters), - "cursor": res["page"]["prev"] + "cursor": res["page"]["prev"], } - res = self.http.get(self.url + '/api/v1/activityAudit/events', headers=self.hdrs, verify=self.ssl_verify, - params=paginated_query_params) + res = self.http.get( + self.url + "/api/v1/activityAudit/events", + headers=self.hdrs, + verify=self.ssl_verify, + params=paginated_query_params, + ) ok, res = self._request_result(res) if not ok: return False, res @@ -129,7 +131,7 @@ def list_trace(self, traceable_event): if not traceable_event or not traceable_event["traceable"]: return False, "a traceable event must be provided" - endpoint = f'/api/v1/activityAudit/events/{traceable_event["type"]}/{traceable_event["id"]}/trace' + endpoint = f"/api/v1/activityAudit/events/{traceable_event['type']}/{traceable_event['id']}/trace" res = self.http.get(self.url + endpoint, headers=self.hdrs, verify=self.ssl_verify) ok, res = self._request_result(res) if not ok: diff --git a/sdcclient/secure/_falco_rules_files_old.py b/sdcclient/secure/_falco_rules_files_old.py index a6da3ac1..db50d119 100644 --- a/sdcclient/secure/_falco_rules_files_old.py +++ b/sdcclient/secure/_falco_rules_files_old.py @@ -8,14 +8,13 @@ class FalcoRulesFilesClientOld(_SdcCommon): - def __init__(self, token="", sdc_url='https://secure.sysdig.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://secure.sysdig.com", ssl_verify=True, custom_headers=None): super(FalcoRulesFilesClientOld, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDS" # TODO: Remove this one, deprecated def _get_falco_rules(self, kind): - res = self.http.get(self.url + '/api/settings/falco/{}RulesFile'.format(kind), headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.get(self.url + "/api/settings/falco/{}RulesFile".format(kind), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() @@ -23,7 +22,7 @@ def _get_falco_rules(self, kind): # TODO: Change this one to use newestDefaultRulesFiles endpoint def get_system_falco_rules(self): - '''**Description** + """**Description** Get the system falco rules file in use for this customer. See the `Falco wiki `_ for documentation on the falco rules format. **Arguments** @@ -34,12 +33,12 @@ def get_system_falco_rules(self): **Example** `examples/get_secure_system_falco_rules.py `_ - ''' + """ return self._get_falco_rules("system") def get_user_falco_rules(self): - '''**Description** + """**Description** Get the user falco rules file in use for this customer. See the `Falco wiki `_ for documentation on the falco rules format. **Arguments** @@ -50,22 +49,19 @@ def get_user_falco_rules(self): **Example** `examples/get_secure_user_falco_rules.py `_ - ''' + """ ok, res = self._get_user_falco_rules() if not ok: return [False, res] - local_rules_file = [file - for file in res["customFalcoRulesFiles"]["files"] - if file["name"] == "falco_rules_local.yaml"] + local_rules_file = [file for file in res["customFalcoRulesFiles"]["files"] if file["name"] == "falco_rules_local.yaml"] if len(local_rules_file) == 0: return [False, "Expected falco_rules_local.yaml file, but no file found"] return [True, local_rules_file[0]["variants"][0]["content"]] def _get_user_falco_rules(self): - res = self.http.get(self.url + '/api/settings/falco/customRulesFiles', headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.get(self.url + "/api/settings/falco/customRulesFiles", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -81,14 +77,18 @@ def _set_falco_rules(self, kind, rules_content): payload[1]["{}RulesFile".format(kind)]["content"] = rules_content # pylint: disable=unsubscriptable-object - res = self.http.put(self.url + '/api/settings/falco/{}RulesFile'.format(kind), headers=self.hdrs, - data=json.dumps(payload[1]), verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/settings/falco/{}RulesFile".format(kind), + headers=self.hdrs, + data=json.dumps(payload[1]), + verify=self.ssl_verify, + ) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()] def set_system_falco_rules(self, rules_content): - '''**Description** + """**Description** Set the system falco rules file in use for this customer. NOTE: This API endpoint can *only* be used in on-premise deployments. Generally the system falco rules file is only modified in conjunction with Sysdig support. See the `Falco wiki `_ for documentation on the falco rules format. **Arguments** @@ -100,11 +100,11 @@ def set_system_falco_rules(self, rules_content): **Example** `examples/set_secure_system_falco_rules.py `_ - ''' + """ return self._set_falco_rules("system", rules_content) def set_user_falco_rules(self, rules_content): - '''**Description** + """**Description** Set the user falco rules file in use for this customer. See the `Falco wiki `_ for documentation on the falco rules format. **Arguments** @@ -116,22 +116,21 @@ def set_user_falco_rules(self, rules_content): **Example** `examples/set_secure_user_falco_rules.py `_ - ''' + """ ok, res = self._get_user_falco_rules() if not ok: return res - local_rules_file = [file - for file in res["customFalcoRulesFiles"]["files"] - if file["name"] == "falco_rules_local.yaml"] + local_rules_file = [file for file in res["customFalcoRulesFiles"]["files"] if file["name"] == "falco_rules_local.yaml"] if len(local_rules_file) == 0: return [False, "Expected falco_rules_local.yaml file, but no file found"] local_rules_file[0]["variants"][0]["content"] = rules_content - res = self.http.put(self.url + '/api/settings/falco/customRulesFiles', headers=self.hdrs, - data=json.dumps(res), verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/settings/falco/customRulesFiles", headers=self.hdrs, data=json.dumps(res), verify=self.ssl_verify + ) if not self._checkResponse(res): return [False, self.lasterr] @@ -145,9 +144,7 @@ def set_user_falco_rules(self, rules_content): # Only one kind for now called "default", but might add a "custom" kind later. # TODO Remove this one def _get_falco_rules_files(self, kind): - - res = self.http.get(self.url + '/api/settings/falco/{}RulesFiles'.format(kind), headers=self.hdrs, - verify=self.ssl_verify) + res = self.http.get(self.url + "/api/settings/falco/{}RulesFiles".format(kind), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() @@ -155,7 +152,7 @@ def _get_falco_rules_files(self, kind): return [True, data] def get_default_falco_rules_files(self): - '''**Description** + """**Description** Get the set of falco rules files from the backend. The _files programs and endpoints are a replacement for the system_file endpoints and allow for publishing multiple files instead of a single file as well as publishing multiple variants of a given file that are compatible @@ -202,7 +199,7 @@ def get_default_falco_rules_files(self): **Example** `examples/get_default_falco_rules_files.py `_ - ''' + """ res = self._get_falco_rules_files("default") @@ -226,7 +223,7 @@ def get_default_falco_rules_files(self): return [True, ret] def save_default_falco_rules_files(self, fsobj, save_dir): - '''**Description** + """**Description** Given a dict returned from get_default_falco_rules_files, save those files to a set of files below save_dir. The first level below save_dir is a directory with the tag name and an optional default_policies.yaml file, which groups rules into recommended default policies. The second level is a directory per file. @@ -252,7 +249,7 @@ def save_default_falco_rules_files(self, fsobj, save_dir): **Example** `examples/get_default_falco_rules_files.py `_ - ''' + """ if os.path.exists(save_dir): try: if os.path.isdir(save_dir): @@ -269,7 +266,7 @@ def save_default_falco_rules_files(self, fsobj, save_dir): return [False, "Could not create tag directory {}: {}".format(prefix, str(e))] if "defaultPolicies" in fsobj: - with open(os.path.join(save_dir, "default_policies.yaml"), 'w') as outfile: + with open(os.path.join(save_dir, "default_policies.yaml"), "w") as outfile: yaml.safe_dump(fsobj["defaultPolicies"], outfile) if "files" in fsobj: @@ -296,7 +293,6 @@ def save_default_falco_rules_files(self, fsobj, save_dir): # Only One kind for now, but might add a "custom" kind later. def _set_falco_rules_files(self, kind, rules_files): - payload = self._get_falco_rules_files(kind) if not payload[0]: @@ -309,14 +305,18 @@ def _set_falco_rules_files(self, kind, rules_files): if "defaultPolicies" in rules_files: obj["defaultPolicies"] = rules_files["defaultPolicies"] - res = self.http.put(self.url + '/api/settings/falco/{}RulesFiles'.format(kind), headers=self.hdrs, - data=json.dumps(payload[1]), verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/settings/falco/{}RulesFiles".format(kind), + headers=self.hdrs, + data=json.dumps(payload[1]), + verify=self.ssl_verify, + ) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()] def set_default_falco_rules_files(self, rules_files): - '''**Description** + """**Description** Update the set of falco rules files to the provided set of files. See the `Falco wiki `_ for documentation on the falco rules format. The _files programs and endpoints are a replacement for the system_file endpoints and allow for publishing multiple files instead of a single file as well as publishing @@ -331,12 +331,12 @@ def set_default_falco_rules_files(self, rules_files): **Example** `examples/set_default_falco_rules_files.py `_ - ''' + """ return self._set_falco_rules_files("default", rules_files) def load_default_falco_rules_files(self, save_dir): - '''**Description** + """**Description** Given a file and directory layout as described in save_default_falco_rules_files(), load those files and return a dict representing the contents. This dict is suitable for passing to set_default_falco_rules_files(). @@ -348,7 +348,7 @@ def load_default_falco_rules_files(self, save_dir): **Example** `examples/set_default_falco_rules_files.py `_ - ''' + """ tags = os.listdir(save_dir) @@ -388,15 +388,14 @@ def load_default_falco_rules_files(self, save_dir): return [False, "Variant path {} is not a directory".format(vpath)] cpath = os.path.join(vpath, "content") try: - with open(cpath, 'r') as content_file: + with open(cpath, "r") as content_file: try: required_engine_version = int(os.path.basename(vpath)) if int(os.path.basename(vpath)) < 0: return [False, "Variant directory {} must be a positive number".format(vpath)] - fobj["variants"].append({ - "requiredEngineVersion": required_engine_version, - "content": content_file.read() - }) + fobj["variants"].append( + {"requiredEngineVersion": required_engine_version, "content": content_file.read()} + ) except ValueError: return [False, "Variant directory {} must be a number".format(vpath)] except Exception as e: diff --git a/sdcclient/secure/_policy_events_old.py b/sdcclient/secure/_policy_events_old.py index a5a316d1..158abbc9 100644 --- a/sdcclient/secure/_policy_events_old.py +++ b/sdcclient/secure/_policy_events_old.py @@ -6,36 +6,43 @@ class PolicyEventsClientOld(_SdcCommon): - def __init__(self, token="", sdc_url='https://secure.sysdig.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://secure.sysdig.com", ssl_verify=True, custom_headers=None): super(PolicyEventsClientOld, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDS" def _get_policy_events_int(self, ctx): - warn("The PolicyEventsClientOld class is deprecated in favour of PolicyEventsClientV1; use it only if you have " - "an old on-premises installation", DeprecationWarning, 3) - policy_events_url = self.url + '/api/policyEvents{id}?from={frm:d}&to={to:d}&offset={offset}&limit={limit}{sampling}{aggregations}{scope}{filter}'.format( - id="/%s" % ctx["id"] if "id" in ctx else "", - frm=int(ctx['from']), - to=int(ctx['to']), - offset=ctx['offset'], - limit=ctx['limit'], - sampling='&sampling=%d' % int(ctx['sampling']) if "sampling" in ctx else "", - aggregations='&aggregations=%s' % json.dumps(ctx['aggregations']) if "aggregations" in ctx else "", - scope='&scopeFilter=%s' % ctx['scopeFilter'] if "scopeFilter" in ctx else "", - filter='&eventFilter=%s' % ctx['eventFilter'] if "eventFilter" in ctx else "") + warn( + "The PolicyEventsClientOld class is deprecated in favour of PolicyEventsClientV1; use it only if you have " + "an old on-premises installation", + DeprecationWarning, + 3, + ) + policy_events_url = ( + self.url + + "/api/policyEvents{id}?from={frm:d}&to={to:d}&offset={offset}&limit={limit}{sampling}{aggregations}{scope}{filter}".format( + id="/%s" % ctx["id"] if "id" in ctx else "", + frm=int(ctx["from"]), + to=int(ctx["to"]), + offset=ctx["offset"], + limit=ctx["limit"], + sampling="&sampling=%d" % int(ctx["sampling"]) if "sampling" in ctx else "", + aggregations="&aggregations=%s" % json.dumps(ctx["aggregations"]) if "aggregations" in ctx else "", + scope="&scopeFilter=%s" % ctx["scopeFilter"] if "scopeFilter" in ctx else "", + filter="&eventFilter=%s" % ctx["eventFilter"] if "eventFilter" in ctx else "", + ) + ) res = self.http.get(policy_events_url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] # Increment the offset by limit - ctx['offset'] += ctx['limit'] + ctx["offset"] += ctx["limit"] return [True, {"ctx": ctx, "data": res.json()}] - def get_policy_events_range(self, from_sec, to_sec, sampling=None, aggregations=None, scope_filter=None, - event_filter=None): - '''**Description** + def get_policy_events_range(self, from_sec, to_sec, sampling=None, aggregations=None, scope_filter=None, event_filter=None): + """**Description** Fetch all policy events that occurred in the time range [from_sec:to_sec]. This method is used in conjunction with :func:`~sdcclient.SdSecureClient.get_more_policy_events` to provide paginated access to policy events. @@ -56,21 +63,22 @@ def get_policy_events_range(self, from_sec, to_sec, sampling=None, aggregations= **Example** `examples/get_secure_policy_events.py `_ - ''' - options = {"from": int(from_sec) * 1000000, - "to": int(to_sec) * 1000000, - "offset": 0, - "limit": 1000, - "sampling": sampling, - "aggregations": aggregations, - "scopeFilter": scope_filter, - "eventFilter": event_filter} + """ + options = { + "from": int(from_sec) * 1000000, + "to": int(to_sec) * 1000000, + "offset": 0, + "limit": 1000, + "sampling": sampling, + "aggregations": aggregations, + "scopeFilter": scope_filter, + "eventFilter": event_filter, + } ctx = {k: v for k, v in options.items() if v is not None} return self._get_policy_events_int(ctx) - def get_policy_events_duration(self, duration_sec, sampling=None, aggregations=None, scope_filter=None, - event_filter=None): - '''**Description** + def get_policy_events_duration(self, duration_sec, sampling=None, aggregations=None, scope_filter=None, event_filter=None): + """**Description** Fetch all policy events that occurred in the last duration_sec seconds. This method is used in conjunction with :func:`~sdcclient.SdSecureClient.get_more_policy_events` to provide paginated access to policy events. @@ -89,25 +97,28 @@ def get_policy_events_duration(self, duration_sec, sampling=None, aggregations=N **Example** `examples/get_secure_policy_events.py `_ - ''' + """ epoch = datetime.datetime.utcfromtimestamp(0) to_ts = (datetime.datetime.utcnow() - epoch).total_seconds() * 1000 * 1000 from_ts = to_ts - (int(duration_sec) * 1000 * 1000) - options = {"to": to_ts, - "from": from_ts, - "offset": 0, - "limit": 1000, - "sampling": sampling, - "aggregations": aggregations, - "scopeFilter": scope_filter, - "eventFilter": event_filter} + options = { + "to": to_ts, + "from": from_ts, + "offset": 0, + "limit": 1000, + "sampling": sampling, + "aggregations": aggregations, + "scopeFilter": scope_filter, + "eventFilter": event_filter, + } ctx = {k: v for k, v in options.items() if v is not None} return self._get_policy_events_int(ctx) - def get_policy_events_id_range(self, id, from_sec, to_sec, sampling=None, aggregations=None, scope_filter=None, - event_filter=None): - '''**Description** + def get_policy_events_id_range( + self, id, from_sec, to_sec, sampling=None, aggregations=None, scope_filter=None, event_filter=None + ): + """**Description** Fetch all policy events with id that occurred in the time range [from_sec:to_sec]. This method is used in conjunction with :func:`~sdcclient.SdSecureClient.get_more_policy_events` to provide paginated access to policy events. @@ -128,23 +139,26 @@ def get_policy_events_id_range(self, id, from_sec, to_sec, sampling=None, aggreg **Example** `examples/get_secure_policy_events.py `_ - ''' - - options = {"id": id, - "from": int(from_sec) * 1000000, - "to": int(to_sec) * 1000000, - "offset": 0, - "limit": 1000, - "sampling": sampling, - "aggregations": aggregations, - "scopeFilter": scope_filter, - "eventFilter": event_filter} + """ + + options = { + "id": id, + "from": int(from_sec) * 1000000, + "to": int(to_sec) * 1000000, + "offset": 0, + "limit": 1000, + "sampling": sampling, + "aggregations": aggregations, + "scopeFilter": scope_filter, + "eventFilter": event_filter, + } ctx = {k: v for k, v in options.items() if v is not None} return self._get_policy_events_int(ctx) - def get_policy_events_id_duration(self, id, duration_sec, sampling=None, aggregations=None, scope_filter=None, - event_filter=None): - '''**Description** + def get_policy_events_id_duration( + self, id, duration_sec, sampling=None, aggregations=None, scope_filter=None, event_filter=None + ): + """**Description** Fetch all policy events with id that occurred in the last duration_sec seconds. This method is used in conjunction with :func:`~sdcclient.SdSecureClient.get_more_policy_events` to provide paginated access to policy events. @@ -164,25 +178,27 @@ def get_policy_events_id_duration(self, id, duration_sec, sampling=None, aggrega **Example** `examples/get_secure_policy_events.py `_ - ''' + """ epoch = datetime.datetime.utcfromtimestamp(0) to_ts = (datetime.datetime.utcnow() - epoch).total_seconds() * 1000 * 1000 from_ts = to_ts - (int(duration_sec) * 1000 * 1000) - options = {"id": id, - "to": to_ts, - "from": from_ts, - "offset": 0, - "limit": 1000, - "sampling": sampling, - "aggregations": aggregations, - "scopeFilter": scope_filter, - "eventFilter": event_filter} + options = { + "id": id, + "to": to_ts, + "from": from_ts, + "offset": 0, + "limit": 1000, + "sampling": sampling, + "aggregations": aggregations, + "scopeFilter": scope_filter, + "eventFilter": event_filter, + } ctx = {k: v for k, v in options.items() if v is not None} return self._get_policy_events_int(ctx) def get_more_policy_events(self, ctx): - '''**Description** + """**Description** Fetch additional policy events after an initial call to :func:`~sdcclient.SdSecureClient.get_policy_events_range` / :func:`~sdcclient.SdSecureClient.get_policy_events_duration` or a prior call to get_more_policy_events. @@ -208,5 +224,5 @@ def get_more_policy_events(self, ctx): **Example** `examples/get_secure_policy_events.py `_ - ''' + """ return self._get_policy_events_int(ctx) diff --git a/sdcclient/secure/_policy_events_v1.py b/sdcclient/secure/_policy_events_v1.py index 6d73cf29..08a1fe80 100644 --- a/sdcclient/secure/_policy_events_v1.py +++ b/sdcclient/secure/_policy_events_v1.py @@ -4,32 +4,30 @@ class PolicyEventsClientV1(_SdcCommon): - def __init__(self, token="", sdc_url='https://secure.sysdig.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://secure.sysdig.com", ssl_verify=True, custom_headers=None): super(PolicyEventsClientV1, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDS" def _get_policy_events_int(self, ctx): limit = ctx.get("limit", 50) - policy_events_url = self.url + '/api/v1/secureEvents?limit={limit}{frm}{to}{filter}{cursor}'.format( + policy_events_url = self.url + "/api/v1/secureEvents?limit={limit}{frm}{to}{filter}{cursor}".format( limit=limit, frm=f"&from={int(ctx['from']):d}" if "from" in ctx else "", to=f"&to={int(ctx['to']):d}" if "to" in ctx else "", - filter=f'&filter={ctx["filter"]}' if "filter" in ctx else "", - cursor=f'&cursor={ctx["cursor"]}' if "cursor" in ctx else "") + filter=f"&filter={ctx['filter']}" if "filter" in ctx else "", + cursor=f"&cursor={ctx['cursor']}" if "cursor" in ctx else "", + ) res = self.http.get(policy_events_url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] - ctx = { - "limit": limit, - "cursor": res.json()["page"].get("prev", None) - } + ctx = {"limit": limit, "cursor": res.json()["page"].get("prev", None)} return [True, {"ctx": ctx, "data": res.json()["data"]}] def get_policy_events_range(self, from_sec, to_sec, filter=None): - '''**Description** + """**Description** Fetch all policy events that occurred in the time range [from_sec:to_sec]. This method is used in conjunction with :func:`~sdcclient.SdSecureClient.get_more_policy_events` to provide paginated access to policy events. @@ -47,16 +45,13 @@ def get_policy_events_range(self, from_sec, to_sec, filter=None): **Example** `examples/get_secure_policy_events.py `_ - ''' - options = {"from": int(from_sec) * 1_000_000_000, - "to": int(to_sec) * 1_000_000_000, - "limit": 999, - "filter": filter} + """ + options = {"from": int(from_sec) * 1_000_000_000, "to": int(to_sec) * 1_000_000_000, "limit": 999, "filter": filter} ctx = {k: v for k, v in options.items() if v is not None} return self._get_policy_events_int(ctx) def get_policy_events_duration(self, duration_sec, filter=None): - '''**Description** + """**Description** Fetch all policy events that occurred in the last duration_sec seconds. This method is used in conjunction with :func:`~sdcclient.SdSecureClient.get_more_policy_events` to provide paginated access to policy events. @@ -73,14 +68,14 @@ def get_policy_events_duration(self, duration_sec, filter=None): **Example** `examples/get_secure_policy_events.py `_ - ''' + """ to_sec = int((datetime.datetime.utcnow() - datetime.datetime.utcfromtimestamp(0)).total_seconds()) from_sec = to_sec - (int(duration_sec)) return self.get_policy_events_range(from_sec, to_sec, filter) def get_more_policy_events(self, ctx): - '''**Description** + """**Description** Fetch additional policy events after an initial call to :func:`~sdcclient.SdSecureClient.get_policy_events_range` / :func:`~sdcclient.SdSecureClient.get_policy_events_duration` or a prior call to get_more_policy_events. @@ -113,7 +108,7 @@ def get_more_policy_events(self, ctx): **Example** `examples/get_secure_policy_events.py `_ - ''' + """ return self._get_policy_events_int(ctx) def get_policy_event(self, event_id): @@ -126,7 +121,7 @@ def get_policy_event(self, event_id): A tuple where the first parameter indicates if the request was successful, and the second parameter holds the info from the policy event or the error. """ - policy_events_url = f'{self.url}/api/v1/secureEvents/{event_id}' + policy_events_url = f"{self.url}/api/v1/secureEvents/{event_id}" res = self.http.get(policy_events_url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): diff --git a/sdcclient/secure/_policy_v2.py b/sdcclient/secure/_policy_v2.py index ff88fade..80c5bf79 100644 --- a/sdcclient/secure/_policy_v2.py +++ b/sdcclient/secure/_policy_v2.py @@ -18,7 +18,7 @@ def policy_action_capture(file_name, secs_before=5, secs_after=15, filter=""): "filter": filter, "name": file_name, "bucketName": "", - "storageType": "S3" + "storageType": "S3", } @@ -35,7 +35,7 @@ def policy_action_kill(): class PolicyClientV2(_SdcCommon): - def __init__(self, token="", sdc_url='https://secure.sysdig.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://secure.sysdig.com", ssl_verify=True, custom_headers=None): super(PolicyClientV2, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDS" @@ -54,7 +54,7 @@ def create_default_policies(self): >>> ok, res = client.create_default_policies() """ - res = self.http.post(self.url + '/api/v2/policies/default', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.post(self.url + "/api/v2/policies/default", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def delete_all_policies(self): @@ -92,7 +92,7 @@ def list_policies(self): >>> ok, res = client.list_policies() """ - res = self.http.get(self.url + '/api/v2/policies', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/v2/policies", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_policy(self, name): @@ -145,11 +145,21 @@ def get_policy_id(self, id): >>> print((json.dumps(res, indent=2))) """ - res = self.http.get(self.url + '/api/v2/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + "/api/v2/policies/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) - def add_policy(self, name, description, rule_names=[], actions=[], scope=None, severity=0, enabled=True, - notification_channels=[], type="falco"): + def add_policy( + self, + name, + description, + rule_names=[], + actions=[], + scope=None, + severity=0, + enabled=True, + notification_channels=[], + type="falco", + ): """ Adds a new policy. @@ -188,8 +198,7 @@ def add_policy(self, name, description, rule_names=[], actions=[], scope=None, s "type": type, } - res = self.http.post(self.url + '/api/v2/policies', headers=self.hdrs, data=json.dumps(policy), - verify=self.ssl_verify) + res = self.http.post(self.url + "/api/v2/policies", headers=self.hdrs, data=json.dumps(policy), verify=self.ssl_verify) return self._request_result(res) def add_policy_json(self, policy_json): @@ -217,12 +226,23 @@ def add_policy_json(self, policy_json): except Exception as e: return [False, "policy json is not valid json: {}".format(str(e))] - res = self.http.post(self.url + '/api/v2/policies', headers=self.hdrs, data=json.dumps(policy_obj), - verify=self.ssl_verify) + res = self.http.post( + self.url + "/api/v2/policies", headers=self.hdrs, data=json.dumps(policy_obj), verify=self.ssl_verify + ) return self._request_result(res) - def update_policy(self, id, name=None, description=None, rule_names=None, actions=None, scope=None, - severity=None, enabled=None, notification_channels=None): + def update_policy( + self, + id, + name=None, + description=None, + rule_names=None, + actions=None, + scope=None, + severity=None, + enabled=None, + notification_channels=None, + ): """ Update policy with the provided values. Only the defined values will be updated. @@ -270,8 +290,9 @@ def update_policy(self, id, name=None, description=None, rule_names=None, action if notification_channels is not None: policy["notificationChannelIds"] = notification_channels - res = self.http.put(self.url + '/api/v2/policies/{}'.format(id), headers=self.hdrs, data=json.dumps(policy), - verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/v2/policies/{}".format(id), headers=self.hdrs, data=json.dumps(policy), verify=self.ssl_verify + ) return self._request_result(res) def update_policy_json(self, policy_json): @@ -302,8 +323,12 @@ def update_policy_json(self, policy_json): if "id" not in policy_obj: return [False, "Policy Json does not have an 'id' field"] - res = self.http.put(self.url + '/api/v2/policies/{}'.format(policy_obj["id"]), headers=self.hdrs, - data=json.dumps(policy_obj), verify=self.ssl_verify) + res = self.http.put( + self.url + "/api/v2/policies/{}".format(policy_obj["id"]), + headers=self.hdrs, + data=json.dumps(policy_obj), + verify=self.ssl_verify, + ) return self._request_result(res) def delete_policy_name(self, name): @@ -347,5 +372,5 @@ def delete_policy_id(self, id): >>> ok, res = client.delete_policy_id(id=123456) """ - res = self.http.delete(self.url + '/api/v2/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + "/api/v2/policies/{}".format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) diff --git a/sdcclient/secure/scanning/_alerts.py b/sdcclient/secure/scanning/_alerts.py index c39f356d..98a63e5c 100644 --- a/sdcclient/secure/scanning/_alerts.py +++ b/sdcclient/secure/scanning/_alerts.py @@ -4,7 +4,7 @@ class ScanningAlertsClientV1(_SdcCommon): - def __init__(self, token="", sdc_url='https://secure.sysdig.com', ssl_verify=True, custom_headers=None): + def __init__(self, token="", sdc_url="https://secure.sysdig.com", ssl_verify=True, custom_headers=None): super(ScanningAlertsClientV1, self).__init__(token, sdc_url, ssl_verify, custom_headers) self.product = "SDS" @@ -27,8 +27,10 @@ def scan_result_change_any(alert): def cve_update(alert): alert["triggers"]["vuln_update"] = True - def add_repository_alert(self, name, registry, repository, tag, description="", triggers=None, notification_channels=None, enabled=True): - ''' + def add_repository_alert( + self, name, registry, repository, tag, description="", triggers=None, notification_channels=None, enabled=True + ): + """ Create a new repository alert Args: @@ -59,43 +61,58 @@ def add_repository_alert(self, name, registry, repository, tag, description="", >>> if not ok: >>> print(f"error creating alert: {res}") >>> alert_id = res["alertId"] - ''' + """ if not triggers: triggers = [ScanningAlertsClientV1.RepositoryAlertTrigger.new_image_analyzed] alert = { - 'name': name, - 'description': description, - 'type': 'repository', - 'triggers': { - "unscanned": False, - "analysis_update": False, - "vuln_update": False, - "policy_eval": False, - "failed": False - }, - 'repositories': [{ - 'registry': registry, - 'repository': repository, - 'tag': tag, - }], - "onlyPassFail": False, - "skipEventSend": False, - 'enabled': enabled, - 'notificationChannelIds': notification_channels, + "name": name, + "description": description, + "type": "repository", + "triggers": { + "unscanned": False, + "analysis_update": False, + "vuln_update": False, + "policy_eval": False, + "failed": False, + }, + "repositories": [ + { + "registry": registry, + "repository": repository, + "tag": tag, + } + ], + "onlyPassFail": False, + "skipEventSend": False, + "enabled": enabled, + "notificationChannelIds": notification_channels, } for trigger in triggers: trigger(alert) - res = self.http.post(f"{self.url}/api/scanning/v1/alerts", headers=self.hdrs, data=json.dumps(alert), verify=self.ssl_verify) + res = self.http.post( + f"{self.url}/api/scanning/v1/alerts", headers=self.hdrs, data=json.dumps(alert), verify=self.ssl_verify + ) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()] - def update_repository_alert(self, id, name=None, registry=None, repository=None, tag=None, description=None, triggers=None, notification_channels=None, enabled=None): - ''' + def update_repository_alert( + self, + id, + name=None, + registry=None, + repository=None, + tag=None, + description=None, + triggers=None, + notification_channels=None, + enabled=None, + ): + """ Updates a repository alert. Fields that are not specified, will not be modified. Args: @@ -126,7 +143,7 @@ def update_repository_alert(self, id, name=None, registry=None, repository=None, >>> if not ok: >>> print(f"error updating alert: {res}") >>> alert_id = res["alertId"] - ''' + """ ok, alert = self.get_alert(id) if not ok: return False, f"unable to retrieve alert by ID {id}: {alert}" @@ -143,11 +160,11 @@ def update_repository_alert(self, id, name=None, registry=None, repository=None, alert["repositories"][0]["tag"] = tag if triggers is not None: alert["triggers"] = { - "unscanned": False, - "analysis_update": False, - "vuln_update": False, - "policy_eval": False, - "failed": False + "unscanned": False, + "analysis_update": False, + "vuln_update": False, + "policy_eval": False, + "failed": False, } alert["onlyPassFail"] = False for trigger in triggers: @@ -157,7 +174,9 @@ def update_repository_alert(self, id, name=None, registry=None, repository=None, if enabled is not None: alert["enabled"] = enabled - res = self.http.put(f"{self.url}/api/scanning/v1/alerts/{id}", headers=self.hdrs, data=json.dumps(alert), verify=self.ssl_verify) + res = self.http.put( + f"{self.url}/api/scanning/v1/alerts/{id}", headers=self.hdrs, data=json.dumps(alert), verify=self.ssl_verify + ) if not self._checkResponse(res): return [False, self.lasterr] @@ -183,7 +202,7 @@ def cve_update(alert): alert["triggers"]["vuln_update"] = True def add_runtime_alert(self, name, description="", scope="", triggers=None, notification_channels=None, enabled=True): - ''' + """ Create a new runtime alert Args: @@ -210,39 +229,43 @@ def add_runtime_alert(self, name, description="", scope="", triggers=None, notif >>> if not ok: >>> print(f"error creating alert: {res}") >>> alert_id = res["alertId"] - ''' + """ if not triggers: triggers = [ScanningAlertsClientV1.RuntimeAlertTrigger.unscanned_image] alert = { - 'name': name, - 'description': description, - 'type': 'runtime', - 'triggers': { - "unscanned": False, - "analysis_update": False, - "vuln_update": False, - "policy_eval": False, - "failed": False - }, - 'scope': scope, - "onlyPassFail": False, - "skipEventSend": False, - 'enabled': enabled, - 'notificationChannelIds': notification_channels, + "name": name, + "description": description, + "type": "runtime", + "triggers": { + "unscanned": False, + "analysis_update": False, + "vuln_update": False, + "policy_eval": False, + "failed": False, + }, + "scope": scope, + "onlyPassFail": False, + "skipEventSend": False, + "enabled": enabled, + "notificationChannelIds": notification_channels, } for trigger in triggers: trigger(alert) - res = self.http.post(f"{self.url}/api/scanning/v1/alerts", headers=self.hdrs, data=json.dumps(alert), verify=self.ssl_verify) + res = self.http.post( + f"{self.url}/api/scanning/v1/alerts", headers=self.hdrs, data=json.dumps(alert), verify=self.ssl_verify + ) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()] - def update_runtime_alert(self, id, name=None, description=None, scope=None, triggers=None, notification_channels=None, enabled=None): - ''' + def update_runtime_alert( + self, id, name=None, description=None, scope=None, triggers=None, notification_channels=None, enabled=None + ): + """ Updates a runtime alert. Fields that are not specified, will not be modified. Args: @@ -269,7 +292,7 @@ def update_runtime_alert(self, id, name=None, description=None, scope=None, trig >>> if not ok: >>> print(f"error updating alert: {res}") >>> alert_id = res["alertId"] - ''' + """ ok, alert = self.get_alert(id) if not ok: return False, f"unable to retrieve alert by ID {id}: {alert}" @@ -282,11 +305,11 @@ def update_runtime_alert(self, id, name=None, description=None, scope=None, trig alert["scope"] = scope if triggers is not None: alert["triggers"] = { - "unscanned": False, - "analysis_update": False, - "vuln_update": False, - "policy_eval": False, - "failed": False + "unscanned": False, + "analysis_update": False, + "vuln_update": False, + "policy_eval": False, + "failed": False, } alert["onlyPassFail"] = False for trigger in triggers: @@ -296,14 +319,16 @@ def update_runtime_alert(self, id, name=None, description=None, scope=None, trig if enabled is not None: alert["enabled"] = enabled - res = self.http.put(f"{self.url}/api/scanning/v1/alerts/{id}", headers=self.hdrs, data=json.dumps(alert), verify=self.ssl_verify) + res = self.http.put( + f"{self.url}/api/scanning/v1/alerts/{id}", headers=self.hdrs, data=json.dumps(alert), verify=self.ssl_verify + ) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()] def get_alert(self, alertid): - ''' + """ Retrieve the scanning alert with the given id Args: @@ -319,7 +344,7 @@ def get_alert(self, alertid): >>> if not ok: >>> print(f"error retrieving alert {alert_id}: {res}") >>> alert = res - ''' + """ res = self.http.get(f"{self.url}/api/scanning/v1/alerts/{alertid}", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -327,7 +352,7 @@ def get_alert(self, alertid): return [True, res.json()] def list_alerts(self, limit=None, cursor=None): - ''' + """ List the current set of scanning alerts. Args: limit(int): Maximum number of alerts in the response. @@ -348,13 +373,13 @@ def list_alerts(self, limit=None, cursor=None): >>> # Load more alerts >>> if res["responseMetadata"] is not None: >>> ok, res = client.list_alerts(cursor=res["responseMetadata"]["next_cursor"]) - ''' + """ url = f"{self.url}/api/scanning/v1/alerts" if limit: - url += '?limit=' + str(limit) + url += "?limit=" + str(limit) if cursor: - url += '&cursor=' + cursor + url += "&cursor=" + cursor res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -362,8 +387,10 @@ def list_alerts(self, limit=None, cursor=None): return [True, res.json()] - def delete_alert(self, policyid): # FIXME: policyid must be maintained for backwards compatibility reasons with older versions, but should be renamed to id or alert_id - ''' + def delete_alert( + self, policyid + ): # FIXME: policyid must be maintained for backwards compatibility reasons with older versions, but should be renamed to id or alert_id + """ Delete the alert with the given id Args: @@ -373,7 +400,7 @@ def delete_alert(self, policyid): # FIXME: policyid must be maintained for back >>> client = ScanningAlertsClientV1(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), >>> token=os.getenv("SDC_SECURE_TOKEN")) >>> client.delete_alert(alert_id) - ''' + """ res = self.http.delete(f"{self.url}/api/scanning/v1/alerts/{policyid}", headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): @@ -381,7 +408,7 @@ def delete_alert(self, policyid): # FIXME: policyid must be maintained for back return [True, res.text] def add_alert_object(self, object): - ''' + """ Adds alert object as raw JSON object. Args: @@ -407,8 +434,8 @@ def add_alert_object(self, object): >>> "notificationChannelIds": [] >>> } >>> client.add_alert_object(alert) - ''' - url = self.url + '/api/scanning/v1/alerts' + """ + url = self.url + "/api/scanning/v1/alerts" data = json.dumps(object) res = self.http.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): diff --git a/specs/_common/agent_spec.py b/specs/_common/agent_spec.py index e0734ab1..55f30849 100644 --- a/specs/_common/agent_spec.py +++ b/specs/_common/agent_spec.py @@ -33,22 +33,17 @@ def _debug_enabled(): def _agent_configuration(): return { "files": [ - { - "filter": "host.mac = \"08:00:27:de:5b:b9\"", - "content": _mysql_app_check() - }, - { - "filter": "*", - "content": _debug_enabled() - } + {"filter": 'host.mac = "08:00:27:de:5b:b9"', "content": _mysql_app_check()}, + {"filter": "*", "content": _debug_enabled()}, ] } with description("Agent", "integration-agent") as self: with before.all: - self.client = SdcClient(sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), - token=os.getenv("SDC_MONITOR_TOKEN")) + self.client = SdcClient( + sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), token=os.getenv("SDC_MONITOR_TOKEN") + ) with it("is able to retrieve the agent configuration"): ok, res = self.client.get_agents_config() @@ -79,13 +74,17 @@ def _agent_configuration(): ok, res = self.client.get_connected_agents() expect((ok, res)).to(be_successful_api_call) - expect(res).to(contain(have_keys( - "customer", - "machineId", - "hostName", - connected=True, - attributes=have_keys( - "hidden", - "version", + expect(res).to( + contain( + have_keys( + "customer", + "machineId", + "hostName", + connected=True, + attributes=have_keys( + "hidden", + "version", + ), + ) ) - ))) + ) diff --git a/specs/_common/team_spec.py b/specs/_common/team_spec.py index 9579686c..0f530840 100644 --- a/specs/_common/team_spec.py +++ b/specs/_common/team_spec.py @@ -6,21 +6,19 @@ from specs import be_successful_api_call from collections import defaultdict -TEAM_PREFIX_NAME = 'sysdig-sdk - ' +TEAM_PREFIX_NAME = "sysdig-sdk - " with description("Teams", "integration", "teams") as self: with before.all: self.secure_client = SdSecureClient( - sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN") + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") ) self.monitor_client = SdMonitorClient( - sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), - token=os.getenv("SDC_MONITOR_TOKEN") + sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), token=os.getenv("SDC_MONITOR_TOKEN") ) with before.each: - self.team_name = f'{TEAM_PREFIX_NAME}{uuid.uuid4()}' + self.team_name = f"{TEAM_PREFIX_NAME}{uuid.uuid4()}" with it("it should list all teams"): ok, teams_monitor = self.monitor_client.get_teams() @@ -34,7 +32,7 @@ def count_products(teams, count): for team in teams: - for product in team['products']: + for product in team["products"]: count[product] += 1 count_products(teams_monitor, count_monitor) @@ -49,10 +47,10 @@ def count_products(teams, count): ok, team = self.secure_client.create_team(self.team_name) expect((ok, team)).to(be_successful_api_call) - ok, teams = self.monitor_client.get_teams(product_filter='SDC') + ok, teams = self.monitor_client.get_teams(product_filter="SDC") expect((ok, teams)).to(be_successful_api_call) - secure_teams = [t for t in teams if 'SDS' in t['products']] + secure_teams = [t for t in teams if "SDS" in t["products"]] expect(len(secure_teams)).to(equal(0)) ok, res = self.secure_client.delete_team(self.team_name) @@ -62,10 +60,10 @@ def count_products(teams, count): ok, team = self.monitor_client.create_team(self.team_name) expect((ok, team)).to(be_successful_api_call) - ok, teams = self.secure_client.get_teams(product_filter='SDS') + ok, teams = self.secure_client.get_teams(product_filter="SDS") expect((ok, teams)).to(be_successful_api_call) - monitor_teams = [t for t in teams if 'SDC' in t['products']] + monitor_teams = [t for t in teams if "SDC" in t["products"]] expect(len(monitor_teams)).to(equal(0)) ok, res = self.monitor_client.delete_team(self.team_name) diff --git a/specs/_common/user_provisioning_spec.py b/specs/_common/user_provisioning_spec.py index 066ccab7..91ac2cec 100644 --- a/specs/_common/user_provisioning_spec.py +++ b/specs/_common/user_provisioning_spec.py @@ -10,8 +10,9 @@ with description("User Provisioning", "integration") as self: with before.each: - self.client = SdcClient(sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), - token=os.getenv("SDC_MONITOR_TOKEN")) + self.client = SdcClient( + sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), token=os.getenv("SDC_MONITOR_TOKEN") + ) self.user_name = "terraform-test+user@sysdig.com" with after.each: diff --git a/specs/monitor/alerts_v1_spec.py b/specs/monitor/alerts_v1_spec.py index 99b53176..13578110 100644 --- a/specs/monitor/alerts_v1_spec.py +++ b/specs/monitor/alerts_v1_spec.py @@ -12,8 +12,9 @@ with description("Alerts v1", "integration") as self: with before.all: - self.client = SdMonitorClient(sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), - token=os.getenv("SDC_MONITOR_TOKEN")) + self.client = SdMonitorClient( + sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), token=os.getenv("SDC_MONITOR_TOKEN") + ) with before.each: self.cleanup_alerts() @@ -21,7 +22,6 @@ with after.each: self.cleanup_alerts() - def cleanup_alerts(self): ok, res = self.client.get_alerts() expect((ok, res)).to(be_successful_api_call) @@ -31,27 +31,26 @@ def cleanup_alerts(self): call = self.client.delete_alert(alert) expect(call).to(be_successful_api_call) - def create_test_alert(self): ok, res = self.client.create_alert( name=_ALERT_NAME, description=_ALERT_DESCRIPTION, severity=6, for_atleast_s=60, - condition='avg(cpu.used.percent) > 80', + condition="avg(cpu.used.percent) > 80", # We want to check this metric for every process on every machine. - segmentby=['host.mac', 'proc.name'], - segment_condition='ANY', + segmentby=["host.mac", "proc.name"], + segment_condition="ANY", # if there is more than one tomcat process, this alert will fire when a single one of them crosses the # 80% threshold. user_filter='proc.name = "tomcat"', - enabled=False) + enabled=False, + ) if ok: self.test_alert = res["alert"] return ok, res - with it("is able to create an alert"): ok, res = self.create_test_alert() expect((ok, res)).to(be_successful_api_call) diff --git a/specs/monitor/captures_v1_spec.py b/specs/monitor/captures_v1_spec.py index 91ce42d1..c2a1307d 100644 --- a/specs/monitor/captures_v1_spec.py +++ b/specs/monitor/captures_v1_spec.py @@ -15,13 +15,14 @@ def randomword(length): letters = string.ascii_lowercase + string.digits - return ''.join(random.choice(letters) for _ in range(length)) + return "".join(random.choice(letters) for _ in range(length)) with description("Captures v1", "integration-agent") as self: with before.all: - self.client = SdMonitorClient(sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), - token=os.getenv("SDC_MONITOR_TOKEN")) + self.client = SdMonitorClient( + sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), token=os.getenv("SDC_MONITOR_TOKEN") + ) self.capture_name = f"apicapture-sdk-{randomword(10)}" self.hostname = socket.gethostname() @@ -34,25 +35,27 @@ def randomword(length): expect((ok, res)).to(be_successful_api_call) with it("is able to create a capture"): - ok, res = self.client.create_sysdig_capture(hostname=self.hostname, - capture_name=self.capture_name, - duration=10) + ok, res = self.client.create_sysdig_capture(hostname=self.hostname, capture_name=self.capture_name, duration=10) expect((ok, res)).to(be_successful_api_call) with it("is able to retrieve the capture we have created"): ok, res = self.client.get_sysdig_captures() expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_key( - "dumps", contain( - have_keys( - "size", - "status", - "folder", - agent=have_key("hostName", equal(self.hostname)), - name=equal(f"{self.capture_name}.scap"), - )) - )) + expect(res).to( + have_key( + "dumps", + contain( + have_keys( + "size", + "status", + "folder", + agent=have_key("hostName", equal(self.hostname)), + name=equal(f"{self.capture_name}.scap"), + ) + ), + ) + ) # DEACTIVATED: This test is not enabled because sometimes the agent does not trigger the capture # and therefore this test fails. As it is not our duty to verify that the agent is able to create the capture, diff --git a/specs/monitor/dashboard_converters/dashboard_scope_spec.py b/specs/monitor/dashboard_converters/dashboard_scope_spec.py index e07aa4ad..ab899731 100644 --- a/specs/monitor/dashboard_converters/dashboard_scope_spec.py +++ b/specs/monitor/dashboard_converters/dashboard_scope_spec.py @@ -7,184 +7,216 @@ with it("parses correctly: agent.id is foo"): param = "agent.id is foo" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "equals", - "value": ["foo"] - }]])) + expect(res).to( + equal( + [True, [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "equals", "value": ["foo"]}]] + ) + ) with it("parses correctly: agent.id = foo"): param = "agent.id = foo" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "equals", - "value": ["foo"] - }]])) + expect(res).to( + equal( + [True, [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "equals", "value": ["foo"]}]] + ) + ) with it('parses correctly: agent.id = "foo"'): param = 'agent.id = "foo"' res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "equals", - "value": ["foo"] - }]])) + expect(res).to( + equal( + [True, [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "equals", "value": ["foo"]}]] + ) + ) with it('parses correctly: cluster.id-number = "foo-bar"'): param = 'cluster.id-number = "foo-bar"' res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "cluster.id-number", - "operator": "equals", - "value": ["foo-bar"] - }]])) + expect(res).to( + equal( + [ + True, + [ + { + "displayName": "", + "isVariable": False, + "operand": "cluster.id-number", + "operator": "equals", + "value": ["foo-bar"], + } + ], + ] + ) + ) with it("parses correctly: agent.id = 'foo'"): param = "agent.id = 'foo'" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "equals", - "value": ["foo"] - }]])) + expect(res).to( + equal( + [True, [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "equals", "value": ["foo"]}]] + ) + ) with it("parses correctly: agent.id is not foo"): param = "agent.id is not foo" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "notEquals", - "value": ["foo"] - }]])) + expect(res).to( + equal( + [ + True, + [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "notEquals", "value": ["foo"]}], + ] + ) + ) with it("parses correctly: agent.id in foo"): param = "agent.id in foo" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "in", - "value": ["foo"] - }]])) + expect(res).to( + equal([True, [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "in", "value": ["foo"]}]]) + ) with it("parses correctly: agent.id in [foo]"): param = "agent.id in [foo]" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "in", - "value": ["foo"] - }]])) + expect(res).to( + equal([True, [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "in", "value": ["foo"]}]]) + ) with it("parses correctly: agent.id in [foo, bar]"): param = "agent.id in [foo, bar]" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "in", - "value": ["foo", "bar"] - }]])) + expect(res).to( + equal( + [ + True, + [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "in", "value": ["foo", "bar"]}], + ] + ) + ) with it("parses correctly: agent.id in [foo, bar, baz]"): param = "agent.id in [foo, bar, baz]" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "in", - "value": ["foo", "bar", "baz"] - }]])) + expect(res).to( + equal( + [ + True, + [ + { + "displayName": "", + "isVariable": False, + "operand": "agent.id", + "operator": "in", + "value": ["foo", "bar", "baz"], + } + ], + ] + ) + ) with it("parses correctly: agent.id in [foo, bar, baz] and agent.name is 'foobar'"): param = "agent.id in [foo, bar, baz] and agent.name is 'foobar'" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "in", - "value": ["foo", "bar", "baz"] - }, { - "displayName": "", - "isVariable": False, - "operand": "agent.name", - "operator": "equals", - "value": ["foobar"] - }]])) + expect(res).to( + equal( + [ + True, + [ + { + "displayName": "", + "isVariable": False, + "operand": "agent.id", + "operator": "in", + "value": ["foo", "bar", "baz"], + }, + { + "displayName": "", + "isVariable": False, + "operand": "agent.name", + "operator": "equals", + "value": ["foobar"], + }, + ], + ] + ) + ) with it("parses correctly: agent.id not in foo"): param = "agent.id not in foo" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "notIn", - "value": ["foo"] - }]])) + expect(res).to( + equal( + [True, [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "notIn", "value": ["foo"]}]] + ) + ) with it("parses correctly: agent.id not in [foo, bar, baz]"): param = "agent.id not in [foo, bar, baz]" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "notIn", - "value": ["foo", "bar", "baz"] - }]])) + expect(res).to( + equal( + [ + True, + [ + { + "displayName": "", + "isVariable": False, + "operand": "agent.id", + "operator": "notIn", + "value": ["foo", "bar", "baz"], + } + ], + ] + ) + ) with it("parses correctly: agent.id contains foo"): param = "agent.id contains foo" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "contains", - "value": ["foo"] - }]])) + expect(res).to( + equal( + [ + True, + [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "contains", "value": ["foo"]}], + ] + ) + ) with it("parses correctly: agent.id does not contain foo"): param = "agent.id does not contain foo" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "notContains", - "value": ["foo"] - }]])) + expect(res).to( + equal( + [ + True, + [ + { + "displayName": "", + "isVariable": False, + "operand": "agent.id", + "operator": "notContains", + "value": ["foo"], + } + ], + ] + ) + ) with it("parses correctly: agent.id starts with foo"): param = "agent.id starts with foo" res = convert_scope_string_to_expression(param) - expect(res).to(equal([True, [{ - "displayName": "", - "isVariable": False, - "operand": "agent.id", - "operator": "startsWith", - "value": ["foo"] - }]])) + expect(res).to( + equal( + [ + True, + [{"displayName": "", "isVariable": False, "operand": "agent.id", "operator": "startsWith", "value": ["foo"]}], + ] + ) + ) with it("returns ok, but empty if scope is None"): res = convert_scope_string_to_expression(None) diff --git a/specs/monitor/dashboards_v2_spec.py b/specs/monitor/dashboards_v2_spec.py index a75466db..73d03d24 100644 --- a/specs/monitor/dashboards_v2_spec.py +++ b/specs/monitor/dashboards_v2_spec.py @@ -13,8 +13,9 @@ with description("Dashboards v2", "integration") as self: with before.all: - self.client = DashboardsClientV2(sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), - token=os.getenv("SDC_MONITOR_TOKEN")) + self.client = DashboardsClientV2( + sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), token=os.getenv("SDC_MONITOR_TOKEN") + ) with before.each: self.cleanup_test_dashboards() @@ -22,7 +23,6 @@ with after.each: self.cleanup_test_dashboards() - def cleanup_test_dashboards(self): ok, res = self.client.get_dashboards() expect((ok, res)).to(be_successful_api_call) @@ -32,7 +32,6 @@ def cleanup_test_dashboards(self): call = self.client.delete_dashboard(dashboard) expect(call).to(be_successful_api_call) - def create_test_dashboard(self): ok, res = self.client.create_dashboard(name=_DASHBOARD_NAME) if ok: @@ -40,7 +39,6 @@ def create_test_dashboard(self): return ok, res - with it("is able to create a dashboard with just a name"): ok, res = self.client.create_dashboard(name=_DASHBOARD_NAME) expect((ok, res)).to(be_successful_api_call) @@ -54,16 +52,15 @@ def create_test_dashboard(self): f.flush() f.seek(0) - ok, res = self.client.create_dashboard_from_file(dashboard_name=f"{_DASHBOARD_NAME}_2", filename=f.name, - filter=None) + ok, res = self.client.create_dashboard_from_file(dashboard_name=f"{_DASHBOARD_NAME}_2", filename=f.name, filter=None) expect((ok, res)).to(be_successful_api_call) with it("is able to create a dashboard from a view"): _, res_view_list = self.client.get_views_list() - call = self.client.create_dashboard_from_view(newdashname=f"{_DASHBOARD_NAME}_2", - viewname=res_view_list["defaultDashboards"][0]["name"], - filter=None) + call = self.client.create_dashboard_from_view( + newdashname=f"{_DASHBOARD_NAME}_2", viewname=res_view_list["defaultDashboards"][0]["name"], filter=None + ) expect(call).to(be_successful_api_call) with context("when there are existing dashbords"): @@ -114,23 +111,23 @@ def create_test_dashboard(self): expect(data).to(have_keys(version=equal("v2"), dashboard=equal(self.test_dashboard))) with it("is able to create a dashboard from template"): - call = self.client.create_dashboard_from_template(dashboard_name=f"{_DASHBOARD_NAME}_2", - template=self.test_dashboard, - scope='agent.id = "foo"') + call = self.client.create_dashboard_from_template( + dashboard_name=f"{_DASHBOARD_NAME}_2", template=self.test_dashboard, scope='agent.id = "foo"' + ) expect(call).to(be_successful_api_call) with context("when it's created with an incorrect scope"): with it("fails if the scope is not a string"): - ok, res = self.client.create_dashboard_from_template(dashboard_name=f"{_DASHBOARD_NAME}_2", - template=self.test_dashboard, - scope={}) + ok, res = self.client.create_dashboard_from_template( + dashboard_name=f"{_DASHBOARD_NAME}_2", template=self.test_dashboard, scope={} + ) expect(ok).to(be_false) expect(res).to(equal("Invalid scope format: Expected a string")) with it("fails if the scope has incorrect format"): - ok, res = self.client.create_dashboard_from_template(dashboard_name=f"{_DASHBOARD_NAME}_2", - template=self.test_dashboard, - scope="foobarbaz") + ok, res = self.client.create_dashboard_from_template( + dashboard_name=f"{_DASHBOARD_NAME}_2", template=self.test_dashboard, scope="foobarbaz" + ) expect(ok).to(be_false) expect(res).to(start_with("invalid scope: foobarbaz")) @@ -142,13 +139,15 @@ def create_test_dashboard(self): with context("when creating a dashboard from other dashboard"): with it("creates the dashboard correctly if the template exists"): - ok, res = self.client.create_dashboard_from_dashboard(newdashname=f"{_DASHBOARD_NAME}_2", - templatename=_DASHBOARD_NAME, filter=None) + ok, res = self.client.create_dashboard_from_dashboard( + newdashname=f"{_DASHBOARD_NAME}_2", templatename=_DASHBOARD_NAME, filter=None + ) expect((ok, res)).to(be_successful_api_call) with it("returns an error saying the dashboard does not exist"): - ok, res = self.client.create_dashboard_from_dashboard(newdashname=f"{_DASHBOARD_NAME}_2", - templatename="NonExistingDashboard", filter=None) + ok, res = self.client.create_dashboard_from_dashboard( + newdashname=f"{_DASHBOARD_NAME}_2", templatename="NonExistingDashboard", filter=None + ) expect(ok).to(be_false) expect(res).to(equal("can't find dashboard NonExistingDashboard to use as a template")) @@ -162,6 +161,6 @@ def create_test_dashboard(self): ok, res = self.client.find_dashboard_by(name=self.test_dashboard["name"]) expect((ok, res)).to(be_successful_api_call) - expect(res).to(contain( - have_key("dashboard", have_keys(id=self.test_dashboard["id"], name=self.test_dashboard["name"]))) + expect(res).to( + contain(have_key("dashboard", have_keys(id=self.test_dashboard["id"], name=self.test_dashboard["name"]))) ) diff --git a/specs/monitor/dashboards_v3_spec.py b/specs/monitor/dashboards_v3_spec.py index 1c2a574d..ca501837 100644 --- a/specs/monitor/dashboards_v3_spec.py +++ b/specs/monitor/dashboards_v3_spec.py @@ -12,8 +12,9 @@ with description("Dashboards v3", "integration") as self: with before.all: - self.client = SdMonitorClient(sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), - token=os.getenv("SDC_MONITOR_TOKEN")) + self.client = SdMonitorClient( + sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), token=os.getenv("SDC_MONITOR_TOKEN") + ) with before.each: self.cleanup_test_dashboards() @@ -21,7 +22,6 @@ with after.each: self.cleanup_test_dashboards() - def cleanup_test_dashboards(self): ok, res = self.client.get_dashboards() expect((ok, res)).to(be_successful_api_call) @@ -31,7 +31,6 @@ def cleanup_test_dashboards(self): call = self.client.delete_dashboard(dashboard) expect(call).to(be_successful_api_call) - def create_test_dashboard(self): ok, res = self.client.create_dashboard(name=_DASHBOARD_NAME) if ok: @@ -39,7 +38,6 @@ def create_test_dashboard(self): return ok, res - with it("is able to create a dashboard with just a name"): ok, res = self.client.create_dashboard(name=_DASHBOARD_NAME) expect((ok, res)).to(be_successful_api_call) @@ -53,17 +51,16 @@ def create_test_dashboard(self): f.flush() f.seek(0) - ok, res = self.client.create_dashboard_from_file(dashboard_name=f"{_DASHBOARD_NAME}_2", filename=f.name, - filter=None) + ok, res = self.client.create_dashboard_from_file(dashboard_name=f"{_DASHBOARD_NAME}_2", filename=f.name, filter=None) expect((ok, res)).to(be_successful_api_call) with it("is able to create a dashboard from a view"): ok, res_view_list = self.client.get_views_list() expect((ok, res_view_list)).to(be_successful_api_call) - call = self.client.create_dashboard_from_view(newdashname=f"{_DASHBOARD_NAME}_2", - viewname=res_view_list["dashboardTemplates"][0]["name"], - filter=None) + call = self.client.create_dashboard_from_view( + newdashname=f"{_DASHBOARD_NAME}_2", viewname=res_view_list["dashboardTemplates"][0]["name"], filter=None + ) expect(call).to(be_successful_api_call) with context("when there are existing dashbords"): @@ -78,10 +75,12 @@ def create_test_dashboard(self): with it("is able to list all the dashboards with the full information"): ok, res = self.client.get_dashboards(light=False) expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_key("dashboards", contain(have_keys("name", "id", - panels=not_(be_empty), - layout=not_(be_empty), - permissions=not_(be_empty))))) + expect(res).to( + have_key( + "dashboards", + contain(have_keys("name", "id", panels=not_(be_empty), layout=not_(be_empty), permissions=not_(be_empty))), + ) + ) with it("is able to retrieve the test dashboard by its id"): ok, res = self.client.get_dashboard(dashboard_id=self.test_dashboard["id"]) @@ -122,9 +121,9 @@ def create_test_dashboard(self): expect(data).to(have_keys(version=equal("v3"), dashboard=equal(self.test_dashboard))) with it("is able to create a dashboard from template"): - call = self.client.create_dashboard_from_template(dashboard_name=f"{_DASHBOARD_NAME}_2", - template=self.test_dashboard, - scope='agent.id = "foo"') + call = self.client.create_dashboard_from_template( + dashboard_name=f"{_DASHBOARD_NAME}_2", template=self.test_dashboard, scope='agent.id = "foo"' + ) expect(call).to(be_successful_api_call) with it("is able to make it public"): @@ -149,16 +148,16 @@ def create_test_dashboard(self): with context("when it's created with an incorrect scope"): with it("fails if the scope is not a string"): - ok, res = self.client.create_dashboard_from_template(dashboard_name=f"{_DASHBOARD_NAME}_2", - template=self.test_dashboard, - scope={}) + ok, res = self.client.create_dashboard_from_template( + dashboard_name=f"{_DASHBOARD_NAME}_2", template=self.test_dashboard, scope={} + ) expect(ok).to(be_false) expect(res).to(equal("Invalid scope format: Expected a list, a string or None")) with it("fails if the scope has incorrect format"): - ok, res = self.client.create_dashboard_from_template(dashboard_name=f"{_DASHBOARD_NAME}_2", - template=self.test_dashboard, - scope="foobarbaz") + ok, res = self.client.create_dashboard_from_template( + dashboard_name=f"{_DASHBOARD_NAME}_2", template=self.test_dashboard, scope="foobarbaz" + ) expect(ok).to(be_false) expect(res).to(start_with("invalid scope: foobarbaz")) @@ -170,13 +169,15 @@ def create_test_dashboard(self): with context("when creating a dashboard from other dashboard"): with it("creates the dashboard correctly if the template exists"): - ok, res = self.client.create_dashboard_from_dashboard(newdashname=f"{_DASHBOARD_NAME}_2", - templatename=_DASHBOARD_NAME, filter=None) + ok, res = self.client.create_dashboard_from_dashboard( + newdashname=f"{_DASHBOARD_NAME}_2", templatename=_DASHBOARD_NAME, filter=None + ) expect((ok, res)).to(be_successful_api_call) with it("returns an error saying the dashboard does not exist"): - ok, res = self.client.create_dashboard_from_dashboard(newdashname=f"{_DASHBOARD_NAME}_2", - templatename="NonExistingDashboard", filter=None) + ok, res = self.client.create_dashboard_from_dashboard( + newdashname=f"{_DASHBOARD_NAME}_2", templatename="NonExistingDashboard", filter=None + ) expect(ok).to(be_false) expect(res).to(equal("can't find dashboard NonExistingDashboard to use as a template")) @@ -190,8 +191,8 @@ def create_test_dashboard(self): ok, res = self.client.find_dashboard_by(name=self.test_dashboard["name"]) expect((ok, res)).to(be_successful_api_call) - expect(res).to(contain( - have_key("dashboard", have_keys(id=self.test_dashboard["id"], name=self.test_dashboard["name"]))) + expect(res).to( + contain(have_key("dashboard", have_keys(id=self.test_dashboard["id"], name=self.test_dashboard["name"]))) ) with context("when we are sharing a dashboard with all teams"): @@ -258,8 +259,7 @@ def create_test_dashboard(self): _, team = self.client.get_team("Monitor Operations") ok_team, res_team = self.client.share_dashboard_with_team(self.test_dashboard, team["id"], "r") - ok_team2, res_team2 = self.client.share_dashboard_with_team(res_team["dashboard"], - self.team["team"]["id"], "w") + ok_team2, res_team2 = self.client.share_dashboard_with_team(res_team["dashboard"], self.team["team"]["id"], "w") expect((ok_team, res_team)).to(be_successful_api_call) expect((ok_team2, res_team2)).to(be_successful_api_call) diff --git a/specs/monitor/events_v1_spec.py b/specs/monitor/events_v1_spec.py index b32c8ac5..3956dc81 100644 --- a/specs/monitor/events_v1_spec.py +++ b/specs/monitor/events_v1_spec.py @@ -9,18 +9,21 @@ with description("Events v1", "integration") as self: with before.all: - self.client = EventsClientV1(sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), - token=os.getenv("SDC_MONITOR_TOKEN")) + self.client = EventsClientV1( + sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), token=os.getenv("SDC_MONITOR_TOKEN") + ) self.event_name = "event_v1_test_ci" with it("is able to create a custom event"): - call = self.client.post_event(name=self.event_name, - description="This event was created in a CI pipeline for the Python SDK library") + call = self.client.post_event( + name=self.event_name, description="This event was created in a CI pipeline for the Python SDK library" + ) expect(call).to(be_successful_api_call) with it("is able to retrieve an event by ID"): - ok, res = self.client.post_event(name=self.event_name, - description="This event was created in a CI pipeline for the Python SDK library") + ok, res = self.client.post_event( + name=self.event_name, description="This event was created in a CI pipeline for the Python SDK library" + ) expect((ok, res)).to(be_successful_api_call) event = res["event"] diff --git a/specs/monitor/events_v2_spec.py b/specs/monitor/events_v2_spec.py index 72bba50b..73ba7742 100644 --- a/specs/monitor/events_v2_spec.py +++ b/specs/monitor/events_v2_spec.py @@ -11,19 +11,23 @@ with description("Events v2", "integration") as self: with before.all: - self.client = EventsClientV2(sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), - token=os.getenv("SDC_MONITOR_TOKEN")) + self.client = EventsClientV2( + sdc_url=os.getenv("SDC_MONITOR_URL", "https://app.sysdigcloud.com"), token=os.getenv("SDC_MONITOR_TOKEN") + ) self.event_name = "event_v2_test_ci" with it("is able to create a custom event"): - call = self.client.post_event(name=self.event_name, - description="This event was created in a CI pipeline for the Python SDK library") + call = self.client.post_event( + name=self.event_name, description="This event was created in a CI pipeline for the Python SDK library" + ) expect(call).to(be_successful_api_call) with it("is able to create a custom event with a scope"): - call = self.client.post_event(name=self.event_name, - description="This event was created in a CI pipeline for the Python SDK library", - event_filter="host.hostName='ci'") + call = self.client.post_event( + name=self.event_name, + description="This event was created in a CI pipeline for the Python SDK library", + event_filter="host.hostName='ci'", + ) expect(call).to(be_successful_api_call) sleep(2) # sleep to guarantee the event is created @@ -33,8 +37,9 @@ expect(res["events"]).to(contain(have_key("scope", equal("host.hostName = 'ci'")))) with it("is able to retrieve an event by ID"): - ok, res = self.client.post_event(name=self.event_name, - description="This event was created in a CI pipeline for the Python SDK library") + ok, res = self.client.post_event( + name=self.event_name, description="This event was created in a CI pipeline for the Python SDK library" + ) expect((ok, res)).to(be_successful_api_call) event = res["event"] @@ -58,18 +63,18 @@ expect(res).to(have_key("events", contain(have_keys(name=self.event_name)))) with it("fails to retrieve the events with an incorrect category"): - ok, res = self.client.get_events(category=['incorrect_category']) + ok, res = self.client.get_events(category=["incorrect_category"]) expect(ok).to(be_false) expect(res).to(equal("Invalid category 'incorrect_category'")) with it("is able to retrieve events that match a status"): - ok, res = self.client.get_events(status=['triggered']) + ok, res = self.client.get_events(status=["triggered"]) expect((ok, res)).to(be_successful_api_call) expect(res).to(have_key("events", contain(have_keys(name=self.event_name)))) with it("fails to retrieve the events with an incorrect status"): - ok, res = self.client.get_events(status=['incorrect_status']) + ok, res = self.client.get_events(status=["incorrect_status"]) expect(ok).to(be_false) expect(res).to(equal("Invalid status 'incorrect_status'")) @@ -78,13 +83,13 @@ ok, res = self.client.get_events(direction="before") expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys('events', 'total', 'matched')) + expect(res).to(have_keys("events", "total", "matched")) with it("retrieves the events correctly specifying direction 'after'"): ok, res = self.client.get_events(direction="after") expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys('events', 'total', 'matched')) + expect(res).to(have_keys("events", "total", "matched")) with it("fails to retrieve the events with an incorrect direction"): ok, res = self.client.get_events(direction="incorrect_direction") @@ -125,10 +130,8 @@ expect((ok1, res1)).not_to(be_successful_api_call) expect((ok2, res2)).not_to(be_successful_api_call) - expect(res1).to(equal("only one of 'from_s' or 'to_s' has been specified, " - "both are required when filtering by time")) - expect(res2).to(equal("only one of 'from_s' or 'to_s' has been specified, " - "both are required when filtering by time")) + expect(res1).to(equal("only one of 'from_s' or 'to_s' has been specified, both are required when filtering by time")) + expect(res2).to(equal("only one of 'from_s' or 'to_s' has been specified, both are required when filtering by time")) with it("returns an error if they are specified in the wrong order"): to_s = datetime.now() diff --git a/specs/secure/activitylog_v1_spec.py b/specs/secure/activitylog_v1_spec.py index 81fbb13a..57ee90d0 100644 --- a/specs/secure/activitylog_v1_spec.py +++ b/specs/secure/activitylog_v1_spec.py @@ -9,8 +9,9 @@ with description("Activity Audit v1", "integration") as self: with before.all: - self.client = ActivityAuditClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = ActivityAuditClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with it("is able to list the most recent commands with the default parameters"): ok, res = self.client.list_events() diff --git a/specs/secure/custom_rules_spec.py b/specs/secure/custom_rules_spec.py index 907f9365..fcab93f5 100644 --- a/specs/secure/custom_rules_spec.py +++ b/specs/secure/custom_rules_spec.py @@ -8,8 +8,9 @@ with description("Custom Rules", "integration") as self: with before.each: - self.client = SdSecureClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdSecureClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with context("when the custom rules file exists"): with it("can be retrieved"): @@ -20,15 +21,13 @@ with context("when the credentials are not valid"): with it("can't be retrieved"): - self.client = SdSecureClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token="foo-bar") + self.client = SdSecureClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token="foo-bar") ok, res = self.client.get_user_falco_rules() expect((ok, res)).to_not(be_successful_api_call) expect(res).to(equal("Bad credentials")) - with it("can push custom rules"): _, previous_rules = self.client.get_user_falco_rules() empty_rules = self.empty_falco_rules() @@ -52,12 +51,10 @@ expect((ok, res)).to(be_successful_api_call) expect(res).to(equal(previous_rules)) - def user_falco_rules(self): with open("fixtures/custom_rules.yaml", "r") as f: return f.read() - def empty_falco_rules(self): return """#################### # Your custom rules! @@ -74,7 +71,6 @@ def empty_falco_rules(self): # Or override any rule, macro, or list from the Default Rules """ - def rules_without_header(self): return """\ --- diff --git a/specs/secure/policy_events_v1_spec.py b/specs/secure/policy_events_v1_spec.py index ad7337aa..b39b3808 100644 --- a/specs/secure/policy_events_v1_spec.py +++ b/specs/secure/policy_events_v1_spec.py @@ -9,8 +9,9 @@ with description("Policy Events v1", "integration") as self: with before.each: - self.client = PolicyEventsClientV1(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = PolicyEventsClientV1( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with context("when we try to retrieve policy events from the last 7 days"): with it("returns the list of all events happened"): week_in_seconds = 7 * 24 * 60 * 60 @@ -19,8 +20,7 @@ expect((ok, res)).to(be_successful_api_call) expect(res).to(have_keys("ctx", "data")) - expect(res["data"]).to( - contain(have_keys("id", "timestamp", "customerId", "source", "name", "description", "cursor"))) + expect(res["data"]).to(contain(have_keys("id", "timestamp", "customerId", "source", "name", "description", "cursor"))) with it("returns the list of all events from a range"): to_sec = int((datetime.datetime.utcnow() - datetime.datetime.utcfromtimestamp(0)).total_seconds()) @@ -30,8 +30,7 @@ expect((ok, res)).to(be_successful_api_call) expect(res).to(have_keys("ctx", "data")) - expect(res["data"]).to( - contain(have_keys("id", "timestamp", "customerId", "source", "name", "description", "cursor"))) + expect(res["data"]).to(contain(have_keys("id", "timestamp", "customerId", "source", "name", "description", "cursor"))) with it("returns the list of all events from the last 7 days that match a filter"): week_in_seconds = 7 * 24 * 60 * 60 diff --git a/specs/secure/policy_v1_spec.py b/specs/secure/policy_v1_spec.py index c33b47f1..53171af6 100644 --- a/specs/secure/policy_v1_spec.py +++ b/specs/secure/policy_v1_spec.py @@ -12,20 +12,9 @@ _POLICY_DESCRIPTION = "Detect network tools launched on the host" _POLICY_RULES_REGEX = "Launch Suspicious Network Tool on Host" _POLICY_ACTIONS = [ - { - "type": "POLICY_ACTION_STOP", - "msg": "" - }, - { - "type": "POLICY_ACTION_PAUSE", - "msg": "" - }, - { - "type": "POLICY_ACTION_CAPTURE", - "beforeEventNs": 5000000000, - "afterEventNs": 18000000000, - "isLimitedToContainer": True - } + {"type": "POLICY_ACTION_STOP", "msg": ""}, + {"type": "POLICY_ACTION_PAUSE", "msg": ""}, + {"type": "POLICY_ACTION_CAPTURE", "beforeEventNs": 5000000000, "afterEventNs": 18000000000, "isLimitedToContainer": True}, ] @@ -56,14 +45,15 @@ def policy_json(): with description("Policies v1", "integration") as self: with before.all: - self.clientV1 = SdSecureClientV1(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.clientV1 = SdSecureClientV1( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with after.each: self.cleanup_policies() def cleanup_policies(self): _, res = self.clientV1.list_policies() - for policy in res['policies']: + for policy in res["policies"]: if str(policy["name"]).startswith("Test - "): ok, res = self.clientV1.delete_policy_id(policy["id"]) expect((ok, res)).to(be_successful_api_call) @@ -78,7 +68,7 @@ def cleanup_policies(self): with it("is able to change the evaluation order of policies"): ok, res = self.clientV1.get_policy_priorities() - random.shuffle(res['priorities']['policyIds']) + random.shuffle(res["priorities"]["policyIds"]) ok, res = self.clientV1.set_policy_priorities(json.dumps(res)) expect((ok, res)).to(be_successful_api_call) @@ -88,31 +78,31 @@ def cleanup_policies(self): with it("is able to get a policy by id"): ok, res = self.clientV1.list_policies() - id = res['policies'][0]['id'] + id = res["policies"][0]["id"] call = self.clientV1.get_policy_id(id) expect(call).to(be_successful_api_call) with it("is able to get a policy by name"): ok, res = self.clientV1.list_policies() - name = res['policies'][0]['name'] + name = res["policies"][0]["name"] call = self.clientV1.get_policy(name) expect(call).to(be_successful_api_call) with it("is able to update a policy from JSON"): ok, res = self.clientV1.list_policies() - policy_json = res['policies'][0] - policy_json['description'] = "Updated description" + policy_json = res["policies"][0] + policy_json["description"] = "Updated description" call = self.clientV1.update_policy(json.dumps(policy_json)) expect(call).to(be_successful_api_call) with it("is able to delete a single policy by id"): ok, res = self.clientV1.list_policies() - ok, res = self.clientV1.delete_policy_id(res['policies'][0]['id']) + ok, res = self.clientV1.delete_policy_id(res["policies"][0]["id"]) expect((ok, res)).to(be_successful_api_call) with it("is able to delete a single policy by name"): ok, res = self.clientV1.list_policies() - ok, res = self.clientV1.delete_policy_name(res['policies'][1]['name']) + ok, res = self.clientV1.delete_policy_name(res["policies"][1]["name"]) expect((ok, res)).to(be_successful_api_call) with it("is able to delete all policies at once"): diff --git a/specs/secure/policy_v2_spec.py b/specs/secure/policy_v2_spec.py index 4cdc9b83..7df48473 100644 --- a/specs/secure/policy_v2_spec.py +++ b/specs/secure/policy_v2_spec.py @@ -34,8 +34,9 @@ def policy_json(): with description("Policies v2", "integration") as self: with before.all: - self.client = SdSecureClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdSecureClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with before.each: self.cleanup_policies() @@ -43,7 +44,6 @@ def policy_json(): with after.each: self.cleanup_policies() - def cleanup_policies(self): _, res = self.client.list_policies() for policy in res: @@ -51,7 +51,6 @@ def cleanup_policies(self): ok, res = self.client.delete_policy_id(policy["id"]) expect((ok, res)).to(be_successful_api_call) - with it("is able to list all existing policies"): ok, res = self.client.list_policies() expect((ok, res)).to(be_successful_api_call) @@ -61,11 +60,9 @@ def cleanup_policies(self): expect(call).to(be_successful_api_call) with it("is able to create a policy with parameters"): - ok, res = self.client.add_policy(name=_POLICY_NAME, - description=_POLICY_DESCRIPTION, - rule_names=_POLICY_RULES, - actions=_POLICY_ACTIONS, - type="falco") + ok, res = self.client.add_policy( + name=_POLICY_NAME, description=_POLICY_DESCRIPTION, rule_names=_POLICY_RULES, actions=_POLICY_ACTIONS, type="falco" + ) expect((ok, res)).to(be_successful_api_call) @@ -73,7 +70,7 @@ def cleanup_policies(self): _, policies = self.client.list_policies() for policy in policies: - ok, res = self.client.delete_policy_id(policy['id']) + ok, res = self.client.delete_policy_id(policy["id"]) expect((ok, res)).to(be_successful_api_call) with it("is able to create the default policies"): diff --git a/specs/secure/scanning/alerts_spec.py b/specs/secure/scanning/alerts_spec.py index 0f0ccf4e..7538d7a0 100644 --- a/specs/secure/scanning/alerts_spec.py +++ b/specs/secure/scanning/alerts_spec.py @@ -9,8 +9,9 @@ with description("Scanning Alerts", "integration") as self: with before.all: - self.client = SdScanningClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdScanningClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with after.all: ok, res = self.client.list_alerts() @@ -29,45 +30,61 @@ "analysis_update": False, "vuln_update": False, "policy_eval": False, - "failed": False + "failed": False, }, "autoscan": False, "onlyPassFail": False, "skipEventSend": False, - "notificationChannelIds": [] + "notificationChannelIds": [], } ok, res = self.client.add_alert_object(alert) expect((ok, res)).to(be_successful_api_call) - expect(res['enabled']).to(equal(alert['enabled'])) - expect(res['type']).to(equal(alert['type'])) - expect(res['name']).to(equal(alert['name'])) - expect(res['triggers']).to(equal(alert['triggers'])) - expect(res['autoscan']).to(equal(alert['autoscan'])) - expect(res['onlyPassFail']).to(equal(alert['onlyPassFail'])) - expect(res['skipEventSend']).to(equal(alert['skipEventSend'])) - expect(res['notificationChannelIds']).to(equal(alert['notificationChannelIds'])) + expect(res["enabled"]).to(equal(alert["enabled"])) + expect(res["type"]).to(equal(alert["type"])) + expect(res["name"]).to(equal(alert["name"])) + expect(res["triggers"]).to(equal(alert["triggers"])) + expect(res["autoscan"]).to(equal(alert["autoscan"])) + expect(res["onlyPassFail"]).to(equal(alert["onlyPassFail"])) + expect(res["skipEventSend"]).to(equal(alert["skipEventSend"])) + expect(res["notificationChannelIds"]).to(equal(alert["notificationChannelIds"])) with it("lists all the scanning alerts"): ok, res = self.client.add_runtime_alert( - name="A name", - description="A description", - scope="", - triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image] + name="A name", description="A description", scope="", triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image] ) expect((ok, res)).to(be_successful_api_call) ok, res = self.client.list_alerts() expect((ok, res)).to(be_successful_api_call) expect(res["alerts"]).to_not(be_empty) - expect(res["alerts"]).to(contain(have_keys("customerId", "teamId", "alertId", "enabled", "type", "name", "description", "scope", "repositories", "triggers", "autoscan", "onlyPassFail", "skipEventSend", "notificationChannelIds"))) + expect(res["alerts"]).to( + contain( + have_keys( + "customerId", + "teamId", + "alertId", + "enabled", + "type", + "name", + "description", + "scope", + "repositories", + "triggers", + "autoscan", + "onlyPassFail", + "skipEventSend", + "notificationChannelIds", + ) + ) + ) with context("when creating a runtime alert"): with it("creates an alert with unscanned image trigger"): ok, res = self.client.add_runtime_alert( - name="A name", - description="A description", - scope="", - triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image] + name="A name", + description="A description", + scope="", + triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image], ) expect((ok, res)).to(be_successful_api_call) @@ -75,124 +92,176 @@ with it("creates an alert with scan result change trigger as 'Pass > Fail'"): ok, res = self.client.add_runtime_alert( + name="A name", + description="A description", + scope="", + triggers=[SdScanningClient.RuntimeAlertTrigger.scan_result_change_fail], + ) + + expect((ok, res)).to(be_successful_api_call) + expect(res).to( + have_keys( name="A name", description="A description", scope="", - triggers=[SdScanningClient.RuntimeAlertTrigger.scan_result_change_fail] + triggers=have_keys(policy_eval=be_true), + onlyPassFail=be_true, + ) ) - expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(policy_eval=be_true), onlyPassFail=be_true)) - with it("creates an alert with scan result change trigger as 'Any Change'"): ok, res = self.client.add_runtime_alert( + name="A name", + description="A description", + scope="", + triggers=[SdScanningClient.RuntimeAlertTrigger.scan_result_change_any], + ) + + expect((ok, res)).to(be_successful_api_call) + expect(res).to( + have_keys( name="A name", description="A description", scope="", - triggers=[SdScanningClient.RuntimeAlertTrigger.scan_result_change_any] + triggers=have_keys(policy_eval=be_true), + onlyPassFail=be_false, + ) ) - expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(policy_eval=be_true), onlyPassFail=be_false)) - with it("creates an alert with cve update trigger"): ok, res = self.client.add_runtime_alert( - name="A name", - description="A description", - scope="", - triggers=[SdScanningClient.RuntimeAlertTrigger.cve_update] + name="A name", description="A description", scope="", triggers=[SdScanningClient.RuntimeAlertTrigger.cve_update] ) expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(vuln_update=be_true))) + expect(res).to( + have_keys(name="A name", description="A description", scope="", triggers=have_keys(vuln_update=be_true)) + ) with it("creates an alert with multiple triggers"): ok, res = self.client.add_runtime_alert( + name="A name", + description="A description", + scope="", + triggers=[ + SdScanningClient.RuntimeAlertTrigger.unscanned_image, + SdScanningClient.RuntimeAlertTrigger.scan_result_change_fail, + SdScanningClient.RuntimeAlertTrigger.cve_update, + ], + ) + + expect((ok, res)).to(be_successful_api_call) + expect(res).to( + have_keys( name="A name", description="A description", scope="", - triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image, - SdScanningClient.RuntimeAlertTrigger.scan_result_change_fail, - SdScanningClient.RuntimeAlertTrigger.cve_update] + triggers=have_keys(unscanned=be_true, policy_eval=be_true, vuln_update=be_true), + onlyPassFail=be_true, + ) ) - expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(unscanned=be_true, policy_eval=be_true, vuln_update=be_true), onlyPassFail=be_true)) - with context("when creating a repository alert"): with it("creates an alert with new image analyzed trigger"): ok, res = self.client.add_repository_alert( - name="A name", - registry="registry", - repository="repository", - tag="latest", - description="A description", - triggers=[SdScanningClient.RepositoryAlertTrigger.new_image_analyzed] + name="A name", + registry="registry", + repository="repository", + tag="latest", + description="A description", + triggers=[SdScanningClient.RepositoryAlertTrigger.new_image_analyzed], ) expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(analysis_update=be_true))) + expect(res).to( + have_keys(name="A name", description="A description", scope="", triggers=have_keys(analysis_update=be_true)) + ) with it("creates an alert with scan result change trigger as 'Pass > Fail'"): ok, res = self.client.add_repository_alert( - name="A name", - registry="registry", - repository="repository", - tag="latest", - description="A description", - triggers=[SdScanningClient.RepositoryAlertTrigger.scan_result_change_fail] + name="A name", + registry="registry", + repository="repository", + tag="latest", + description="A description", + triggers=[SdScanningClient.RepositoryAlertTrigger.scan_result_change_fail], ) expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(policy_eval=be_true), onlyPassFail=be_true)) + expect(res).to( + have_keys( + name="A name", + description="A description", + scope="", + triggers=have_keys(policy_eval=be_true), + onlyPassFail=be_true, + ) + ) with it("creates an alert with scan result change trigger as 'Any Change'"): ok, res = self.client.add_repository_alert( - name="A name", - registry="registry", - repository="repository", - tag="latest", - description="A description", - triggers=[SdScanningClient.RepositoryAlertTrigger.scan_result_change_any] + name="A name", + registry="registry", + repository="repository", + tag="latest", + description="A description", + triggers=[SdScanningClient.RepositoryAlertTrigger.scan_result_change_any], ) expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(policy_eval=be_true), onlyPassFail=be_false)) + expect(res).to( + have_keys( + name="A name", + description="A description", + scope="", + triggers=have_keys(policy_eval=be_true), + onlyPassFail=be_false, + ) + ) with it("creates an alert with cve update trigger"): ok, res = self.client.add_repository_alert( - name="A name", - registry="registry", - repository="repository", - tag="latest", - description="A description", - triggers=[SdScanningClient.RepositoryAlertTrigger.cve_update] + name="A name", + registry="registry", + repository="repository", + tag="latest", + description="A description", + triggers=[SdScanningClient.RepositoryAlertTrigger.cve_update], ) expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(vuln_update=be_true))) + expect(res).to( + have_keys(name="A name", description="A description", scope="", triggers=have_keys(vuln_update=be_true)) + ) with it("creates an alert with multiple triggers"): ok, res = self.client.add_repository_alert( - name="A name", - registry="registry", - repository="repository", - tag="latest", - description="A description", - triggers=[SdScanningClient.RepositoryAlertTrigger.new_image_analyzed, - SdScanningClient.RepositoryAlertTrigger.scan_result_change_fail, - SdScanningClient.RepositoryAlertTrigger.cve_update] + name="A name", + registry="registry", + repository="repository", + tag="latest", + description="A description", + triggers=[ + SdScanningClient.RepositoryAlertTrigger.new_image_analyzed, + SdScanningClient.RepositoryAlertTrigger.scan_result_change_fail, + SdScanningClient.RepositoryAlertTrigger.cve_update, + ], ) expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(analysis_update=be_true, policy_eval=be_true, vuln_update=be_true), onlyPassFail=be_true)) + expect(res).to( + have_keys( + name="A name", + description="A description", + scope="", + triggers=have_keys(analysis_update=be_true, policy_eval=be_true, vuln_update=be_true), + onlyPassFail=be_true, + ) + ) with it("removes an alert correctly"): ok, res = self.client.add_runtime_alert( - name="A name", - description="A description", - scope="", - triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image] + name="A name", description="A description", scope="", triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image] ) expect((ok, res)).to(be_successful_api_call) @@ -207,10 +276,7 @@ with it("retrieves an alert correctly"): ok, res = self.client.add_runtime_alert( - name="A name", - description="A description", - scope="", - triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image] + name="A name", description="A description", scope="", triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image] ) expect((ok, res)).to(be_successful_api_call) @@ -221,52 +287,67 @@ with it("updates a runtime alert correctly"): ok, res = self.client.add_runtime_alert( - name="A name", - description="A description", - scope="", - triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image] + name="A name", description="A description", scope="", triggers=[SdScanningClient.RuntimeAlertTrigger.unscanned_image] ) expect((ok, res)).to(be_successful_api_call) expect(res).to(have_keys(name="A name", description="A description", scope="", triggers=have_keys(unscanned=be_true))) alert_id = res["alertId"] ok, res = self.client.update_runtime_alert( - id=alert_id, + id=alert_id, + name="An updated name", + description="An updated description", + scope="agent.id = 'foo'", + triggers=[SdScanningClient.RuntimeAlertTrigger.scan_result_change_fail], + ) + expect((ok, res)).to(be_successful_api_call) + expect(res).to( + have_keys( name="An updated name", description="An updated description", scope="agent.id = 'foo'", - triggers=[SdScanningClient.RuntimeAlertTrigger.scan_result_change_fail] + triggers=have_keys(unscanned=be_false, policy_eval=be_true), + onlyPassFail=be_true, + ) ) - expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="An updated name", description="An updated description", scope="agent.id = 'foo'", triggers=have_keys(unscanned=be_false, policy_eval=be_true), onlyPassFail=be_true)) with it("updates a repository alert correctly"): ok, res = self.client.add_repository_alert( - name="A name", - registry="registry", - repository="repository", - tag="latest", - description="A description", - triggers=[SdScanningClient.RepositoryAlertTrigger.new_image_analyzed] + name="A name", + registry="registry", + repository="repository", + tag="latest", + description="A description", + triggers=[SdScanningClient.RepositoryAlertTrigger.new_image_analyzed], ) expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="A name", description="A description", - repositories=contain_exactly(have_keys(registry="registry", repository="repository", tag="latest")), - triggers=have_keys(analysis_update=be_true))) + expect(res).to( + have_keys( + name="A name", + description="A description", + repositories=contain_exactly(have_keys(registry="registry", repository="repository", tag="latest")), + triggers=have_keys(analysis_update=be_true), + ) + ) alert_id = res["alertId"] ok, res = self.client.update_repository_alert( - id=alert_id, + id=alert_id, + name="An updated name", + registry="new_registry", + repository="new_repository", + tag="v1", + description="An updated description", + triggers=[SdScanningClient.RepositoryAlertTrigger.scan_result_change_fail], + ) + expect((ok, res)).to(be_successful_api_call) + expect(res).to( + have_keys( name="An updated name", - registry="new_registry", - repository="new_repository", - tag="v1", description="An updated description", - triggers=[SdScanningClient.RepositoryAlertTrigger.scan_result_change_fail] + repositories=contain_exactly(have_keys(registry="new_registry", repository="new_repository", tag="v1")), + triggers=have_keys(unscanned=be_false, policy_eval=be_true), + onlyPassFail=be_true, + ) ) - expect((ok, res)).to(be_successful_api_call) - expect(res).to(have_keys(name="An updated name", - description="An updated description", - repositories=contain_exactly(have_keys(registry="new_registry", repository="new_repository", tag="v1")), - triggers=have_keys(unscanned=be_false, policy_eval=be_true), onlyPassFail=be_true)) diff --git a/specs/secure/scanning/list_image_tags_spec.py b/specs/secure/scanning/list_image_tags_spec.py index 5c0a9631..6c5f28f1 100644 --- a/specs/secure/scanning/list_image_tags_spec.py +++ b/specs/secure/scanning/list_image_tags_spec.py @@ -8,13 +8,25 @@ with description("Scanning list_image_tags") as self: with before.all: - self.client = SdScanningClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdScanningClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with it("is able to retrieve all the image tags"): ok, res = self.client.list_image_tags() expect((ok, res)).to(be_successful_api_call) expect(res).to( - contain(have_keys("analyzed_at", "created_at", "fulltag", "imageDigest", "imageId", "parentDigest", - "tag_detected_at", "analysis_status"))) + contain( + have_keys( + "analyzed_at", + "created_at", + "fulltag", + "imageDigest", + "imageId", + "parentDigest", + "tag_detected_at", + "analysis_status", + ) + ) + ) diff --git a/specs/secure/scanning/list_images_spec.py b/specs/secure/scanning/list_images_spec.py index 7f3e33dc..720d6ef2 100644 --- a/specs/secure/scanning/list_images_spec.py +++ b/specs/secure/scanning/list_images_spec.py @@ -8,12 +8,26 @@ with description("Scanning list_images") as self: with before.all: - self.client = SdScanningClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdScanningClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with it("is able to list all the scanned images"): ok, res = self.client.list_images() expect((ok, res)).to(be_successful_api_call) - expect(res).to(contain( - have_keys("annotations", "imageDigest", "last_updated", "analysis_status", "image_content", "image_detail", - "image_status", "parentDigest", "userId", "created_at"))) + expect(res).to( + contain( + have_keys( + "annotations", + "imageDigest", + "last_updated", + "analysis_status", + "image_content", + "image_detail", + "image_status", + "parentDigest", + "userId", + "created_at", + ) + ) + ) diff --git a/specs/secure/scanning/policy_evaluation_spec.py b/specs/secure/scanning/policy_evaluation_spec.py index 7524f41a..5a80ee48 100644 --- a/specs/secure/scanning/policy_evaluation_spec.py +++ b/specs/secure/scanning/policy_evaluation_spec.py @@ -9,8 +9,9 @@ with description("Policy Evaluation", "integration") as self: with before.all: - self.client = SdScanningClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdScanningClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) self.image_name = "quay.io/sysdig/agent:latest" with it("is able to retrieve the results for all the policies"): @@ -18,12 +19,19 @@ expect((ok, res)).to(be_successful_api_call) expect(res).to( - have_keys("image_digest", "image_id", "stop_results", - total_warn=be_above_or_equal(0), total_stop=be_above_or_equal(0), - last_evaluation=be_an(datetime), - status="pass", image_tag=self.image_name, - policy_id="*", policy_name="All policies", - warn_results=not_(be_empty)) + have_keys( + "image_digest", + "image_id", + "stop_results", + total_warn=be_above_or_equal(0), + total_stop=be_above_or_equal(0), + last_evaluation=be_an(datetime), + status="pass", + image_tag=self.image_name, + policy_id="*", + policy_name="All policies", + warn_results=not_(be_empty), + ) ) with it("is able to retrieve the results for the default policy"): @@ -32,12 +40,19 @@ expect((ok, res)).to(be_successful_api_call) expect(res).to( - have_keys("image_digest", "image_id", "stop_results", - total_warn=be_above_or_equal(0), total_stop=be_above_or_equal(0), - last_evaluation=be_an(datetime), - status="pass", image_tag=self.image_name, - policy_id="default", policy_name="DefaultPolicy", - warn_results=not_(be_empty)) + have_keys( + "image_digest", + "image_id", + "stop_results", + total_warn=be_above_or_equal(0), + total_stop=be_above_or_equal(0), + last_evaluation=be_an(datetime), + status="pass", + image_tag=self.image_name, + policy_id="default", + policy_name="DefaultPolicy", + warn_results=not_(be_empty), + ) ) with context("but the image has not been scanned yet"): @@ -45,8 +60,9 @@ ok, res = self.client.get_image_scanning_results("unknown_image") expect((ok, res)).to_not(be_successful_api_call) - expect(res).to(equal("could not retrieve image digest for the given image name, " - "ensure that the image has been scanned")) + expect(res).to( + equal("could not retrieve image digest for the given image name, ensure that the image has been scanned") + ) with context("but the provided policy id does not exist"): with it("returns an error saying that the policy id is not found"): diff --git a/specs/secure/scanning/query_image_content_spec.py b/specs/secure/scanning/query_image_content_spec.py index 4b224dd1..579313d5 100644 --- a/specs/secure/scanning/query_image_content_spec.py +++ b/specs/secure/scanning/query_image_content_spec.py @@ -8,8 +8,9 @@ with description("Query Image Content", "integration") as self: with before.each: - self.client = SdScanningClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdScanningClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) self.image_to_scan = "quay.io/sysdig/agent:latest" with it("is able to retrieve the OS contents"): @@ -47,8 +48,7 @@ ok, res = self.client.query_image_content(self.image_to_scan, "files") expect((ok, res)).to(be_successful_api_call) - expect(res["content"]).to( - contain(have_keys("filename", "gid", "linkdest", "mode", "sha256", "size", "type", "uid"))) + expect(res["content"]).to(contain(have_keys("filename", "gid", "linkdest", "mode", "sha256", "size", "type", "uid"))) expect(res["content_type"]).to(equal("files")) with context("when the type is not in the supported list"): @@ -56,5 +56,6 @@ ok, res = self.client.query_image_content(self.image_to_scan, "Unknown") expect((ok, res)).not_to(be_successful_api_call) - expect(res).to(equal( - "unsupported type provided: unknown, must be one of ['os', 'files', 'npm', 'gem', 'python', 'java']")) + expect(res).to( + equal("unsupported type provided: unknown, must be one of ['os', 'files', 'npm', 'gem', 'python', 'java']") + ) diff --git a/specs/secure/scanning/scanning_cve_report_spec.py b/specs/secure/scanning/scanning_cve_report_spec.py index 9ce1e9a5..56b6de2b 100644 --- a/specs/secure/scanning/scanning_cve_report_spec.py +++ b/specs/secure/scanning/scanning_cve_report_spec.py @@ -8,34 +8,51 @@ with description("CVE Reports", "integration") as self: with before.all: - self.client = SdScanningClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdScanningClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with context("when the CSV of static can be downloaded"): with it("is able to download it for OS vulnerabilities"): ok, csv = self.client.download_cve_report_csv(vuln_type="os", scope_type="static") expect((ok, csv)).to(be_successful_api_call) - expect(csv).to(start_with("Image Name,Tag,Package Name,Package Version,Package Path,Severity,Fixed In," - "Vulnerability ID,Links,Image Digest,Runtime Metadata")) + expect(csv).to( + start_with( + "Image Name,Tag,Package Name,Package Version,Package Path,Severity,Fixed In," + "Vulnerability ID,Links,Image Digest,Runtime Metadata" + ) + ) with it("is able to download it for non-OS vulnerabilities"): ok, csv = self.client.download_cve_report_csv(vuln_type="non-os", scope_type="static") expect((ok, csv)).to(be_successful_api_call) - expect(csv).to(start_with("Image Name,Tag,Package Name,Package Version,Package Path,Severity,Fixed In," - "Vulnerability ID,Links,Image Digest,Runtime Metadata")) + expect(csv).to( + start_with( + "Image Name,Tag,Package Name,Package Version,Package Path,Severity,Fixed In," + "Vulnerability ID,Links,Image Digest,Runtime Metadata" + ) + ) with context("when the CSV of runtime can be downloaded"): with it("is able to download it for OS vulnerabilities"): ok, csv = self.client.download_cve_report_csv(vuln_type="os", scope_type="runtime") expect((ok, csv)).to(be_successful_api_call) - expect(csv).to(start_with("Image Name,Tag,Package Name,Package Version,Package Path,Severity,Fixed In," - "Vulnerability ID,Links,Image Digest,Runtime Metadata")) + expect(csv).to( + start_with( + "Image Name,Tag,Package Name,Package Version,Package Path,Severity,Fixed In," + "Vulnerability ID,Links,Image Digest,Runtime Metadata" + ) + ) with it("is able to download it for non-OS vulnerabilities"): ok, csv = self.client.download_cve_report_csv(vuln_type="non-os", scope_type="runtime") expect((ok, csv)).to(be_successful_api_call) - expect(csv).to(start_with("Image Name,Tag,Package Name,Package Version,Package Path,Severity,Fixed In," - "Vulnerability ID,Links,Image Digest,Runtime Metadata")) + expect(csv).to( + start_with( + "Image Name,Tag,Package Name,Package Version,Package Path,Severity,Fixed In," + "Vulnerability ID,Links,Image Digest,Runtime Metadata" + ) + ) diff --git a/specs/secure/scanning/scanning_vulnerability_exceptions_spec.py b/specs/secure/scanning/scanning_vulnerability_exceptions_spec.py index 3bf8d2dc..22c29059 100644 --- a/specs/secure/scanning/scanning_vulnerability_exceptions_spec.py +++ b/specs/secure/scanning/scanning_vulnerability_exceptions_spec.py @@ -10,13 +10,13 @@ with description("Scanning vulnerability exceptions", "integration") as self: with before.each: - self.client = SdScanningClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdScanningClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with after.each: self.clean_bundles() - def clean_bundles(self): _, res = self.client.list_vulnerability_exception_bundles() for bundle in res: @@ -24,7 +24,6 @@ def clean_bundles(self): call = self.client.delete_vulnerability_exception_bundle(id=bundle["id"]) expect(call).to(be_successful_api_call) - with context("when we are creating a new vulnerability exception bundle"): with it("creates the bundle correctly"): exception_bundle = f"test_exception_bundle_{uuid.uuid4()}" @@ -33,8 +32,14 @@ def clean_bundles(self): expect((ok, res)).to(be_successful_api_call) expect(res).to( - have_keys("id", items=be_empty, policyBundleId=equal("default"), version="1_0", - comment=equal(exception_comment), name=equal(exception_bundle)) + have_keys( + "id", + items=be_empty, + policyBundleId=equal("default"), + version="1_0", + comment=equal(exception_comment), + name=equal(exception_bundle), + ) ) with it("creates the bundle correctly with name only and removes it correctly"): @@ -43,8 +48,14 @@ def clean_bundles(self): expect((ok, res)).to(be_successful_api_call) expect(res).to( - have_keys("id", items=be_empty, policyBundleId=equal("default"), version="1_0", - comment=be_empty, name=equal(exception_bundle)) + have_keys( + "id", + items=be_empty, + policyBundleId=equal("default"), + version="1_0", + comment=be_empty, + name=equal(exception_bundle), + ) ) with context("when we are listing the vulnerability exception bundles"): @@ -58,10 +69,18 @@ def clean_bundles(self): ok, res = self.client.list_vulnerability_exception_bundles() expect((ok, res)).to(be_successful_api_call) - expect(res).to(contain( - have_keys(id=self.created_exception_bundle, items=None, policyBundleId=equal("default"), - version=equal("1_0"), comment=be_empty, name=equal(self.exception_bundle)) - )) + expect(res).to( + contain( + have_keys( + id=self.created_exception_bundle, + items=None, + policyBundleId=equal("default"), + version=equal("1_0"), + comment=be_empty, + name=equal(self.exception_bundle), + ) + ) + ) with context("when we are working with vulnerability exceptions in a bundle"): with before.each: @@ -72,23 +91,31 @@ def clean_bundles(self): with it("is able to add a vulnerability exception to a bundle"): exception_notes = "Microsoft Vulnerability" exception_cve = "CVE-2020-1234" - ok, res = self.client.add_vulnerability_exception(bundle=self.created_exception_bundle, - cve=exception_cve, - note=exception_notes, - expiration_date=datetime.datetime(2030, 12, 31) - .timestamp()) + ok, res = self.client.add_vulnerability_exception( + bundle=self.created_exception_bundle, + cve=exception_cve, + note=exception_notes, + expiration_date=datetime.datetime(2030, 12, 31).timestamp(), + ) expect((ok, res)).to(be_successful_api_call) expect(res).to( - have_keys("id", "description", gate=equal("vulnerabilities"), trigger_id=equal(exception_cve), - notes=equal(exception_notes), enabled=be_true) + have_keys( + "id", + "description", + gate=equal("vulnerabilities"), + trigger_id=equal(exception_cve), + notes=equal(exception_notes), + enabled=be_true, + ) ) with context("and there are existing vulnerability exceptions"): with before.each: self.created_exception_cve = "CVE-2020-1234" - ok, res = self.client.add_vulnerability_exception(bundle=self.created_exception_bundle, - cve=self.created_exception_cve) + ok, res = self.client.add_vulnerability_exception( + bundle=self.created_exception_bundle, cve=self.created_exception_cve + ) expect((ok, res)).to(be_successful_api_call) self.created_exception = res["id"] @@ -106,75 +133,91 @@ def clean_bundles(self): trigger_id=equal(self.created_exception_cve), enabled=be_true, ) - ) + ), ) ) with it("is able to remove them"): _, ex_before = self.client.get_vulnerability_exception_bundle(bundle=self.created_exception_bundle) - ok, res = self.client.delete_vulnerability_exception(bundle=self.created_exception_bundle, - id=self.created_exception) + ok, res = self.client.delete_vulnerability_exception( + bundle=self.created_exception_bundle, id=self.created_exception + ) _, ex_after = self.client.get_vulnerability_exception_bundle(bundle=self.created_exception_bundle) expect((ok, res)).to(be_successful_api_call) expect(ex_before).to( - have_key("items", contain( - have_keys( - id=equal(self.created_exception), - gate=equal("vulnerabilities"), - trigger_id=equal(self.created_exception_cve), - enabled=be_true, - ) - )) + have_key( + "items", + contain( + have_keys( + id=equal(self.created_exception), + gate=equal("vulnerabilities"), + trigger_id=equal(self.created_exception_cve), + enabled=be_true, + ) + ), + ) ) expect(ex_after).to( - have_key("items", not_(contain( - have_keys( - id=equal(self.created_exception), - gate=equal("vulnerabilities"), - trigger_id=equal(self.created_exception_cve), - enabled=be_true, - ) - ))) + have_key( + "items", + not_( + contain( + have_keys( + id=equal(self.created_exception), + gate=equal("vulnerabilities"), + trigger_id=equal(self.created_exception_cve), + enabled=be_true, + ) + ) + ), + ) ) with it("is able to update them"): _, ex_before = self.client.get_vulnerability_exception_bundle(bundle=self.created_exception_bundle) - ok, res = self.client.update_vulnerability_exception(bundle=self.created_exception_bundle, - id=self.created_exception, - cve="CVE-2020-1235", - enabled=False, - note="Dummy note", - expiration_date=datetime.datetime(2030, 12, 31) - .timestamp()) + ok, res = self.client.update_vulnerability_exception( + bundle=self.created_exception_bundle, + id=self.created_exception, + cve="CVE-2020-1235", + enabled=False, + note="Dummy note", + expiration_date=datetime.datetime(2030, 12, 31).timestamp(), + ) _, ex_after = self.client.get_vulnerability_exception_bundle(bundle=self.created_exception_bundle) expect((ok, res)).to(be_successful_api_call) expect(ex_before).to( - have_key("items", contain( - have_keys( - id=equal(self.created_exception), - gate=equal("vulnerabilities"), - trigger_id=equal(self.created_exception_cve), - notes=equal(None), - expiration_date=equal(None), - enabled=be_true, - ) - )) + have_key( + "items", + contain( + have_keys( + id=equal(self.created_exception), + gate=equal("vulnerabilities"), + trigger_id=equal(self.created_exception_cve), + notes=equal(None), + expiration_date=equal(None), + enabled=be_true, + ) + ), + ) ) expect(ex_after).to( - have_key("items", contain( - have_keys( - id=equal(self.created_exception), - gate=equal("vulnerabilities"), - trigger_id=equal("CVE-2020-1235"), - notes=equal("Dummy note"), - expiration_date=be_above(0), - enabled=be_false, - ) - )) + have_key( + "items", + contain( + have_keys( + id=equal(self.created_exception), + gate=equal("vulnerabilities"), + trigger_id=equal("CVE-2020-1235"), + notes=equal("Dummy note"), + expiration_date=be_above(0), + enabled=be_false, + ) + ), + ) ) diff --git a/specs/secure/scanning/scanning_vulnerability_spec.py b/specs/secure/scanning/scanning_vulnerability_spec.py index 8d992adf..85f53502 100644 --- a/specs/secure/scanning/scanning_vulnerability_spec.py +++ b/specs/secure/scanning/scanning_vulnerability_spec.py @@ -8,8 +8,9 @@ with description("Scanning vulnerability details", "integration") as self: with before.each: - self.client = SdScanningClient(sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), - token=os.getenv("SDC_SECURE_TOKEN")) + self.client = SdScanningClient( + sdc_url=os.getenv("SDC_SECURE_URL", "https://secure.sysdig.com"), token=os.getenv("SDC_SECURE_TOKEN") + ) with context("when retrieving a simple vulnerability"): with it("retrieves the vulnerability details correctly if exists"): @@ -18,8 +19,9 @@ expect((ok, res)).to(be_successful_api_call) expect(res).to( - have_keys("description", "severity", "vendor_data", "nvd_data", "references", - "affected_packages", id=equal(vuln_id)) + have_keys( + "description", "severity", "vendor_data", "nvd_data", "references", "affected_packages", id=equal(vuln_id) + ) ) with it("fails if it does not exist"): diff --git a/sysdig_client/__init__.py b/sysdig_client/__init__.py new file mode 100644 index 00000000..d559812b --- /dev/null +++ b/sysdig_client/__init__.py @@ -0,0 +1,665 @@ +# coding: utf-8 + +# flake8: noqa + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +__version__ = "1.0.0" + +# import apis into sdk package +from sysdig_client.api.access_keys_api import AccessKeysApi +from sysdig_client.api.activity_audit_api import ActivityAuditApi +from sysdig_client.api.capture_storage_api import CaptureStorageApi +from sysdig_client.api.certificates_api import CertificatesApi +from sysdig_client.api.cost_advisor_custom_pricing_api import CostAdvisorCustomPricingApi +from sysdig_client.api.cost_advisor_data_api import CostAdvisorDataApi +from sysdig_client.api.events_forwarder_api import EventsForwarderApi +from sysdig_client.api.group_mappings_api import GroupMappingsApi +from sysdig_client.api.ip_filtering_api import IPFilteringApi +from sysdig_client.api.inhibition_rules_api import InhibitionRulesApi +from sysdig_client.api.inventory_api import InventoryApi +from sysdig_client.api.jira_integrations_api import JiraIntegrationsApi +from sysdig_client.api.metrics_collection_api import MetricsCollectionApi +from sysdig_client.api.monitor_events_api import MonitorEventsApi +from sysdig_client.api.notification_channels_api import NotificationChannelsApi +from sysdig_client.api.permissions_api import PermissionsApi +from sysdig_client.api.platform_audit_api import PlatformAuditApi +from sysdig_client.api.prometheus_api import PrometheusApi +from sysdig_client.api.reporting_api import ReportingApi +from sysdig_client.api.response_actions_api import ResponseActionsApi +from sysdig_client.api.roles_api import RolesApi +from sysdig_client.api.sbom_api import SBOMApi +from sysdig_client.api.sso_settings_api import SSOSettingsApi +from sysdig_client.api.secure_events_api import SecureEventsApi +from sysdig_client.api.service_accounts_api import ServiceAccountsApi +from sysdig_client.api.service_accounts_notification_settings_api import ServiceAccountsNotificationSettingsApi +from sysdig_client.api.sys_ql_api import SysQLApi +from sysdig_client.api.teams_api import TeamsApi +from sysdig_client.api.user_deactivation_api import UserDeactivationApi +from sysdig_client.api.users_api import UsersApi +from sysdig_client.api.vulnerability_management_api import VulnerabilityManagementApi +from sysdig_client.api.zones_api import ZonesApi + +# import ApiClient +from sysdig_client.api_response import ApiResponse +from sysdig_client.api_client import ApiClient +from sysdig_client.configuration import Configuration +from sysdig_client.exceptions import OpenApiException +from sysdig_client.exceptions import ApiTypeError +from sysdig_client.exceptions import ApiValueError +from sysdig_client.exceptions import ApiKeyError +from sysdig_client.exceptions import ApiAttributeError +from sysdig_client.exceptions import ApiException + +# import models into sdk package +from sysdig_client.models.access_key_response_v1 import AccessKeyResponseV1 +from sysdig_client.models.action import Action +from sysdig_client.models.action_execution import ActionExecution +from sysdig_client.models.action_execution_parameter_value import ActionExecutionParameterValue +from sysdig_client.models.action_execution_status import ActionExecutionStatus +from sysdig_client.models.action_executions import ActionExecutions +from sysdig_client.models.action_outputs_metadata import ActionOutputsMetadata +from sysdig_client.models.action_parameter_metadata import ActionParameterMetadata +from sysdig_client.models.action_type import ActionType +from sysdig_client.models.actions import Actions +from sysdig_client.models.additional_team_permissions_v1 import AdditionalTeamPermissionsV1 +from sysdig_client.models.agentless_ml_runtime_detection_content import AgentlessMlRuntimeDetectionContent +from sysdig_client.models.agentless_ml_runtime_detection_content_all_of_fields import ( + AgentlessMlRuntimeDetectionContentAllOfFields, +) +from sysdig_client.models.agentless_runtime_detection_content import AgentlessRuntimeDetectionContent +from sysdig_client.models.agentless_runtime_detection_content_all_of_fields import AgentlessRuntimeDetectionContentAllOfFields +from sysdig_client.models.alert_monitor_event import AlertMonitorEvent +from sysdig_client.models.alerts_response_v1 import AlertsResponseV1 +from sysdig_client.models.alerts_response_v1_data import AlertsResponseV1Data +from sysdig_client.models.alerts_response_v1_data_alerts_inner import AlertsResponseV1DataAlertsInner +from sysdig_client.models.all_sso_settings_response_v1 import AllSsoSettingsResponseV1 +from sysdig_client.models.amazon_sqs_create_connection_info import AmazonSQSCreateConnectionInfo +from sysdig_client.models.amazon_sqs_update_connection_info import AmazonSQSUpdateConnectionInfo +from sysdig_client.models.audit_event import AuditEvent +from sysdig_client.models.audit_page import AuditPage +from sysdig_client.models.audit_supported_filter import AuditSupportedFilter +from sysdig_client.models.audit_supported_filters_response import AuditSupportedFiltersResponse +from sysdig_client.models.audit_trail_content import AuditTrailContent +from sysdig_client.models.authenticated_connection_info_elasticsearch import AuthenticatedConnectionInfoElasticsearch +from sysdig_client.models.authenticated_connection_info_kafka import AuthenticatedConnectionInfoKafka +from sysdig_client.models.authenticated_connection_info_webhook import AuthenticatedConnectionInfoWebhook +from sysdig_client.models.bom_metadata import BOMMetadata +from sysdig_client.models.base_action import BaseAction +from sysdig_client.models.base_connection_info_amazon_sqs import BaseConnectionInfoAmazonSqs +from sysdig_client.models.base_connection_info_chronicle import BaseConnectionInfoChronicle +from sysdig_client.models.base_connection_info_chronicle_v2 import BaseConnectionInfoChronicleV2 +from sysdig_client.models.base_connection_info_elasticsearch import BaseConnectionInfoElasticsearch +from sysdig_client.models.base_connection_info_google_pub_sub import BaseConnectionInfoGooglePubSub +from sysdig_client.models.base_connection_info_google_scc import BaseConnectionInfoGoogleScc +from sysdig_client.models.base_connection_info_kafka import BaseConnectionInfoKafka +from sysdig_client.models.base_connection_info_mcm import BaseConnectionInfoMcm +from sysdig_client.models.base_connection_info_microsoft_sentinel import BaseConnectionInfoMicrosoftSentinel +from sysdig_client.models.base_connection_info_qradar import BaseConnectionInfoQradar +from sysdig_client.models.base_connection_info_splunk import BaseConnectionInfoSplunk +from sysdig_client.models.base_connection_info_syslog import BaseConnectionInfoSyslog +from sysdig_client.models.base_connection_info_webhook import BaseConnectionInfoWebhook +from sysdig_client.models.base_content import BaseContent +from sysdig_client.models.base_image import BaseImage +from sysdig_client.models.base_integration_payload import BaseIntegrationPayload +from sysdig_client.models.base_monitor_event import BaseMonitorEvent +from sysdig_client.models.base_risk_accepted_payload import BaseRiskAcceptedPayload +from sysdig_client.models.base_risk_accepted_response_payload import BaseRiskAcceptedResponsePayload +from sysdig_client.models.bucket_configuration_v1 import BucketConfigurationV1 +from sysdig_client.models.bundle import Bundle +from sysdig_client.models.bundle_ref import BundleRef +from sysdig_client.models.bundle_rule import BundleRule +from sysdig_client.models.bundle_rule_predicates_inner import BundleRulePredicatesInner +from sysdig_client.models.capture_action import CaptureAction +from sysdig_client.models.capture_storage_configuration_response_v1 import CaptureStorageConfigurationResponseV1 +from sysdig_client.models.category import Category +from sysdig_client.models.certificate import Certificate +from sysdig_client.models.certificate_validity import CertificateValidity +from sysdig_client.models.certificates_response import CertificatesResponse +from sysdig_client.models.checkbox_field_value_v1 import CheckboxFieldValueV1 +from sysdig_client.models.chronicle_create_connection_info import ChronicleCreateConnectionInfo +from sysdig_client.models.chronicle_update_connection_info import ChronicleUpdateConnectionInfo +from sysdig_client.models.cisa_kev_available_since import CisaKevAvailableSince +from sysdig_client.models.cisa_kev_known_ransomware_campaign_use import CisaKevKnownRansomwareCampaignUse +from sysdig_client.models.cisa_kev_publish_date import CisaKevPublishDate +from sysdig_client.models.cisa_kev_publish_date_extra import CisaKevPublishDateExtra +from sysdig_client.models.command import Command +from sysdig_client.models.compositions_inner import CompositionsInner +from sysdig_client.models.connection import Connection +from sysdig_client.models.container_info import ContainerInfo +from sysdig_client.models.container_killed_action import ContainerKilledAction +from sysdig_client.models.container_paused_action import ContainerPausedAction +from sysdig_client.models.container_stopped_action import ContainerStoppedAction +from sysdig_client.models.context import Context +from sysdig_client.models.create_access_key_request_v1 import CreateAccessKeyRequestV1 +from sysdig_client.models.create_amazon_sqs_integration_request import CreateAmazonSqsIntegrationRequest +from sysdig_client.models.create_bundle_request import CreateBundleRequest +from sysdig_client.models.create_chronicle_integration_conn_info import CreateChronicleIntegrationConnInfo +from sysdig_client.models.create_chronicle_integration_conn_info_v2 import CreateChronicleIntegrationConnInfoV2 +from sysdig_client.models.create_chronicle_integration_request import CreateChronicleIntegrationRequest +from sysdig_client.models.create_custom_webhook_notification_channel_request_v1 import ( + CreateCustomWebhookNotificationChannelRequestV1, +) +from sysdig_client.models.create_elasticsearch_integration_request import CreateElasticsearchIntegrationRequest +from sysdig_client.models.create_elasticsearch_integration_request_all_of_connection_info import ( + CreateElasticsearchIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.create_email_notification_channel_request_v1 import CreateEmailNotificationChannelRequestV1 +from sysdig_client.models.create_gchat_notification_channel_request_v1 import CreateGchatNotificationChannelRequestV1 +from sysdig_client.models.create_global_service_account_request_v1 import CreateGlobalServiceAccountRequestV1 +from sysdig_client.models.create_google_pub_sub_integration_request import CreateGooglePubSubIntegrationRequest +from sysdig_client.models.create_google_scc_integration_request import CreateGoogleSccIntegrationRequest +from sysdig_client.models.create_group_mapping_request_v1 import CreateGroupMappingRequestV1 +from sysdig_client.models.create_ibm_event_notifications_notification_channel_request_v1 import ( + CreateIbmEventNotificationsNotificationChannelRequestV1, +) +from sysdig_client.models.create_inhibition_rule_request_v1 import CreateInhibitionRuleRequestV1 +from sysdig_client.models.create_integration_request import CreateIntegrationRequest +from sysdig_client.models.create_integration_request_v1 import CreateIntegrationRequestV1 +from sysdig_client.models.create_ip_filter_v1 import CreateIpFilterV1 +from sysdig_client.models.create_issue_type_request_v1 import CreateIssueTypeRequestV1 +from sysdig_client.models.create_kafka_integration_request import CreateKafkaIntegrationRequest +from sysdig_client.models.create_kafka_integration_request_all_of_connection_info import ( + CreateKafkaIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.create_mcm_integration_request import CreateMcmIntegrationRequest +from sysdig_client.models.create_microsoft_sentinel_integration_request import CreateMicrosoftSentinelIntegrationRequest +from sysdig_client.models.create_ms_teams_notification_channel_request_v1 import CreateMsTeamsNotificationChannelRequestV1 +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.create_opsgenie_notification_channel_request_v1 import CreateOpsgenieNotificationChannelRequestV1 +from sysdig_client.models.create_pager_duty_notification_channel_request_v1 import CreatePagerDutyNotificationChannelRequestV1 +from sysdig_client.models.create_policy_request import CreatePolicyRequest +from sysdig_client.models.create_pricing_request_v1 import CreatePricingRequestV1 +from sysdig_client.models.create_prometheus_alert_manager_notification_channel_request_v1 import ( + CreatePrometheusAlertManagerNotificationChannelRequestV1, +) +from sysdig_client.models.create_qradar_integration_request import CreateQradarIntegrationRequest +from sysdig_client.models.create_risk_accepted_request import CreateRiskAcceptedRequest +from sysdig_client.models.create_risk_accepted_request_all_of_context import CreateRiskAcceptedRequestAllOfContext +from sysdig_client.models.create_service_account_request_v1 import CreateServiceAccountRequestV1 +from sysdig_client.models.create_service_accounts_notification_settings_request_v1 import ( + CreateServiceAccountsNotificationSettingsRequestV1, +) +from sysdig_client.models.create_slack_notification_channel_request_v1 import CreateSlackNotificationChannelRequestV1 +from sysdig_client.models.create_sns_notification_channel_request_v1 import CreateSnsNotificationChannelRequestV1 +from sysdig_client.models.create_splunk_integration_request import CreateSplunkIntegrationRequest +from sysdig_client.models.create_sso_settings_request_v1 import CreateSsoSettingsRequestV1 +from sysdig_client.models.create_syslog_integration_request import CreateSyslogIntegrationRequest +from sysdig_client.models.create_team_email_notification_channel_request_v1 import CreateTeamEmailNotificationChannelRequestV1 +from sysdig_client.models.create_team_request_v1 import CreateTeamRequestV1 +from sysdig_client.models.create_team_service_account_request_v1 import CreateTeamServiceAccountRequestV1 +from sysdig_client.models.create_user_request_v1 import CreateUserRequestV1 +from sysdig_client.models.create_victor_ops_notification_channel_request_v1 import CreateVictorOpsNotificationChannelRequestV1 +from sysdig_client.models.create_webhook_integration_request import CreateWebhookIntegrationRequest +from sysdig_client.models.create_webhook_integration_request_all_of_connection_info import ( + CreateWebhookIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.create_webhook_notification_channel_request_v1 import CreateWebhookNotificationChannelRequestV1 +from sysdig_client.models.create_zone_request_v1 import CreateZoneRequestV1 +from sysdig_client.models.create_zone_scope_request_v1 import CreateZoneScopeRequestV1 +from sysdig_client.models.custom_job_v1 import CustomJobV1 +from sysdig_client.models.custom_jobs_enablement_v1 import CustomJobsEnablementV1 +from sysdig_client.models.custom_monitor_event import CustomMonitorEvent +from sysdig_client.models.custom_webhook_notification_channel_options_v1 import CustomWebhookNotificationChannelOptionsV1 +from sysdig_client.models.custom_webhook_notification_channel_response_v1 import CustomWebhookNotificationChannelResponseV1 +from sysdig_client.models.cvss_score import CvssScore +from sysdig_client.models.date_range import DateRange +from sysdig_client.models.deny_cve import DenyCve +from sysdig_client.models.deny_cve_extra import DenyCveExtra +from sysdig_client.models.deny_pkg import DenyPkg +from sysdig_client.models.deny_pkg_extra import DenyPkgExtra +from sysdig_client.models.deny_pkg_extra_packages_inner import DenyPkgExtraPackagesInner +from sysdig_client.models.dependency import Dependency +from sysdig_client.models.disable_jobs_and_metrics_v1 import DisableJobsAndMetricsV1 +from sysdig_client.models.disable_metric_v1 import DisableMetricV1 +from sysdig_client.models.drift_prevented_action import DriftPreventedAction +from sysdig_client.models.email_notification_channel_options_v1 import EmailNotificationChannelOptionsV1 +from sysdig_client.models.email_notification_channel_response_v1 import EmailNotificationChannelResponseV1 +from sysdig_client.models.entity_definition import EntityDefinition +from sysdig_client.models.entity_definition_definition import EntityDefinitionDefinition +from sysdig_client.models.entries_response import EntriesResponse +from sysdig_client.models.entries_response_data_inner import EntriesResponseDataInner +from sysdig_client.models.entry import Entry +from sysdig_client.models.entry_point_module_v1 import EntryPointModuleV1 +from sysdig_client.models.entry_point_v1 import EntryPointV1 +from sysdig_client.models.entry_response import EntryResponse +from sysdig_client.models.error import Error +from sysdig_client.models.event import Event +from sysdig_client.models.event_content import EventContent +from sysdig_client.models.event_content_type import EventContentType +from sysdig_client.models.events_feed_page import EventsFeedPage +from sysdig_client.models.exploit import Exploit +from sysdig_client.models.failure import Failure +from sysdig_client.models.fileaccess import Fileaccess +from sysdig_client.models.gchat_notification_channel_options_v1 import GchatNotificationChannelOptionsV1 +from sysdig_client.models.gchat_notification_channel_response_v1 import GchatNotificationChannelResponseV1 +from sysdig_client.models.get_access_keys_paginated_response_v1 import GetAccessKeysPaginatedResponseV1 +from sysdig_client.models.get_amazon_sqs_integration_response import GetAmazonSqsIntegrationResponse +from sysdig_client.models.get_bundle_response import GetBundleResponse +from sysdig_client.models.get_chronicle_integration_response import GetChronicleIntegrationResponse +from sysdig_client.models.get_chronicle_integration_response_all_of_connection_info import ( + GetChronicleIntegrationResponseAllOfConnectionInfo, +) +from sysdig_client.models.get_custom_jobs_paginated_response_v1 import GetCustomJobsPaginatedResponseV1 +from sysdig_client.models.get_elasticsearch_integration_response import GetElasticsearchIntegrationResponse +from sysdig_client.models.get_google_pub_sub_integration_response import GetGooglePubSubIntegrationResponse +from sysdig_client.models.get_google_scc_integration_response import GetGoogleSccIntegrationResponse +from sysdig_client.models.get_inhibition_rules_paginated_response_v1 import GetInhibitionRulesPaginatedResponseV1 +from sysdig_client.models.get_kafka_integration_response import GetKafkaIntegrationResponse +from sysdig_client.models.get_kafka_integration_response_all_of_connection_info import ( + GetKafkaIntegrationResponseAllOfConnectionInfo, +) +from sysdig_client.models.get_mcm_integration_response import GetMcmIntegrationResponse +from sysdig_client.models.get_microsoft_sentinel_integration_response import GetMicrosoftSentinelIntegrationResponse +from sysdig_client.models.get_notification_channels_paginated_response_v1 import GetNotificationChannelsPaginatedResponseV1 +from sysdig_client.models.get_permissions_response_v1 import GetPermissionsResponseV1 +from sysdig_client.models.get_policy_response import GetPolicyResponse +from sysdig_client.models.get_pricing_paginated_response_v1 import GetPricingPaginatedResponseV1 +from sysdig_client.models.get_pricing_projected_paginated_response_v1 import GetPricingProjectedPaginatedResponseV1 +from sysdig_client.models.get_qradar_integration_response import GetQradarIntegrationResponse +from sysdig_client.models.get_query_range_v1_step_parameter import GetQueryRangeV1StepParameter +from sysdig_client.models.get_query_v1401_response import GetQueryV1401Response +from sysdig_client.models.get_roles_paginated_response_v1 import GetRolesPaginatedResponseV1 +from sysdig_client.models.get_service_accounts_paginated_response_v1 import GetServiceAccountsPaginatedResponseV1 +from sysdig_client.models.get_splunk_integration_response import GetSplunkIntegrationResponse +from sysdig_client.models.get_syslog_integration_response import GetSyslogIntegrationResponse +from sysdig_client.models.get_team_users_paginated_response_v1 import GetTeamUsersPaginatedResponseV1 +from sysdig_client.models.get_teams_paginated_response_v1 import GetTeamsPaginatedResponseV1 +from sysdig_client.models.get_users_paginated_response_v1 import GetUsersPaginatedResponseV1 +from sysdig_client.models.get_webhook_integration_response import GetWebhookIntegrationResponse +from sysdig_client.models.global_sso_settings_request_v1 import GlobalSsoSettingsRequestV1 +from sysdig_client.models.global_sso_settings_response_v1 import GlobalSsoSettingsResponseV1 +from sysdig_client.models.google_pub_sub_create_connection_info import GooglePubSubCreateConnectionInfo +from sysdig_client.models.google_pub_sub_create_connection_info1 import GooglePubSubCreateConnectionInfo1 +from sysdig_client.models.google_scc_create_connection_info import GoogleSCCCreateConnectionInfo +from sysdig_client.models.google_scc_create_connection_info1 import GoogleSCCCreateConnectionInfo1 +from sysdig_client.models.group_mapping_response_v1 import GroupMappingResponseV1 +from sysdig_client.models.group_mapping_settings_v1 import GroupMappingSettingsV1 +from sysdig_client.models.group_mappings_paginated_response_v1 import GroupMappingsPaginatedResponseV1 +from sysdig_client.models.gssapi_connection_info_kafka import GssapiConnectionInfoKafka +from sysdig_client.models.host_metadata import HostMetadata +from sysdig_client.models.host_name import HostName +from sysdig_client.models.host_name_contains import HostNameContains +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info import IBMMulticloudCloudCreateConnectionInfo +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info1 import IBMMulticloudCloudCreateConnectionInfo1 +from sysdig_client.models.ibm_event_notifications_notification_channel_options_v1 import ( + IbmEventNotificationsNotificationChannelOptionsV1, +) +from sysdig_client.models.ibm_event_notifications_notification_channel_response_v1 import ( + IbmEventNotificationsNotificationChannelResponseV1, +) +from sysdig_client.models.image import Image +from sysdig_client.models.image_config_creation_date_with_age import ImageConfigCreationDateWithAge +from sysdig_client.models.image_config_creation_date_with_age_extra import ImageConfigCreationDateWithAgeExtra +from sysdig_client.models.image_config_default_user_is_not import ImageConfigDefaultUserIsNot +from sysdig_client.models.image_config_default_user_is_not_extra import ImageConfigDefaultUserIsNotExtra +from sysdig_client.models.image_config_default_user_is_root import ImageConfigDefaultUserIsRoot +from sysdig_client.models.image_config_default_user_list import ImageConfigDefaultUserList +from sysdig_client.models.image_config_default_user_list_extra import ImageConfigDefaultUserListExtra +from sysdig_client.models.image_config_env_variable_contains import ImageConfigEnvVariableContains +from sysdig_client.models.image_config_env_variable_contains_extra import ImageConfigEnvVariableContainsExtra +from sysdig_client.models.image_config_env_variable_exists import ImageConfigEnvVariableExists +from sysdig_client.models.image_config_env_variable_exists_extra import ImageConfigEnvVariableExistsExtra +from sysdig_client.models.image_config_env_variable_not_exists import ImageConfigEnvVariableNotExists +from sysdig_client.models.image_config_failure import ImageConfigFailure +from sysdig_client.models.image_config_instruction_is_pkg_manager import ImageConfigInstructionIsPkgManager +from sysdig_client.models.image_config_instruction_not_recommended import ImageConfigInstructionNotRecommended +from sysdig_client.models.image_config_label_exists import ImageConfigLabelExists +from sysdig_client.models.image_config_label_exists_extra import ImageConfigLabelExistsExtra +from sysdig_client.models.image_config_label_not_contains import ImageConfigLabelNotContains +from sysdig_client.models.image_config_label_not_contains_extra import ImageConfigLabelNotContainsExtra +from sysdig_client.models.image_config_label_not_exists import ImageConfigLabelNotExists +from sysdig_client.models.image_config_label_not_exists_extra import ImageConfigLabelNotExistsExtra +from sysdig_client.models.image_config_sensitive_information_and_secrets import ImageConfigSensitiveInformationAndSecrets +from sysdig_client.models.image_metadata import ImageMetadata +from sysdig_client.models.image_name import ImageName +from sysdig_client.models.image_name_contains import ImageNameContains +from sysdig_client.models.image_prefix import ImagePrefix +from sysdig_client.models.image_suffix import ImageSuffix +from sysdig_client.models.inhibition_rule_response_v1 import InhibitionRuleResponseV1 +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_channels_response import IntegrationChannelsResponse +from sysdig_client.models.integration_response import IntegrationResponse +from sysdig_client.models.integration_response_v1 import IntegrationResponseV1 +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.integration_types_response import IntegrationTypesResponse +from sysdig_client.models.invalid_certificate import InvalidCertificate +from sysdig_client.models.invalid_request import InvalidRequest +from sysdig_client.models.invalid_request1 import InvalidRequest1 +from sysdig_client.models.inventory_page import InventoryPage +from sysdig_client.models.inventory_resource import InventoryResource +from sysdig_client.models.inventory_resource_extended import InventoryResourceExtended +from sysdig_client.models.inventory_resource_response import InventoryResourceResponse +from sysdig_client.models.inventory_zone import InventoryZone +from sysdig_client.models.ip_filter_response_v1 import IpFilterResponseV1 +from sysdig_client.models.ip_filters_paginated_response_v1 import IpFiltersPaginatedResponseV1 +from sysdig_client.models.ip_filters_settings_v1 import IpFiltersSettingsV1 +from sysdig_client.models.issue_type_field_response_v1 import IssueTypeFieldResponseV1 +from sysdig_client.models.issue_type_field_response_v1_allowed_values_inner import IssueTypeFieldResponseV1AllowedValuesInner +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 +from sysdig_client.models.issue_types_response_v1 import IssueTypesResponseV1 +from sysdig_client.models.job_response import JobResponse +from sysdig_client.models.k8s_admission_review_content import K8sAdmissionReviewContent +from sysdig_client.models.k8s_admission_review_content_all_of_scan_result import K8sAdmissionReviewContentAllOfScanResult +from sysdig_client.models.kafka_plaintext import KafkaPlaintext +from sysdig_client.models.kafka_tls_encrypted import KafkaTlsEncrypted +from sysdig_client.models.key_value_object import KeyValueObject +from sysdig_client.models.kubernetes import Kubernetes +from sysdig_client.models.label_matcher_v1 import LabelMatcherV1 +from sysdig_client.models.label_values_response_v1 import LabelValuesResponseV1 +from sysdig_client.models.labels_response_v1 import LabelsResponseV1 +from sysdig_client.models.layer import Layer +from sysdig_client.models.list_audit_events_response import ListAuditEventsResponse +from sysdig_client.models.list_bundles_response import ListBundlesResponse +from sysdig_client.models.list_events_response import ListEventsResponse +from sysdig_client.models.list_integrations_response import ListIntegrationsResponse +from sysdig_client.models.list_job_and_disabled_metrics_v1 import ListJobAndDisabledMetricsV1 +from sysdig_client.models.list_jobs import ListJobs +from sysdig_client.models.list_monitor_events_response import ListMonitorEventsResponse +from sysdig_client.models.list_policies_response import ListPoliciesResponse +from sysdig_client.models.list_risk_accepted_response import ListRiskAcceptedResponse +from sysdig_client.models.list_risk_accepted_response_all_of_data import ListRiskAcceptedResponseAllOfData +from sysdig_client.models.list_schedules import ListSchedules +from sysdig_client.models.list_zones_response_v1 import ListZonesResponseV1 +from sysdig_client.models.list_zones_response_v1_all_of_data import ListZonesResponseV1AllOfData +from sysdig_client.models.malware_prevented_action import MalwarePreventedAction +from sysdig_client.models.metadata_response_v1 import MetadataResponseV1 +from sysdig_client.models.metadata_response_v1_data_value_inner import MetadataResponseV1DataValueInner +from sysdig_client.models.metric_error_v1 import MetricErrorV1 +from sysdig_client.models.metric_v1 import MetricV1 +from sysdig_client.models.microsoft_sentinel_create_connection_info import MicrosoftSentinelCreateConnectionInfo +from sysdig_client.models.microsoft_sentinel_update_connection_info import MicrosoftSentinelUpdateConnectionInfo +from sysdig_client.models.monitor_event import MonitorEvent +from sysdig_client.models.monitor_events_page import MonitorEventsPage +from sysdig_client.models.monitor_scope_label import MonitorScopeLabel +from sysdig_client.models.ms_teams_notification_channel_options_v1 import MsTeamsNotificationChannelOptionsV1 +from sysdig_client.models.ms_teams_notification_channel_response_v1 import MsTeamsNotificationChannelResponseV1 +from sysdig_client.models.new_rule import NewRule +from sysdig_client.models.new_stage import NewStage +from sysdig_client.models.notification_channel import NotificationChannel +from sysdig_client.models.notification_channel_options_v1 import NotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.notification_channel_v1 import NotificationChannelV1 +from sysdig_client.models.offset_paginated_response import OffsetPaginatedResponse +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from sysdig_client.models.open_id_base_v1 import OpenIdBaseV1 +from sysdig_client.models.open_id_config_response_v1 import OpenIdConfigResponseV1 +from sysdig_client.models.open_id_create_request_v1 import OpenIdCreateRequestV1 +from sysdig_client.models.open_id_metadata_v1 import OpenIdMetadataV1 +from sysdig_client.models.open_id_request_base_v1 import OpenIdRequestBaseV1 +from sysdig_client.models.open_id_update_request_v1 import OpenIdUpdateRequestV1 +from sysdig_client.models.operand import Operand +from sysdig_client.models.opsgenie_notification_channel_options_v1 import OpsgenieNotificationChannelOptionsV1 +from sysdig_client.models.opsgenie_notification_channel_response_v1 import OpsgenieNotificationChannelResponseV1 +from sysdig_client.models.originator import Originator +from sysdig_client.models.package import Package +from sysdig_client.models.package_name import PackageName +from sysdig_client.models.package_name_version import PackageNameVersion +from sysdig_client.models.package_path import PackagePath +from sysdig_client.models.package_path_version import PackagePathVersion +from sysdig_client.models.package_version import PackageVersion +from sysdig_client.models.page import Page +from sysdig_client.models.pager_duty_notification_channel_options_v1 import PagerDutyNotificationChannelOptionsV1 +from sysdig_client.models.pager_duty_notification_channel_response_v1 import PagerDutyNotificationChannelResponseV1 +from sysdig_client.models.paginated_integrations_response_v1 import PaginatedIntegrationsResponseV1 +from sysdig_client.models.permission_v1 import PermissionV1 +from sysdig_client.models.pipeline_result import PipelineResult +from sysdig_client.models.pipeline_results_response import PipelineResultsResponse +from sysdig_client.models.pkg_vuln_failure import PkgVulnFailure +from sysdig_client.models.policies import Policies +from sysdig_client.models.policies_page import PoliciesPage +from sysdig_client.models.policies_summary_entry import PoliciesSummaryEntry +from sysdig_client.models.policy_evaluation import PolicyEvaluation +from sysdig_client.models.policy_evaluation_result import PolicyEvaluationResult +from sysdig_client.models.policy_origin import PolicyOrigin +from sysdig_client.models.policy_summary import PolicySummary +from sysdig_client.models.posture_policy_summary import PosturePolicySummary +from sysdig_client.models.predicate import Predicate +from sysdig_client.models.predicates_inner import PredicatesInner +from sysdig_client.models.pricing_projected_response_v1 import PricingProjectedResponseV1 +from sysdig_client.models.pricing_response_v1 import PricingResponseV1 +from sysdig_client.models.pricing_type import PricingType +from sysdig_client.models.private_connection_info_amazon_sqs import PrivateConnectionInfoAmazonSqs +from sysdig_client.models.private_connection_info_chronicle import PrivateConnectionInfoChronicle +from sysdig_client.models.private_connection_info_chronicle_v2 import PrivateConnectionInfoChronicleV2 +from sysdig_client.models.private_connection_info_elasticsearch import PrivateConnectionInfoElasticsearch +from sysdig_client.models.private_connection_info_google_pub_sub import PrivateConnectionInfoGooglePubSub +from sysdig_client.models.private_connection_info_google_scc import PrivateConnectionInfoGoogleScc +from sysdig_client.models.private_connection_info_kafka import PrivateConnectionInfoKafka +from sysdig_client.models.private_connection_info_mcm import PrivateConnectionInfoMcm +from sysdig_client.models.private_connection_info_microsoft_sentinel import PrivateConnectionInfoMicrosoftSentinel +from sysdig_client.models.private_connection_info_splunk import PrivateConnectionInfoSplunk +from sysdig_client.models.private_connection_info_webhook import PrivateConnectionInfoWebhook +from sysdig_client.models.process_killed_action import ProcessKilledAction +from sysdig_client.models.producer import Producer +from sysdig_client.models.product import Product +from sysdig_client.models.prometheus_alert_manager_notification_channel_options_v1 import ( + PrometheusAlertManagerNotificationChannelOptionsV1, +) +from sysdig_client.models.prometheus_alert_manager_notification_channel_response_v1 import ( + PrometheusAlertManagerNotificationChannelResponseV1, +) +from sysdig_client.models.prometheus_error import PrometheusError +from sysdig_client.models.promql_matcher import PromqlMatcher +from sysdig_client.models.query_response import QueryResponse +from sysdig_client.models.query_response_entities import QueryResponseEntities +from sysdig_client.models.query_response_v1 import QueryResponseV1 +from sysdig_client.models.query_response_v1_data import QueryResponseV1Data +from sysdig_client.models.query_response_v1_data_result import QueryResponseV1DataResult +from sysdig_client.models.query_response_v1_data_result_any_of_inner import QueryResponseV1DataResultAnyOfInner +from sysdig_client.models.query_response_v1_data_result_any_of_inner1 import QueryResponseV1DataResultAnyOfInner1 +from sysdig_client.models.query_response_v1_data_result_any_of_inner2 import QueryResponseV1DataResultAnyOfInner2 +from sysdig_client.models.query_summary import QuerySummary +from sysdig_client.models.query_sysql_post_request import QuerySysqlPostRequest +from sysdig_client.models.query_time import QueryTime +from sysdig_client.models.registry_result import RegistryResult +from sysdig_client.models.registry_results_response import RegistryResultsResponse +from sysdig_client.models.request_body_disabled_metrics_v1 import RequestBodyDisabledMetricsV1 +from sysdig_client.models.responder_type import ResponderType +from sysdig_client.models.response_action import ResponseAction +from sysdig_client.models.response_list_disabled_metrics_and_error_v1 import ResponseListDisabledMetricsAndErrorV1 +from sysdig_client.models.response_list_disabled_metrics_v1 import ResponseListDisabledMetricsV1 +from sysdig_client.models.risk_acceptance_definition import RiskAcceptanceDefinition +from sysdig_client.models.risk_accepted_response import RiskAcceptedResponse +from sysdig_client.models.risk_accepted_response_all_of_context import RiskAcceptedResponseAllOfContext +from sysdig_client.models.role_request_v1 import RoleRequestV1 +from sysdig_client.models.role_response_v1 import RoleResponseV1 +from sysdig_client.models.rule import Rule +from sysdig_client.models.rule_failures_inner import RuleFailuresInner +from sysdig_client.models.rules_response_v1 import RulesResponseV1 +from sysdig_client.models.rules_response_v1_data import RulesResponseV1Data +from sysdig_client.models.rules_response_v1_data_groups_inner import RulesResponseV1DataGroupsInner +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner import RulesResponseV1DataGroupsInnerRulesInner +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner import ( + RulesResponseV1DataGroupsInnerRulesInnerAlertsInner, +) +from sysdig_client.models.runtime_result import RuntimeResult +from sysdig_client.models.runtime_results_response import RuntimeResultsResponse +from sysdig_client.models.saml_base_v1 import SamlBaseV1 +from sysdig_client.models.saml_create_request_v1 import SamlCreateRequestV1 +from sysdig_client.models.saml_response_v1 import SamlResponseV1 +from sysdig_client.models.saml_update_request_v1 import SamlUpdateRequestV1 +from sysdig_client.models.save_capture_storage_configuration_request_v1 import SaveCaptureStorageConfigurationRequestV1 +from sysdig_client.models.save_team_user_request_v1 import SaveTeamUserRequestV1 +from sysdig_client.models.sbom_component import SbomComponent +from sysdig_client.models.sbom_result_response import SbomResultResponse +from sysdig_client.models.scan_result_response import ScanResultResponse +from sysdig_client.models.scan_result_response_metadata import ScanResultResponseMetadata +from sysdig_client.models.schedule_response import ScheduleResponse +from sysdig_client.models.scope_type_v1 import ScopeTypeV1 +from sysdig_client.models.scope_v1 import ScopeV1 +from sysdig_client.models.sequence_inner import SequenceInner +from sysdig_client.models.series_response_v1 import SeriesResponseV1 +from sysdig_client.models.service_account_response_v1 import ServiceAccountResponseV1 +from sysdig_client.models.service_account_with_key_response_v1 import ServiceAccountWithKeyResponseV1 +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 +from sysdig_client.models.service_accounts_notification_settins_base import ServiceAccountsNotificationSettinsBase +from sysdig_client.models.services import Services +from sysdig_client.models.services_response import ServicesResponse +from sysdig_client.models.slack_base_notification_channel_options_v1 import SlackBaseNotificationChannelOptionsV1 +from sysdig_client.models.slack_create_notification_channel_options_v1 import SlackCreateNotificationChannelOptionsV1 +from sysdig_client.models.slack_notification_channel_response_v1 import SlackNotificationChannelResponseV1 +from sysdig_client.models.slack_read_notification_channel_options_v1 import SlackReadNotificationChannelOptionsV1 +from sysdig_client.models.slack_update_notification_channel_options_v1 import SlackUpdateNotificationChannelOptionsV1 +from sysdig_client.models.sns_notification_channel_options_v1 import SnsNotificationChannelOptionsV1 +from sysdig_client.models.sns_notification_channel_response_v1 import SnsNotificationChannelResponseV1 +from sysdig_client.models.source import Source +from sysdig_client.models.source_details import SourceDetails +from sysdig_client.models.splunk_create_connection_info import SplunkCreateConnectionInfo +from sysdig_client.models.splunk_update_connection_info import SplunkUpdateConnectionInfo +from sysdig_client.models.sso_settings_base_schema_v1 import SsoSettingsBaseSchemaV1 +from sysdig_client.models.sso_settings_create_request_base_v1 import SsoSettingsCreateRequestBaseV1 +from sysdig_client.models.sso_settings_response_base_v1 import SsoSettingsResponseBaseV1 +from sysdig_client.models.sso_settings_response_v1 import SsoSettingsResponseV1 +from sysdig_client.models.sso_settings_update_request_base_v1 import SsoSettingsUpdateRequestBaseV1 +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from sysdig_client.models.stage import Stage +from sysdig_client.models.stage_configuration import StageConfiguration +from sysdig_client.models.stateful_detections_content import StatefulDetectionsContent +from sysdig_client.models.stateful_detections_content_all_of_fields import StatefulDetectionsContentAllOfFields +from sysdig_client.models.stats_inner import StatsInner +from sysdig_client.models.submit_action_execution_request import SubmitActionExecutionRequest +from sysdig_client.models.supported_filter import SupportedFilter +from sysdig_client.models.supported_filter_type import SupportedFilterType +from sysdig_client.models.supported_filters_response import SupportedFiltersResponse +from sysdig_client.models.team_email_notification_channel_options_v1 import TeamEmailNotificationChannelOptionsV1 +from sysdig_client.models.team_email_notification_channel_response_v1 import TeamEmailNotificationChannelResponseV1 +from sysdig_client.models.team_map_v1 import TeamMapV1 +from sysdig_client.models.team_response_v1 import TeamResponseV1 +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from sysdig_client.models.team_user_response_v1 import TeamUserResponseV1 +from sysdig_client.models.time_frame import TimeFrame +from sysdig_client.models.types import Types +from sysdig_client.models.ui_settings_v1 import UiSettingsV1 +from sysdig_client.models.unit_pricing_v1 import UnitPricingV1 +from sysdig_client.models.update_access_key_request_v1 import UpdateAccessKeyRequestV1 +from sysdig_client.models.update_amazon_sqs_integration_request import UpdateAmazonSqsIntegrationRequest +from sysdig_client.models.update_chronicle_integration_conn_info import UpdateChronicleIntegrationConnInfo +from sysdig_client.models.update_chronicle_integration_conn_info_v2 import UpdateChronicleIntegrationConnInfoV2 +from sysdig_client.models.update_chronicle_integration_request import UpdateChronicleIntegrationRequest +from sysdig_client.models.update_custom_webhook_notification_channel_request_v1 import ( + UpdateCustomWebhookNotificationChannelRequestV1, +) +from sysdig_client.models.update_elasticsearch_integration_request import UpdateElasticsearchIntegrationRequest +from sysdig_client.models.update_elasticsearch_integration_request_all_of_connection_info import ( + UpdateElasticsearchIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.update_email_notification_channel_request_v1 import UpdateEmailNotificationChannelRequestV1 +from sysdig_client.models.update_gchat_notification_channel_request_v1 import UpdateGchatNotificationChannelRequestV1 +from sysdig_client.models.update_google_pub_sub_integration_request import UpdateGooglePubSubIntegrationRequest +from sysdig_client.models.update_google_scc_integration_request import UpdateGoogleSccIntegrationRequest +from sysdig_client.models.update_group_mapping_request_v1 import UpdateGroupMappingRequestV1 +from sysdig_client.models.update_ibm_event_notifications_notification_channel_request_v1 import ( + UpdateIbmEventNotificationsNotificationChannelRequestV1, +) +from sysdig_client.models.update_inhibition_rule_request_v1 import UpdateInhibitionRuleRequestV1 +from sysdig_client.models.update_integration_request import UpdateIntegrationRequest +from sysdig_client.models.update_integration_request_v1 import UpdateIntegrationRequestV1 +from sysdig_client.models.update_ip_filter_v1 import UpdateIpFilterV1 +from sysdig_client.models.update_issue_type_request_v1 import UpdateIssueTypeRequestV1 +from sysdig_client.models.update_kafka_integration_request import UpdateKafkaIntegrationRequest +from sysdig_client.models.update_kafka_integration_request_all_of_connection_info import ( + UpdateKafkaIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.update_mcm_integration_request import UpdateMcmIntegrationRequest +from sysdig_client.models.update_microsoft_sentinel_integration_request import UpdateMicrosoftSentinelIntegrationRequest +from sysdig_client.models.update_ms_teams_notification_channel_request_v1 import UpdateMsTeamsNotificationChannelRequestV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from sysdig_client.models.update_opsgenie_notification_channel_request_v1 import UpdateOpsgenieNotificationChannelRequestV1 +from sysdig_client.models.update_pager_duty_notification_channel_request_v1 import UpdatePagerDutyNotificationChannelRequestV1 +from sysdig_client.models.update_pricing_request_v1 import UpdatePricingRequestV1 +from sysdig_client.models.update_prometheus_alert_manager_notification_channel_request_v1 import ( + UpdatePrometheusAlertManagerNotificationChannelRequestV1, +) +from sysdig_client.models.update_qradar_integration_request import UpdateQradarIntegrationRequest +from sysdig_client.models.update_risk_accepted import UpdateRiskAccepted +from sysdig_client.models.update_service_accounts_notification_settings_request_v1 import ( + UpdateServiceAccountsNotificationSettingsRequestV1, +) +from sysdig_client.models.update_slack_notification_channel_request_v1 import UpdateSlackNotificationChannelRequestV1 +from sysdig_client.models.update_sns_notification_channel_request_v1 import UpdateSnsNotificationChannelRequestV1 +from sysdig_client.models.update_splunk_integration_request import UpdateSplunkIntegrationRequest +from sysdig_client.models.update_sso_settings_request_v1 import UpdateSsoSettingsRequestV1 +from sysdig_client.models.update_syslog_integration_request import UpdateSyslogIntegrationRequest +from sysdig_client.models.update_team_email_notification_channel_request_v1 import UpdateTeamEmailNotificationChannelRequestV1 +from sysdig_client.models.update_team_request_v1 import UpdateTeamRequestV1 +from sysdig_client.models.update_user_deactivation_configuration_request_v1 import UpdateUserDeactivationConfigurationRequestV1 +from sysdig_client.models.update_user_request_v1 import UpdateUserRequestV1 +from sysdig_client.models.update_victor_ops_notification_channel_request_v1 import UpdateVictorOpsNotificationChannelRequestV1 +from sysdig_client.models.update_webhook_integration_request import UpdateWebhookIntegrationRequest +from sysdig_client.models.update_webhook_integration_request_all_of_connection_info import ( + UpdateWebhookIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.update_webhook_notification_channel_request_v1 import UpdateWebhookNotificationChannelRequestV1 +from sysdig_client.models.user import User +from sysdig_client.models.user_deactivation_configuration_response_v1 import UserDeactivationConfigurationResponseV1 +from sysdig_client.models.user_response_v1 import UserResponseV1 +from sysdig_client.models.victor_ops_notification_channel_options_v1 import VictorOpsNotificationChannelOptionsV1 +from sysdig_client.models.victor_ops_notification_channel_response_v1 import VictorOpsNotificationChannelResponseV1 +from sysdig_client.models.vuln_age import VulnAge +from sysdig_client.models.vuln_age_extra import VulnAgeExtra +from sysdig_client.models.vuln_cvss import VulnCvss +from sysdig_client.models.vuln_cvss_equals import VulnCvssEquals +from sysdig_client.models.vuln_cvss_equals_extra import VulnCvssEqualsExtra +from sysdig_client.models.vuln_cvss_extra import VulnCvssExtra +from sysdig_client.models.vuln_disclosure_range import VulnDisclosureRange +from sysdig_client.models.vuln_disclosure_range_extra import VulnDisclosureRangeExtra +from sysdig_client.models.vuln_epss_percentile_gte import VulnEpssPercentileGte +from sysdig_client.models.vuln_epss_percentile_gte_extra import VulnEpssPercentileGteExtra +from sysdig_client.models.vuln_epss_score_gte import VulnEpssScoreGte +from sysdig_client.models.vuln_epss_score_gte_extra import VulnEpssScoreGteExtra +from sysdig_client.models.vuln_exploitable import VulnExploitable +from sysdig_client.models.vuln_exploitable_no_admin import VulnExploitableNoAdmin +from sysdig_client.models.vuln_exploitable_no_user import VulnExploitableNoUser +from sysdig_client.models.vuln_exploitable_via_network import VulnExploitableViaNetwork +from sysdig_client.models.vuln_exploitable_with_age import VulnExploitableWithAge +from sysdig_client.models.vuln_exploitable_with_age_extra import VulnExploitableWithAgeExtra +from sysdig_client.models.vuln_is_fixable import VulnIsFixable +from sysdig_client.models.vuln_is_fixable_with_age import VulnIsFixableWithAge +from sysdig_client.models.vuln_is_fixable_with_age_extra import VulnIsFixableWithAgeExtra +from sysdig_client.models.vuln_is_in_use import VulnIsInUse +from sysdig_client.models.vuln_pkg_type import VulnPkgType +from sysdig_client.models.vuln_pkg_type_extra import VulnPkgTypeExtra +from sysdig_client.models.vuln_severity import VulnSeverity +from sysdig_client.models.vuln_severity_equals import VulnSeverityEquals +from sysdig_client.models.vuln_severity_extra import VulnSeverityExtra +from sysdig_client.models.vuln_total_by_severity import VulnTotalBySeverity +from sysdig_client.models.vulnerability import Vulnerability +from sysdig_client.models.vulnerability_management_page import VulnerabilityManagementPage +from sysdig_client.models.vulnerability_summary import VulnerabilitySummary +from sysdig_client.models.wasted_workload_data_request import WastedWorkloadDataRequest +from sysdig_client.models.wasted_workload_spend_data_response import WastedWorkloadSpendDataResponse +from sysdig_client.models.wasted_workload_spend_data_response_group_by_data_inner import ( + WastedWorkloadSpendDataResponseGroupByDataInner, +) +from sysdig_client.models.wasted_workload_spend_data_response_total import WastedWorkloadSpendDataResponseTotal +from sysdig_client.models.webhook_notification_channel_options_v1 import WebhookNotificationChannelOptionsV1 +from sysdig_client.models.webhook_notification_channel_response_v1 import WebhookNotificationChannelResponseV1 +from sysdig_client.models.workload_cost_trends_data_request import WorkloadCostTrendsDataRequest +from sysdig_client.models.workload_cost_trends_data_response import WorkloadCostTrendsDataResponse +from sysdig_client.models.workload_cost_trends_data_response_group_by_data_inner import ( + WorkloadCostTrendsDataResponseGroupByDataInner, +) +from sysdig_client.models.workload_cost_trends_data_response_total import WorkloadCostTrendsDataResponseTotal +from sysdig_client.models.workload_ml_runtime_detection_content import WorkloadMlRuntimeDetectionContent +from sysdig_client.models.workload_rightsizing_data_request import WorkloadRightsizingDataRequest +from sysdig_client.models.workload_rightsizing_data_response import WorkloadRightsizingDataResponse +from sysdig_client.models.workload_rightsizing_data_response_group_by_data_inner import ( + WorkloadRightsizingDataResponseGroupByDataInner, +) +from sysdig_client.models.workload_runtime_detection_content import WorkloadRuntimeDetectionContent +from sysdig_client.models.workload_runtime_detection_content_all_of_fields import WorkloadRuntimeDetectionContentAllOfFields +from sysdig_client.models.zone import Zone +from sysdig_client.models.zone_response_v1 import ZoneResponseV1 +from sysdig_client.models.zone_scope import ZoneScope diff --git a/sysdig_client/api/__init__.py b/sysdig_client/api/__init__.py new file mode 100644 index 00000000..f13bb224 --- /dev/null +++ b/sysdig_client/api/__init__.py @@ -0,0 +1,35 @@ +# flake8: noqa + +# import apis into api package +from sysdig_client.api.access_keys_api import AccessKeysApi +from sysdig_client.api.activity_audit_api import ActivityAuditApi +from sysdig_client.api.capture_storage_api import CaptureStorageApi +from sysdig_client.api.certificates_api import CertificatesApi +from sysdig_client.api.cost_advisor_custom_pricing_api import CostAdvisorCustomPricingApi +from sysdig_client.api.cost_advisor_data_api import CostAdvisorDataApi +from sysdig_client.api.events_forwarder_api import EventsForwarderApi +from sysdig_client.api.group_mappings_api import GroupMappingsApi +from sysdig_client.api.ip_filtering_api import IPFilteringApi +from sysdig_client.api.inhibition_rules_api import InhibitionRulesApi +from sysdig_client.api.inventory_api import InventoryApi +from sysdig_client.api.jira_integrations_api import JiraIntegrationsApi +from sysdig_client.api.metrics_collection_api import MetricsCollectionApi +from sysdig_client.api.monitor_events_api import MonitorEventsApi +from sysdig_client.api.notification_channels_api import NotificationChannelsApi +from sysdig_client.api.permissions_api import PermissionsApi +from sysdig_client.api.platform_audit_api import PlatformAuditApi +from sysdig_client.api.prometheus_api import PrometheusApi +from sysdig_client.api.reporting_api import ReportingApi +from sysdig_client.api.response_actions_api import ResponseActionsApi +from sysdig_client.api.roles_api import RolesApi +from sysdig_client.api.sbom_api import SBOMApi +from sysdig_client.api.sso_settings_api import SSOSettingsApi +from sysdig_client.api.secure_events_api import SecureEventsApi +from sysdig_client.api.service_accounts_api import ServiceAccountsApi +from sysdig_client.api.service_accounts_notification_settings_api import ServiceAccountsNotificationSettingsApi +from sysdig_client.api.sys_ql_api import SysQLApi +from sysdig_client.api.teams_api import TeamsApi +from sysdig_client.api.user_deactivation_api import UserDeactivationApi +from sysdig_client.api.users_api import UsersApi +from sysdig_client.api.vulnerability_management_api import VulnerabilityManagementApi +from sysdig_client.api.zones_api import ZonesApi diff --git a/sysdig_client/api/access_keys_api.py b/sysdig_client/api/access_keys_api.py new file mode 100644 index 00000000..c6a2e1d5 --- /dev/null +++ b/sysdig_client/api/access_keys_api.py @@ -0,0 +1,1386 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + + +from sysdig_client.models.access_key_response_v1 import AccessKeyResponseV1 +from sysdig_client.models.create_access_key_request_v1 import CreateAccessKeyRequestV1 +from sysdig_client.models.get_access_keys_paginated_response_v1 import GetAccessKeysPaginatedResponseV1 +from sysdig_client.models.update_access_key_request_v1 import UpdateAccessKeyRequestV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class AccessKeysApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_access_key_v1( + self, + create_access_key_request_v1: Optional[CreateAccessKeyRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> AccessKeyResponseV1: + """Create Access Key + + Create a new access key.\\ \\ **Required permissions:** _customer-access-keys.edit_ + + :param create_access_key_request_v1: + :type create_access_key_request_v1: CreateAccessKeyRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_access_key_v1_serialize( + create_access_key_request_v1=create_access_key_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "AccessKeyResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_access_key_v1_with_http_info( + self, + create_access_key_request_v1: Optional[CreateAccessKeyRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[AccessKeyResponseV1]: + """Create Access Key + + Create a new access key.\\ \\ **Required permissions:** _customer-access-keys.edit_ + + :param create_access_key_request_v1: + :type create_access_key_request_v1: CreateAccessKeyRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_access_key_v1_serialize( + create_access_key_request_v1=create_access_key_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "AccessKeyResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_access_key_v1_without_preload_content( + self, + create_access_key_request_v1: Optional[CreateAccessKeyRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Access Key + + Create a new access key.\\ \\ **Required permissions:** _customer-access-keys.edit_ + + :param create_access_key_request_v1: + :type create_access_key_request_v1: CreateAccessKeyRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_access_key_v1_serialize( + create_access_key_request_v1=create_access_key_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "AccessKeyResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_access_key_v1_serialize( + self, + create_access_key_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_access_key_request_v1 is not None: + _body_params = create_access_key_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/access-keys", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_access_key_by_id_v1( + self, + access_key_id: Annotated[int, Field(strict=True, ge=0, description="The access key id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Access Key + + Delete an access key by id.\\ \\ **Required permissions:** customer-access-keys.edit_ + + :param access_key_id: The access key id. (required) + :type access_key_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_access_key_by_id_v1_serialize( + access_key_id=access_key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_access_key_by_id_v1_with_http_info( + self, + access_key_id: Annotated[int, Field(strict=True, ge=0, description="The access key id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Access Key + + Delete an access key by id.\\ \\ **Required permissions:** customer-access-keys.edit_ + + :param access_key_id: The access key id. (required) + :type access_key_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_access_key_by_id_v1_serialize( + access_key_id=access_key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_access_key_by_id_v1_without_preload_content( + self, + access_key_id: Annotated[int, Field(strict=True, ge=0, description="The access key id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Access Key + + Delete an access key by id.\\ \\ **Required permissions:** customer-access-keys.edit_ + + :param access_key_id: The access key id. (required) + :type access_key_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_access_key_by_id_v1_serialize( + access_key_id=access_key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_access_key_by_id_v1_serialize( + self, + access_key_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if access_key_id is not None: + _path_params["accessKeyId"] = access_key_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/access-keys/{accessKeyId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_access_key_by_id_v1( + self, + access_key_id: Annotated[int, Field(strict=True, ge=0, description="The access key id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> AccessKeyResponseV1: + """Get Access Key + + Return an access key by id.\\ \\ **Required permissions:** _customer-access-keys.read_ + + :param access_key_id: The access key id. (required) + :type access_key_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_access_key_by_id_v1_serialize( + access_key_id=access_key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AccessKeyResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_access_key_by_id_v1_with_http_info( + self, + access_key_id: Annotated[int, Field(strict=True, ge=0, description="The access key id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[AccessKeyResponseV1]: + """Get Access Key + + Return an access key by id.\\ \\ **Required permissions:** _customer-access-keys.read_ + + :param access_key_id: The access key id. (required) + :type access_key_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_access_key_by_id_v1_serialize( + access_key_id=access_key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AccessKeyResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_access_key_by_id_v1_without_preload_content( + self, + access_key_id: Annotated[int, Field(strict=True, ge=0, description="The access key id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Access Key + + Return an access key by id.\\ \\ **Required permissions:** _customer-access-keys.read_ + + :param access_key_id: The access key id. (required) + :type access_key_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_access_key_by_id_v1_serialize( + access_key_id=access_key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AccessKeyResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_access_key_by_id_v1_serialize( + self, + access_key_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if access_key_id is not None: + _path_params["accessKeyId"] = access_key_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/access-keys/{accessKeyId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_access_keys_v1( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetAccessKeysPaginatedResponseV1: + """List Access Keys + + Retrieve a paginated list of access keys.\\ \\ **Required permissions:** _customer-access-keys.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_access_keys_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetAccessKeysPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_access_keys_v1_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetAccessKeysPaginatedResponseV1]: + """List Access Keys + + Retrieve a paginated list of access keys.\\ \\ **Required permissions:** _customer-access-keys.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_access_keys_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetAccessKeysPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_access_keys_v1_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Access Keys + + Retrieve a paginated list of access keys.\\ \\ **Required permissions:** _customer-access-keys.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_access_keys_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetAccessKeysPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_access_keys_v1_serialize( + self, + offset, + limit, + orderby, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "filter": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if orderby is not None: + _query_params.append(("orderby", orderby)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/access-keys", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_access_key_by_id_v1( + self, + access_key_id: Annotated[int, Field(strict=True, ge=0, description="The access key id.")], + update_access_key_request_v1: Optional[UpdateAccessKeyRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> AccessKeyResponseV1: + """Update Access Key + + Update an access key by id.\\ \\ **Required permissions:** _customer-access-keys.edit_ + + :param access_key_id: The access key id. (required) + :type access_key_id: int + :param update_access_key_request_v1: + :type update_access_key_request_v1: UpdateAccessKeyRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_access_key_by_id_v1_serialize( + access_key_id=access_key_id, + update_access_key_request_v1=update_access_key_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AccessKeyResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_access_key_by_id_v1_with_http_info( + self, + access_key_id: Annotated[int, Field(strict=True, ge=0, description="The access key id.")], + update_access_key_request_v1: Optional[UpdateAccessKeyRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[AccessKeyResponseV1]: + """Update Access Key + + Update an access key by id.\\ \\ **Required permissions:** _customer-access-keys.edit_ + + :param access_key_id: The access key id. (required) + :type access_key_id: int + :param update_access_key_request_v1: + :type update_access_key_request_v1: UpdateAccessKeyRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_access_key_by_id_v1_serialize( + access_key_id=access_key_id, + update_access_key_request_v1=update_access_key_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AccessKeyResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_access_key_by_id_v1_without_preload_content( + self, + access_key_id: Annotated[int, Field(strict=True, ge=0, description="The access key id.")], + update_access_key_request_v1: Optional[UpdateAccessKeyRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Access Key + + Update an access key by id.\\ \\ **Required permissions:** _customer-access-keys.edit_ + + :param access_key_id: The access key id. (required) + :type access_key_id: int + :param update_access_key_request_v1: + :type update_access_key_request_v1: UpdateAccessKeyRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_access_key_by_id_v1_serialize( + access_key_id=access_key_id, + update_access_key_request_v1=update_access_key_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AccessKeyResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_access_key_by_id_v1_serialize( + self, + access_key_id, + update_access_key_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if access_key_id is not None: + _path_params["accessKeyId"] = access_key_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_access_key_request_v1 is not None: + _body_params = update_access_key_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/access-keys/{accessKeyId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/activity_audit_api.py b/sysdig_client/api/activity_audit_api.py new file mode 100644 index 00000000..d3e69a57 --- /dev/null +++ b/sysdig_client/api/activity_audit_api.py @@ -0,0 +1,856 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.audit_supported_filters_response import AuditSupportedFiltersResponse +from sysdig_client.models.entries_response import EntriesResponse +from sysdig_client.models.entry_response import EntryResponse +from sysdig_client.models.types import Types + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class ActivityAuditApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_activity_audit_entries_supported_filters_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> AuditSupportedFiltersResponse: + """Get available filters + + Activity Audit entries can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_activity_audit_entries_supported_filters_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AuditSupportedFiltersResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_activity_audit_entries_supported_filters_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[AuditSupportedFiltersResponse]: + """Get available filters + + Activity Audit entries can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_activity_audit_entries_supported_filters_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AuditSupportedFiltersResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_activity_audit_entries_supported_filters_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get available filters + + Activity Audit entries can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_activity_audit_entries_supported_filters_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AuditSupportedFiltersResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_activity_audit_entries_supported_filters_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/activity-audit/v1/supported-filters", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_activity_audit_entries_v1( + self, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + zones: Optional[ + Annotated[List[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]], Field(max_length=100)] + ] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + types: Optional[Types] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> EntriesResponse: + """List entries + + Retrieves the list of entries matching the expressed search criteria. The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. The time criteria is required and can be specified in two different ways: - Using `from` and `to`, the list of entries within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. - Using a `cursor` the entries returned will be in the before, after or around the entry, depending on the entry the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. The entry content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels. **Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param zones: + :type zones: List[int] + :param filter: + :type filter: str + :param limit: The number of items to return + :type limit: int + :param types: + :type types: Types + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_activity_audit_entries_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + zones=zones, + filter=filter, + limit=limit, + types=types, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "EntriesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_activity_audit_entries_v1_with_http_info( + self, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + zones: Optional[ + Annotated[List[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]], Field(max_length=100)] + ] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + types: Optional[Types] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[EntriesResponse]: + """List entries + + Retrieves the list of entries matching the expressed search criteria. The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. The time criteria is required and can be specified in two different ways: - Using `from` and `to`, the list of entries within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. - Using a `cursor` the entries returned will be in the before, after or around the entry, depending on the entry the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. The entry content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels. **Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param zones: + :type zones: List[int] + :param filter: + :type filter: str + :param limit: The number of items to return + :type limit: int + :param types: + :type types: Types + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_activity_audit_entries_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + zones=zones, + filter=filter, + limit=limit, + types=types, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "EntriesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_activity_audit_entries_v1_without_preload_content( + self, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + zones: Optional[ + Annotated[List[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]], Field(max_length=100)] + ] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + types: Optional[Types] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List entries + + Retrieves the list of entries matching the expressed search criteria. The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. The time criteria is required and can be specified in two different ways: - Using `from` and `to`, the list of entries within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. - Using a `cursor` the entries returned will be in the before, after or around the entry, depending on the entry the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. The entry content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels. **Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param zones: + :type zones: List[int] + :param filter: + :type filter: str + :param limit: The number of items to return + :type limit: int + :param types: + :type types: Types + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_activity_audit_entries_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + zones=zones, + filter=filter, + limit=limit, + types=types, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "EntriesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_activity_audit_entries_v1_serialize( + self, + var_from, + to, + cursor, + zones, + filter, + limit, + types, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "zones": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if var_from is not None: + _query_params.append(("from", var_from)) + + if to is not None: + _query_params.append(("to", to)) + + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if zones is not None: + _query_params.append(("zones", zones)) + + if filter is not None: + _query_params.append(("filter", filter)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if types is not None: + _query_params.append(("types", types.value)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/activity-audit/v1/entries", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_activity_audit_entry_v1( + self, + entry_id: Annotated[str, Field(strict=True, max_length=32)], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> EntryResponse: + """Get entry + + Retrieves an Actvity Audit entry given its id. **Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + + :param entry_id: (required) + :type entry_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_activity_audit_entry_v1_serialize( + entry_id=entry_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "EntryResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_activity_audit_entry_v1_with_http_info( + self, + entry_id: Annotated[str, Field(strict=True, max_length=32)], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[EntryResponse]: + """Get entry + + Retrieves an Actvity Audit entry given its id. **Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + + :param entry_id: (required) + :type entry_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_activity_audit_entry_v1_serialize( + entry_id=entry_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "EntryResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_activity_audit_entry_v1_without_preload_content( + self, + entry_id: Annotated[str, Field(strict=True, max_length=32)], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get entry + + Retrieves an Actvity Audit entry given its id. **Required permissions:** _commands.read_ | _connections.read_ | _fileaccesses.read_ | _kubernetes.read_ + + :param entry_id: (required) + :type entry_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_activity_audit_entry_v1_serialize( + entry_id=entry_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "EntryResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_activity_audit_entry_v1_serialize( + self, + entry_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if entry_id is not None: + _path_params["entryId"] = entry_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/activity-audit/v1/entries/{entryId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/capture_storage_api.py b/sysdig_client/api/capture_storage_api.py new file mode 100644 index 00000000..348cf362 --- /dev/null +++ b/sysdig_client/api/capture_storage_api.py @@ -0,0 +1,505 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.capture_storage_configuration_response_v1 import CaptureStorageConfigurationResponseV1 +from sysdig_client.models.save_capture_storage_configuration_request_v1 import SaveCaptureStorageConfigurationRequestV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class CaptureStorageApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_capture_storage_configuration_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> CaptureStorageConfigurationResponseV1: + """Get Capture Storage Configuration + + Retrieve the capture storage configuration.\\ \\ **Required permissions:** _sysdig-storage.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_capture_storage_configuration_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CaptureStorageConfigurationResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_capture_storage_configuration_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[CaptureStorageConfigurationResponseV1]: + """Get Capture Storage Configuration + + Retrieve the capture storage configuration.\\ \\ **Required permissions:** _sysdig-storage.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_capture_storage_configuration_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CaptureStorageConfigurationResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_capture_storage_configuration_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Capture Storage Configuration + + Retrieve the capture storage configuration.\\ \\ **Required permissions:** _sysdig-storage.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_capture_storage_configuration_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CaptureStorageConfigurationResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_capture_storage_configuration_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/configuration/capture-storage", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_capture_storage_configuration_v1( + self, + save_capture_storage_configuration_request_v1: Optional[SaveCaptureStorageConfigurationRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> CaptureStorageConfigurationResponseV1: + """Update or Create Capture Storage Configuration + + Update or Create Capture Storage configuration.\\ \\ **Required permissions:** _sysdig-storage.edit_ + + :param save_capture_storage_configuration_request_v1: + :type save_capture_storage_configuration_request_v1: SaveCaptureStorageConfigurationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_capture_storage_configuration_v1_serialize( + save_capture_storage_configuration_request_v1=save_capture_storage_configuration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CaptureStorageConfigurationResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_capture_storage_configuration_v1_with_http_info( + self, + save_capture_storage_configuration_request_v1: Optional[SaveCaptureStorageConfigurationRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[CaptureStorageConfigurationResponseV1]: + """Update or Create Capture Storage Configuration + + Update or Create Capture Storage configuration.\\ \\ **Required permissions:** _sysdig-storage.edit_ + + :param save_capture_storage_configuration_request_v1: + :type save_capture_storage_configuration_request_v1: SaveCaptureStorageConfigurationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_capture_storage_configuration_v1_serialize( + save_capture_storage_configuration_request_v1=save_capture_storage_configuration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CaptureStorageConfigurationResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_capture_storage_configuration_v1_without_preload_content( + self, + save_capture_storage_configuration_request_v1: Optional[SaveCaptureStorageConfigurationRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update or Create Capture Storage Configuration + + Update or Create Capture Storage configuration.\\ \\ **Required permissions:** _sysdig-storage.edit_ + + :param save_capture_storage_configuration_request_v1: + :type save_capture_storage_configuration_request_v1: SaveCaptureStorageConfigurationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_capture_storage_configuration_v1_serialize( + save_capture_storage_configuration_request_v1=save_capture_storage_configuration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CaptureStorageConfigurationResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_capture_storage_configuration_v1_serialize( + self, + save_capture_storage_configuration_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if save_capture_storage_configuration_request_v1 is not None: + _body_params = save_capture_storage_configuration_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/configuration/capture-storage", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/certificates_api.py b/sysdig_client/api/certificates_api.py new file mode 100644 index 00000000..777ccd5c --- /dev/null +++ b/sysdig_client/api/certificates_api.py @@ -0,0 +1,1451 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.certificate import Certificate +from sysdig_client.models.certificates_response import CertificatesResponse +from sysdig_client.models.services_response import ServicesResponse + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class CertificatesApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_csrv1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> str: + """Create CSR + + Creates a Certificate Signing Request generated from the customer unique private key. The CSR is generated on the fly.\\ \\ **Required permissions:** _certman.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_csrv1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_csrv1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[str]: + """Create CSR + + Creates a Certificate Signing Request generated from the customer unique private key. The CSR is generated on the fly.\\ \\ **Required permissions:** _certman.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_csrv1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_csrv1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create CSR + + Creates a Certificate Signing Request generated from the customer unique private key. The CSR is generated on the fly.\\ \\ **Required permissions:** _certman.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_csrv1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_csrv1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["text/plain", "application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/secure/certman/v1/csr", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_certificate_v1( + self, + cert_id: Annotated[str, Field(strict=True, max_length=20, description="ID of the certificate")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Certificate + + Deletes a certificate given its id. A certificate cannot be deleted if it's being used (i.e. by the events forwarder to connect to third parties).\\ \\ **Required permissions:** _certman.edit_ + + :param cert_id: ID of the certificate (required) + :type cert_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_certificate_v1_serialize( + cert_id=cert_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_certificate_v1_with_http_info( + self, + cert_id: Annotated[str, Field(strict=True, max_length=20, description="ID of the certificate")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Certificate + + Deletes a certificate given its id. A certificate cannot be deleted if it's being used (i.e. by the events forwarder to connect to third parties).\\ \\ **Required permissions:** _certman.edit_ + + :param cert_id: ID of the certificate (required) + :type cert_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_certificate_v1_serialize( + cert_id=cert_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_certificate_v1_without_preload_content( + self, + cert_id: Annotated[str, Field(strict=True, max_length=20, description="ID of the certificate")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Certificate + + Deletes a certificate given its id. A certificate cannot be deleted if it's being used (i.e. by the events forwarder to connect to third parties).\\ \\ **Required permissions:** _certman.edit_ + + :param cert_id: ID of the certificate (required) + :type cert_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_certificate_v1_serialize( + cert_id=cert_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_certificate_v1_serialize( + self, + cert_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if cert_id is not None: + _path_params["certId"] = cert_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/secure/certman/v1/certificates/{certId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_certificate_registration_v1( + self, + cert_id: Annotated[str, Field(strict=True, max_length=20, description="ID of the certificate")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServicesResponse: + """List Services + + Returns he list of integrations using this certificate.\\ \\ **Required permissions:** _certman.read_ + + :param cert_id: ID of the certificate (required) + :type cert_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_certificate_registration_v1_serialize( + cert_id=cert_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServicesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_certificate_registration_v1_with_http_info( + self, + cert_id: Annotated[str, Field(strict=True, max_length=20, description="ID of the certificate")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServicesResponse]: + """List Services + + Returns he list of integrations using this certificate.\\ \\ **Required permissions:** _certman.read_ + + :param cert_id: ID of the certificate (required) + :type cert_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_certificate_registration_v1_serialize( + cert_id=cert_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServicesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_certificate_registration_v1_without_preload_content( + self, + cert_id: Annotated[str, Field(strict=True, max_length=20, description="ID of the certificate")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Services + + Returns he list of integrations using this certificate.\\ \\ **Required permissions:** _certman.read_ + + :param cert_id: ID of the certificate (required) + :type cert_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_certificate_registration_v1_serialize( + cert_id=cert_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServicesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_certificate_registration_v1_serialize( + self, + cert_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if cert_id is not None: + _path_params["certId"] = cert_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/certman/v1/certificates/{certId}/services", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_certificate_v1( + self, + cert_id: Annotated[str, Field(strict=True, max_length=20, description="ID of the certificate")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Certificate: + """Get Certificate + + Get a single certificate.\\ \\ **Required permissions:** _certman.read_ + + :param cert_id: ID of the certificate (required) + :type cert_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_certificate_v1_serialize( + cert_id=cert_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "Certificate", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_certificate_v1_with_http_info( + self, + cert_id: Annotated[str, Field(strict=True, max_length=20, description="ID of the certificate")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[Certificate]: + """Get Certificate + + Get a single certificate.\\ \\ **Required permissions:** _certman.read_ + + :param cert_id: ID of the certificate (required) + :type cert_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_certificate_v1_serialize( + cert_id=cert_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "Certificate", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_certificate_v1_without_preload_content( + self, + cert_id: Annotated[str, Field(strict=True, max_length=20, description="ID of the certificate")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Certificate + + Get a single certificate.\\ \\ **Required permissions:** _certman.read_ + + :param cert_id: ID of the certificate (required) + :type cert_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_certificate_v1_serialize( + cert_id=cert_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "Certificate", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_certificate_v1_serialize( + self, + cert_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if cert_id is not None: + _path_params["certId"] = cert_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/certman/v1/certificates/{certId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_certificates_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> CertificatesResponse: + """List Certificates + + Returns the list of certificates.\\ \\ **Required permissions:** _certman.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_certificates_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CertificatesResponse", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_certificates_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[CertificatesResponse]: + """List Certificates + + Returns the list of certificates.\\ \\ **Required permissions:** _certman.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_certificates_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CertificatesResponse", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_certificates_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Certificates + + Returns the list of certificates.\\ \\ **Required permissions:** _certman.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_certificates_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CertificatesResponse", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_certificates_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/certman/v1/certificates", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def upload_certificate_v1( + self, + certificate_file_name: Annotated[ + Union[ + Annotated[bytes, Field(strict=True, max_length=10000)], + Annotated[str, Field(strict=True, max_length=10000)], + Tuple[str, Annotated[bytes, Field(strict=True, max_length=10000)]], + ], + Field(description="The certificate file to be uploaded"), + ], + name: Annotated[ + str, Field(strict=True, max_length=200, description="The name of the certificate that is being uploaded") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Certificate: + """Upload Certificate + + Uploads a certificate that has been created by signing a CSR obtained via Certificates Management.\\ \\ **Required permissions:** _certman.edit_ + + :param certificate_file_name: The certificate file to be uploaded (required) + :type certificate_file_name: bytearray + :param name: The name of the certificate that is being uploaded (required) + :type name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._upload_certificate_v1_serialize( + certificate_file_name=certificate_file_name, + name=name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "Certificate", + "400": "InvalidCertificate", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def upload_certificate_v1_with_http_info( + self, + certificate_file_name: Annotated[ + Union[ + Annotated[bytes, Field(strict=True, max_length=10000)], + Annotated[str, Field(strict=True, max_length=10000)], + Tuple[str, Annotated[bytes, Field(strict=True, max_length=10000)]], + ], + Field(description="The certificate file to be uploaded"), + ], + name: Annotated[ + str, Field(strict=True, max_length=200, description="The name of the certificate that is being uploaded") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[Certificate]: + """Upload Certificate + + Uploads a certificate that has been created by signing a CSR obtained via Certificates Management.\\ \\ **Required permissions:** _certman.edit_ + + :param certificate_file_name: The certificate file to be uploaded (required) + :type certificate_file_name: bytearray + :param name: The name of the certificate that is being uploaded (required) + :type name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._upload_certificate_v1_serialize( + certificate_file_name=certificate_file_name, + name=name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "Certificate", + "400": "InvalidCertificate", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def upload_certificate_v1_without_preload_content( + self, + certificate_file_name: Annotated[ + Union[ + Annotated[bytes, Field(strict=True, max_length=10000)], + Annotated[str, Field(strict=True, max_length=10000)], + Tuple[str, Annotated[bytes, Field(strict=True, max_length=10000)]], + ], + Field(description="The certificate file to be uploaded"), + ], + name: Annotated[ + str, Field(strict=True, max_length=200, description="The name of the certificate that is being uploaded") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Upload Certificate + + Uploads a certificate that has been created by signing a CSR obtained via Certificates Management.\\ \\ **Required permissions:** _certman.edit_ + + :param certificate_file_name: The certificate file to be uploaded (required) + :type certificate_file_name: bytearray + :param name: The name of the certificate that is being uploaded (required) + :type name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._upload_certificate_v1_serialize( + certificate_file_name=certificate_file_name, + name=name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "Certificate", + "400": "InvalidCertificate", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _upload_certificate_v1_serialize( + self, + certificate_file_name, + name, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + if certificate_file_name is not None: + _files["certificateFileName"] = certificate_file_name + if name is not None: + _form_params.append(("name", name)) + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["multipart/form-data"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/secure/certman/v1/certificates", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/cost_advisor_custom_pricing_api.py b/sysdig_client/api/cost_advisor_custom_pricing_api.py new file mode 100644 index 00000000..01a41c39 --- /dev/null +++ b/sysdig_client/api/cost_advisor_custom_pricing_api.py @@ -0,0 +1,1675 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.create_pricing_request_v1 import CreatePricingRequestV1 +from sysdig_client.models.get_pricing_paginated_response_v1 import GetPricingPaginatedResponseV1 +from sysdig_client.models.get_pricing_projected_paginated_response_v1 import GetPricingProjectedPaginatedResponseV1 +from sysdig_client.models.pricing_response_v1 import PricingResponseV1 +from sysdig_client.models.pricing_type import PricingType +from sysdig_client.models.update_pricing_request_v1 import UpdatePricingRequestV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class CostAdvisorCustomPricingApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_pricing_v1( + self, + create_pricing_request_v1: Annotated[ + Optional[CreatePricingRequestV1], + Field( + description="The payload to create pricing. Use the type field to create a default pricing or pricing for a specific Kubernetes cluster." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> PricingResponseV1: + """Create Pricing + + Change a new pricing to use as default (for cloud providers that Cost Advisor doesn't automatically support) or for a specific Kubernetes cluster.\\ \\ You need to specify hourly costs for 1 CPU, 1GB of RAM and 1GB of storage. \\ Different CPU and RAM costs can be specified for spot instances; to enable Cost Advisor to identify the spot node, a label and spot value must also be set. \\ \\ Cluster hourly cost = sum(node hourly costs) + (total storage * storage unit cost). \\ Node hourly cost = (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) \\ \\ **Required permissions:** _cost-advisor.edit_ + + :param create_pricing_request_v1: The payload to create pricing. Use the type field to create a default pricing or pricing for a specific Kubernetes cluster. + :type create_pricing_request_v1: CreatePricingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_pricing_v1_serialize( + create_pricing_request_v1=create_pricing_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "PricingResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_pricing_v1_with_http_info( + self, + create_pricing_request_v1: Annotated[ + Optional[CreatePricingRequestV1], + Field( + description="The payload to create pricing. Use the type field to create a default pricing or pricing for a specific Kubernetes cluster." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[PricingResponseV1]: + """Create Pricing + + Change a new pricing to use as default (for cloud providers that Cost Advisor doesn't automatically support) or for a specific Kubernetes cluster.\\ \\ You need to specify hourly costs for 1 CPU, 1GB of RAM and 1GB of storage. \\ Different CPU and RAM costs can be specified for spot instances; to enable Cost Advisor to identify the spot node, a label and spot value must also be set. \\ \\ Cluster hourly cost = sum(node hourly costs) + (total storage * storage unit cost). \\ Node hourly cost = (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) \\ \\ **Required permissions:** _cost-advisor.edit_ + + :param create_pricing_request_v1: The payload to create pricing. Use the type field to create a default pricing or pricing for a specific Kubernetes cluster. + :type create_pricing_request_v1: CreatePricingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_pricing_v1_serialize( + create_pricing_request_v1=create_pricing_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "PricingResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_pricing_v1_without_preload_content( + self, + create_pricing_request_v1: Annotated[ + Optional[CreatePricingRequestV1], + Field( + description="The payload to create pricing. Use the type field to create a default pricing or pricing for a specific Kubernetes cluster." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Pricing + + Change a new pricing to use as default (for cloud providers that Cost Advisor doesn't automatically support) or for a specific Kubernetes cluster.\\ \\ You need to specify hourly costs for 1 CPU, 1GB of RAM and 1GB of storage. \\ Different CPU and RAM costs can be specified for spot instances; to enable Cost Advisor to identify the spot node, a label and spot value must also be set. \\ \\ Cluster hourly cost = sum(node hourly costs) + (total storage * storage unit cost). \\ Node hourly cost = (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) \\ \\ **Required permissions:** _cost-advisor.edit_ + + :param create_pricing_request_v1: The payload to create pricing. Use the type field to create a default pricing or pricing for a specific Kubernetes cluster. + :type create_pricing_request_v1: CreatePricingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_pricing_v1_serialize( + create_pricing_request_v1=create_pricing_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "PricingResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_pricing_v1_serialize( + self, + create_pricing_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_pricing_request_v1 is not None: + _body_params = create_pricing_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/monitor/cost-advisor/v1/pricing", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_pricing_by_id_v1( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Pricing + + Delete a pricing by its ID. If the pricing deleted is the DEFAULT one. Cost Advisor will continue to compute costs for the unsupported Kubernetes cluster using the Sysdig default pricing.\\ \\ **Required permissions:** _cost-advisor.edit_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_pricing_by_id_v1_serialize( + pricing_id=pricing_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_pricing_by_id_v1_with_http_info( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Pricing + + Delete a pricing by its ID. If the pricing deleted is the DEFAULT one. Cost Advisor will continue to compute costs for the unsupported Kubernetes cluster using the Sysdig default pricing.\\ \\ **Required permissions:** _cost-advisor.edit_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_pricing_by_id_v1_serialize( + pricing_id=pricing_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_pricing_by_id_v1_without_preload_content( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Pricing + + Delete a pricing by its ID. If the pricing deleted is the DEFAULT one. Cost Advisor will continue to compute costs for the unsupported Kubernetes cluster using the Sysdig default pricing.\\ \\ **Required permissions:** _cost-advisor.edit_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_pricing_by_id_v1_serialize( + pricing_id=pricing_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_pricing_by_id_v1_serialize( + self, + pricing_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if pricing_id is not None: + _path_params["pricingId"] = pricing_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/monitor/cost-advisor/v1/pricing/{pricingId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_pricing_by_id_v1( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> PricingResponseV1: + """Get Pricing + + Retrieve a pricing by ID.\\ \\ **Required permissions:** _cost-advisor.read_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_pricing_by_id_v1_serialize( + pricing_id=pricing_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PricingResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_pricing_by_id_v1_with_http_info( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[PricingResponseV1]: + """Get Pricing + + Retrieve a pricing by ID.\\ \\ **Required permissions:** _cost-advisor.read_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_pricing_by_id_v1_serialize( + pricing_id=pricing_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PricingResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_pricing_by_id_v1_without_preload_content( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Pricing + + Retrieve a pricing by ID.\\ \\ **Required permissions:** _cost-advisor.read_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_pricing_by_id_v1_serialize( + pricing_id=pricing_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PricingResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_pricing_by_id_v1_serialize( + self, + pricing_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if pricing_id is not None: + _path_params["pricingId"] = pricing_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/cost-advisor/v1/pricing/{pricingId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_pricing_projected_costs_v1( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetPricingProjectedPaginatedResponseV1: + """Get Pricing Projected Costs + + Retrieve the monthly projected costs for the clusters using the specified pricing.\\ The computation is done using the total CPU and RAM for the current cluster's nodes and the total storage used by the cluster.\\ \\ Projected monthly cost = 730 * (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) + (total storage * storage unit cost). \\ \\ **Required permissions:** _cost-advisor.read_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_pricing_projected_costs_v1_serialize( + pricing_id=pricing_id, + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPricingProjectedPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_pricing_projected_costs_v1_with_http_info( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetPricingProjectedPaginatedResponseV1]: + """Get Pricing Projected Costs + + Retrieve the monthly projected costs for the clusters using the specified pricing.\\ The computation is done using the total CPU and RAM for the current cluster's nodes and the total storage used by the cluster.\\ \\ Projected monthly cost = 730 * (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) + (total storage * storage unit cost). \\ \\ **Required permissions:** _cost-advisor.read_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_pricing_projected_costs_v1_serialize( + pricing_id=pricing_id, + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPricingProjectedPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_pricing_projected_costs_v1_without_preload_content( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Pricing Projected Costs + + Retrieve the monthly projected costs for the clusters using the specified pricing.\\ The computation is done using the total CPU and RAM for the current cluster's nodes and the total storage used by the cluster.\\ \\ Projected monthly cost = 730 * (total CPUs * CPU unit cost) + (total RAM * RAM unit cost) + (total storage * storage unit cost). \\ \\ **Required permissions:** _cost-advisor.read_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_pricing_projected_costs_v1_serialize( + pricing_id=pricing_id, + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPricingProjectedPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_pricing_projected_costs_v1_serialize( + self, + pricing_id, + offset, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if pricing_id is not None: + _path_params["pricingId"] = pricing_id + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/cost-advisor/v1/pricing/{pricingId}/projected-costs", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_pricing_v1( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + cluster_name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The name of the Kubernetes cluster for which you want to retrive the pricing. "), + ] = None, + type: Annotated[Optional[PricingType], Field(description="The type of pricing to find. ")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetPricingPaginatedResponseV1: + """List Pricing + + Retrieve a paginated list of pricing.\\ \\ **Required permissions:** _cost-advisor.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param cluster_name: The name of the Kubernetes cluster for which you want to retrive the pricing. + :type cluster_name: str + :param type: The type of pricing to find. + :type type: PricingType + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_pricing_v1_serialize( + offset=offset, + limit=limit, + cluster_name=cluster_name, + type=type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPricingPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_pricing_v1_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + cluster_name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The name of the Kubernetes cluster for which you want to retrive the pricing. "), + ] = None, + type: Annotated[Optional[PricingType], Field(description="The type of pricing to find. ")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetPricingPaginatedResponseV1]: + """List Pricing + + Retrieve a paginated list of pricing.\\ \\ **Required permissions:** _cost-advisor.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param cluster_name: The name of the Kubernetes cluster for which you want to retrive the pricing. + :type cluster_name: str + :param type: The type of pricing to find. + :type type: PricingType + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_pricing_v1_serialize( + offset=offset, + limit=limit, + cluster_name=cluster_name, + type=type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPricingPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_pricing_v1_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + cluster_name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The name of the Kubernetes cluster for which you want to retrive the pricing. "), + ] = None, + type: Annotated[Optional[PricingType], Field(description="The type of pricing to find. ")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Pricing + + Retrieve a paginated list of pricing.\\ \\ **Required permissions:** _cost-advisor.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param cluster_name: The name of the Kubernetes cluster for which you want to retrive the pricing. + :type cluster_name: str + :param type: The type of pricing to find. + :type type: PricingType + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_pricing_v1_serialize( + offset=offset, + limit=limit, + cluster_name=cluster_name, + type=type, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPricingPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_pricing_v1_serialize( + self, + offset, + limit, + cluster_name, + type, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if cluster_name is not None: + _query_params.append(("clusterName", cluster_name)) + + if type is not None: + _query_params.append(("type", type.value)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/cost-advisor/v1/pricing", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_pricing_by_id_v1( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + update_pricing_request_v1: Annotated[ + Optional[UpdatePricingRequestV1], Field(description="The payload required to create the pricing.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> PricingResponseV1: + """Update Pricing + + The pricing payload containing the changes you want to apply to the pricing.\\ \\ **Required permissions:** _cost-advisor.edit_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param update_pricing_request_v1: The payload required to create the pricing. + :type update_pricing_request_v1: UpdatePricingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_pricing_by_id_v1_serialize( + pricing_id=pricing_id, + update_pricing_request_v1=update_pricing_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PricingResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_pricing_by_id_v1_with_http_info( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + update_pricing_request_v1: Annotated[ + Optional[UpdatePricingRequestV1], Field(description="The payload required to create the pricing.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[PricingResponseV1]: + """Update Pricing + + The pricing payload containing the changes you want to apply to the pricing.\\ \\ **Required permissions:** _cost-advisor.edit_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param update_pricing_request_v1: The payload required to create the pricing. + :type update_pricing_request_v1: UpdatePricingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_pricing_by_id_v1_serialize( + pricing_id=pricing_id, + update_pricing_request_v1=update_pricing_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PricingResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_pricing_by_id_v1_without_preload_content( + self, + pricing_id: Annotated[int, Field(strict=True, ge=0, description="The pricing ID.")], + update_pricing_request_v1: Annotated[ + Optional[UpdatePricingRequestV1], Field(description="The payload required to create the pricing.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Pricing + + The pricing payload containing the changes you want to apply to the pricing.\\ \\ **Required permissions:** _cost-advisor.edit_ + + :param pricing_id: The pricing ID. (required) + :type pricing_id: int + :param update_pricing_request_v1: The payload required to create the pricing. + :type update_pricing_request_v1: UpdatePricingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_pricing_by_id_v1_serialize( + pricing_id=pricing_id, + update_pricing_request_v1=update_pricing_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PricingResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_pricing_by_id_v1_serialize( + self, + pricing_id, + update_pricing_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if pricing_id is not None: + _path_params["pricingId"] = pricing_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_pricing_request_v1 is not None: + _body_params = update_pricing_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/monitor/cost-advisor/v1/pricing/{pricingId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/cost_advisor_data_api.py b/sysdig_client/api/cost_advisor_data_api.py new file mode 100644 index 00000000..d0280084 --- /dev/null +++ b/sysdig_client/api/cost_advisor_data_api.py @@ -0,0 +1,777 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.wasted_workload_data_request import WastedWorkloadDataRequest +from sysdig_client.models.wasted_workload_spend_data_response import WastedWorkloadSpendDataResponse +from sysdig_client.models.workload_cost_trends_data_request import WorkloadCostTrendsDataRequest +from sysdig_client.models.workload_cost_trends_data_response import WorkloadCostTrendsDataResponse +from sysdig_client.models.workload_rightsizing_data_request import WorkloadRightsizingDataRequest +from sysdig_client.models.workload_rightsizing_data_response import WorkloadRightsizingDataResponse + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class CostAdvisorDataApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_wasted_workload_data( + self, + wasted_workload_data_request: WastedWorkloadDataRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> WastedWorkloadSpendDataResponse: + """Wasted Workload Spend Data + + Use this API to generate a report of Wasted Workload Spend data for a specified date range, scope, and grouping. For details, see [Wasted Workload Spend Report](https://docs.sysdig.com/en/sysdig-monitor/cost-reports/#wasted-workload-spend-report). + + :param wasted_workload_data_request: (required) + :type wasted_workload_data_request: WastedWorkloadDataRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_wasted_workload_data_serialize( + wasted_workload_data_request=wasted_workload_data_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "WastedWorkloadSpendDataResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_wasted_workload_data_with_http_info( + self, + wasted_workload_data_request: WastedWorkloadDataRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[WastedWorkloadSpendDataResponse]: + """Wasted Workload Spend Data + + Use this API to generate a report of Wasted Workload Spend data for a specified date range, scope, and grouping. For details, see [Wasted Workload Spend Report](https://docs.sysdig.com/en/sysdig-monitor/cost-reports/#wasted-workload-spend-report). + + :param wasted_workload_data_request: (required) + :type wasted_workload_data_request: WastedWorkloadDataRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_wasted_workload_data_serialize( + wasted_workload_data_request=wasted_workload_data_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "WastedWorkloadSpendDataResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_wasted_workload_data_without_preload_content( + self, + wasted_workload_data_request: WastedWorkloadDataRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Wasted Workload Spend Data + + Use this API to generate a report of Wasted Workload Spend data for a specified date range, scope, and grouping. For details, see [Wasted Workload Spend Report](https://docs.sysdig.com/en/sysdig-monitor/cost-reports/#wasted-workload-spend-report). + + :param wasted_workload_data_request: (required) + :type wasted_workload_data_request: WastedWorkloadDataRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_wasted_workload_data_serialize( + wasted_workload_data_request=wasted_workload_data_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "WastedWorkloadSpendDataResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_wasted_workload_data_serialize( + self, + wasted_workload_data_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if wasted_workload_data_request is not None: + _body_params = wasted_workload_data_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/monitor/cost-advisor/v1alpha1/data/wasted-workload-spend", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_workload_cost_data_v1( + self, + workload_cost_trends_data_request: WorkloadCostTrendsDataRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> WorkloadCostTrendsDataResponse: + """Workload Cost Trends Data + + Returns workload cost trends data for a specified trend range, pivot date, optional scope, and optional grouping. The response includes cost totals for both current and previous periods, along with the date ranges for each period. + + :param workload_cost_trends_data_request: (required) + :type workload_cost_trends_data_request: WorkloadCostTrendsDataRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_workload_cost_data_v1_serialize( + workload_cost_trends_data_request=workload_cost_trends_data_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "WorkloadCostTrendsDataResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_workload_cost_data_v1_with_http_info( + self, + workload_cost_trends_data_request: WorkloadCostTrendsDataRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[WorkloadCostTrendsDataResponse]: + """Workload Cost Trends Data + + Returns workload cost trends data for a specified trend range, pivot date, optional scope, and optional grouping. The response includes cost totals for both current and previous periods, along with the date ranges for each period. + + :param workload_cost_trends_data_request: (required) + :type workload_cost_trends_data_request: WorkloadCostTrendsDataRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_workload_cost_data_v1_serialize( + workload_cost_trends_data_request=workload_cost_trends_data_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "WorkloadCostTrendsDataResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_workload_cost_data_v1_without_preload_content( + self, + workload_cost_trends_data_request: WorkloadCostTrendsDataRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Workload Cost Trends Data + + Returns workload cost trends data for a specified trend range, pivot date, optional scope, and optional grouping. The response includes cost totals for both current and previous periods, along with the date ranges for each period. + + :param workload_cost_trends_data_request: (required) + :type workload_cost_trends_data_request: WorkloadCostTrendsDataRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_workload_cost_data_v1_serialize( + workload_cost_trends_data_request=workload_cost_trends_data_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "WorkloadCostTrendsDataResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_workload_cost_data_v1_serialize( + self, + workload_cost_trends_data_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if workload_cost_trends_data_request is not None: + _body_params = workload_cost_trends_data_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/monitor/cost-advisor/v1alpha1/data/workload-cost-trends", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_workload_rightsizing_data( + self, + workload_rightsizing_data_request: WorkloadRightsizingDataRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> WorkloadRightsizingDataResponse: + """Workload Rightsizing Data + + Use this API to generate a Workload Rightsizing data for a specified date range, algorithm and optional scope. The response is automatically grouped by the following Prometheus labels: - kube_cluster_name - kube_namespace_name - kube_workload_name - container_name + + :param workload_rightsizing_data_request: (required) + :type workload_rightsizing_data_request: WorkloadRightsizingDataRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_workload_rightsizing_data_serialize( + workload_rightsizing_data_request=workload_rightsizing_data_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "WorkloadRightsizingDataResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_workload_rightsizing_data_with_http_info( + self, + workload_rightsizing_data_request: WorkloadRightsizingDataRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[WorkloadRightsizingDataResponse]: + """Workload Rightsizing Data + + Use this API to generate a Workload Rightsizing data for a specified date range, algorithm and optional scope. The response is automatically grouped by the following Prometheus labels: - kube_cluster_name - kube_namespace_name - kube_workload_name - container_name + + :param workload_rightsizing_data_request: (required) + :type workload_rightsizing_data_request: WorkloadRightsizingDataRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_workload_rightsizing_data_serialize( + workload_rightsizing_data_request=workload_rightsizing_data_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "WorkloadRightsizingDataResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_workload_rightsizing_data_without_preload_content( + self, + workload_rightsizing_data_request: WorkloadRightsizingDataRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Workload Rightsizing Data + + Use this API to generate a Workload Rightsizing data for a specified date range, algorithm and optional scope. The response is automatically grouped by the following Prometheus labels: - kube_cluster_name - kube_namespace_name - kube_workload_name - container_name + + :param workload_rightsizing_data_request: (required) + :type workload_rightsizing_data_request: WorkloadRightsizingDataRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_workload_rightsizing_data_serialize( + workload_rightsizing_data_request=workload_rightsizing_data_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "WorkloadRightsizingDataResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_workload_rightsizing_data_serialize( + self, + workload_rightsizing_data_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if workload_rightsizing_data_request is not None: + _body_params = workload_rightsizing_data_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/monitor/cost-advisor/v1alpha1/data/workload-rightsizing", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/events_forwarder_api.py b/sysdig_client/api/events_forwarder_api.py new file mode 100644 index 00000000..c7f5723c --- /dev/null +++ b/sysdig_client/api/events_forwarder_api.py @@ -0,0 +1,1716 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.create_integration_request import CreateIntegrationRequest +from sysdig_client.models.integration_channels_response import IntegrationChannelsResponse +from sysdig_client.models.integration_response import IntegrationResponse +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.integration_types_response import IntegrationTypesResponse +from sysdig_client.models.list_integrations_response import ListIntegrationsResponse +from sysdig_client.models.update_integration_request import UpdateIntegrationRequest + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class EventsForwarderApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_efo_inegration_v1( + self, + create_integration_request: Annotated[ + CreateIntegrationRequest, Field(description="Configuration for the new integration") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IntegrationResponse: + """Create Integration + + Configures a new integration to forward a data type to a destination, given the specified connection parameters + + :param create_integration_request: Configuration for the new integration (required) + :type create_integration_request: CreateIntegrationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_efo_inegration_v1_serialize( + create_integration_request=create_integration_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IntegrationResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_efo_inegration_v1_with_http_info( + self, + create_integration_request: Annotated[ + CreateIntegrationRequest, Field(description="Configuration for the new integration") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IntegrationResponse]: + """Create Integration + + Configures a new integration to forward a data type to a destination, given the specified connection parameters + + :param create_integration_request: Configuration for the new integration (required) + :type create_integration_request: CreateIntegrationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_efo_inegration_v1_serialize( + create_integration_request=create_integration_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IntegrationResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_efo_inegration_v1_without_preload_content( + self, + create_integration_request: Annotated[ + CreateIntegrationRequest, Field(description="Configuration for the new integration") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Integration + + Configures a new integration to forward a data type to a destination, given the specified connection parameters + + :param create_integration_request: Configuration for the new integration (required) + :type create_integration_request: CreateIntegrationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_efo_inegration_v1_serialize( + create_integration_request=create_integration_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IntegrationResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_efo_inegration_v1_serialize( + self, + create_integration_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_integration_request is not None: + _body_params = create_integration_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/secure/events-forwarder/v1/integrations", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_efo_integration_by_idv1( + self, + integration_id: Annotated[ + int, Field(le=9223372036854775616, strict=True, ge=1, description="ID of the integration to return") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Integration + + Delete an integration + + :param integration_id: ID of the integration to return (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_efo_integration_by_idv1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": None, + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_efo_integration_by_idv1_with_http_info( + self, + integration_id: Annotated[ + int, Field(le=9223372036854775616, strict=True, ge=1, description="ID of the integration to return") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Integration + + Delete an integration + + :param integration_id: ID of the integration to return (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_efo_integration_by_idv1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": None, + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_efo_integration_by_idv1_without_preload_content( + self, + integration_id: Annotated[ + int, Field(le=9223372036854775616, strict=True, ge=1, description="ID of the integration to return") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Integration + + Delete an integration + + :param integration_id: ID of the integration to return (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_efo_integration_by_idv1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": None, + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_efo_integration_by_idv1_serialize( + self, + integration_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/secure/events-forwarder/v1/integrations/{integrationId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_efo_integration_by_id_v1( + self, + integration_id: Annotated[ + int, Field(le=9223372036854775616, strict=True, ge=1, description="ID of the integration to return") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IntegrationResponse: + """Get Integration + + Returns the configuration for an integration + + :param integration_id: ID of the integration to return (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_efo_integration_by_id_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponse", + "400": "Error", + "401": "Error", + "404": None, + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_efo_integration_by_id_v1_with_http_info( + self, + integration_id: Annotated[ + int, Field(le=9223372036854775616, strict=True, ge=1, description="ID of the integration to return") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IntegrationResponse]: + """Get Integration + + Returns the configuration for an integration + + :param integration_id: ID of the integration to return (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_efo_integration_by_id_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponse", + "400": "Error", + "401": "Error", + "404": None, + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_efo_integration_by_id_v1_without_preload_content( + self, + integration_id: Annotated[ + int, Field(le=9223372036854775616, strict=True, ge=1, description="ID of the integration to return") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Integration + + Returns the configuration for an integration + + :param integration_id: ID of the integration to return (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_efo_integration_by_id_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponse", + "400": "Error", + "401": "Error", + "404": None, + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_efo_integration_by_id_v1_serialize( + self, + integration_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/events-forwarder/v1/integrations/{integrationId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def list_efo_channels_by_integration_v1( + self, + type: Annotated[IntegrationType, Field(description="the Events Forwarder Integration Type")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IntegrationChannelsResponse: + """List Channels + + Returns the list of supported Channels (Data types) for a given integration type + + :param type: the Events Forwarder Integration Type (required) + :type type: IntegrationType + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_efo_channels_by_integration_v1_serialize( + type=type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationChannelsResponse", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def list_efo_channels_by_integration_v1_with_http_info( + self, + type: Annotated[IntegrationType, Field(description="the Events Forwarder Integration Type")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IntegrationChannelsResponse]: + """List Channels + + Returns the list of supported Channels (Data types) for a given integration type + + :param type: the Events Forwarder Integration Type (required) + :type type: IntegrationType + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_efo_channels_by_integration_v1_serialize( + type=type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationChannelsResponse", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def list_efo_channels_by_integration_v1_without_preload_content( + self, + type: Annotated[IntegrationType, Field(description="the Events Forwarder Integration Type")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Channels + + Returns the list of supported Channels (Data types) for a given integration type + + :param type: the Events Forwarder Integration Type (required) + :type type: IntegrationType + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_efo_channels_by_integration_v1_serialize( + type=type, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationChannelsResponse", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _list_efo_channels_by_integration_v1_serialize( + self, + type, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if type is not None: + _query_params.append(("type", type.value)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/events-forwarder/v1/channels", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def list_efo_integrations_types_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IntegrationTypesResponse: + """List Integrations types + + Returns the list of supported integrations, to which Events Forwarder can send data + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_efo_integrations_types_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationTypesResponse", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def list_efo_integrations_types_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IntegrationTypesResponse]: + """List Integrations types + + Returns the list of supported integrations, to which Events Forwarder can send data + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_efo_integrations_types_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationTypesResponse", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def list_efo_integrations_types_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Integrations types + + Returns the list of supported integrations, to which Events Forwarder can send data + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_efo_integrations_types_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationTypesResponse", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _list_efo_integrations_types_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/events-forwarder/v1/types", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def list_efo_integrations_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListIntegrationsResponse: + """List Integrations + + Returns the Events Forwarder integrations set up + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_efo_integrations_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListIntegrationsResponse", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def list_efo_integrations_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListIntegrationsResponse]: + """List Integrations + + Returns the Events Forwarder integrations set up + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_efo_integrations_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListIntegrationsResponse", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def list_efo_integrations_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Integrations + + Returns the Events Forwarder integrations set up + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_efo_integrations_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListIntegrationsResponse", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _list_efo_integrations_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/events-forwarder/v1/integrations", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_efo_integration_by_id_v1( + self, + integration_id: Annotated[ + int, Field(le=9223372036854775616, strict=True, ge=1, description="ID of the integration to return") + ], + update_integration_request: Annotated[ + UpdateIntegrationRequest, Field(description="Update an events forwarder integration in Sysdig Secure") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IntegrationResponse: + """Update Integration + + Updates an integration, replacing its configuration + + :param integration_id: ID of the integration to return (required) + :type integration_id: int + :param update_integration_request: Update an events forwarder integration in Sysdig Secure (required) + :type update_integration_request: UpdateIntegrationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_efo_integration_by_id_v1_serialize( + integration_id=integration_id, + update_integration_request=update_integration_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": None, + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_efo_integration_by_id_v1_with_http_info( + self, + integration_id: Annotated[ + int, Field(le=9223372036854775616, strict=True, ge=1, description="ID of the integration to return") + ], + update_integration_request: Annotated[ + UpdateIntegrationRequest, Field(description="Update an events forwarder integration in Sysdig Secure") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IntegrationResponse]: + """Update Integration + + Updates an integration, replacing its configuration + + :param integration_id: ID of the integration to return (required) + :type integration_id: int + :param update_integration_request: Update an events forwarder integration in Sysdig Secure (required) + :type update_integration_request: UpdateIntegrationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_efo_integration_by_id_v1_serialize( + integration_id=integration_id, + update_integration_request=update_integration_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": None, + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_efo_integration_by_id_v1_without_preload_content( + self, + integration_id: Annotated[ + int, Field(le=9223372036854775616, strict=True, ge=1, description="ID of the integration to return") + ], + update_integration_request: Annotated[ + UpdateIntegrationRequest, Field(description="Update an events forwarder integration in Sysdig Secure") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Integration + + Updates an integration, replacing its configuration + + :param integration_id: ID of the integration to return (required) + :type integration_id: int + :param update_integration_request: Update an events forwarder integration in Sysdig Secure (required) + :type update_integration_request: UpdateIntegrationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_efo_integration_by_id_v1_serialize( + integration_id=integration_id, + update_integration_request=update_integration_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": None, + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_efo_integration_by_id_v1_serialize( + self, + integration_id, + update_integration_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_integration_request is not None: + _body_params = update_integration_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/secure/events-forwarder/v1/integrations/{integrationId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/group_mappings_api.py b/sysdig_client/api/group_mappings_api.py new file mode 100644 index 00000000..c80d2277 --- /dev/null +++ b/sysdig_client/api/group_mappings_api.py @@ -0,0 +1,1845 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.create_group_mapping_request_v1 import CreateGroupMappingRequestV1 +from sysdig_client.models.group_mapping_response_v1 import GroupMappingResponseV1 +from sysdig_client.models.group_mapping_settings_v1 import GroupMappingSettingsV1 +from sysdig_client.models.group_mappings_paginated_response_v1 import GroupMappingsPaginatedResponseV1 +from sysdig_client.models.update_group_mapping_request_v1 import UpdateGroupMappingRequestV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class GroupMappingsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_group_mapping_v1( + self, + create_group_mapping_request_v1: Annotated[ + Optional[CreateGroupMappingRequestV1], Field(description="The payload required to create group mapping.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GroupMappingResponseV1: + """Create Group Mapping + + Create a new group mapping.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param create_group_mapping_request_v1: The payload required to create group mapping. + :type create_group_mapping_request_v1: CreateGroupMappingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_group_mapping_v1_serialize( + create_group_mapping_request_v1=create_group_mapping_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "GroupMappingResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_group_mapping_v1_with_http_info( + self, + create_group_mapping_request_v1: Annotated[ + Optional[CreateGroupMappingRequestV1], Field(description="The payload required to create group mapping.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GroupMappingResponseV1]: + """Create Group Mapping + + Create a new group mapping.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param create_group_mapping_request_v1: The payload required to create group mapping. + :type create_group_mapping_request_v1: CreateGroupMappingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_group_mapping_v1_serialize( + create_group_mapping_request_v1=create_group_mapping_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "GroupMappingResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_group_mapping_v1_without_preload_content( + self, + create_group_mapping_request_v1: Annotated[ + Optional[CreateGroupMappingRequestV1], Field(description="The payload required to create group mapping.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Group Mapping + + Create a new group mapping.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param create_group_mapping_request_v1: The payload required to create group mapping. + :type create_group_mapping_request_v1: CreateGroupMappingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_group_mapping_v1_serialize( + create_group_mapping_request_v1=create_group_mapping_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "GroupMappingResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_group_mapping_v1_serialize( + self, + create_group_mapping_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_group_mapping_request_v1 is not None: + _body_params = create_group_mapping_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/group-mappings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_group_mapping_by_id_v1( + self, + group_mapping_id: Annotated[int, Field(strict=True, ge=0, description="The group mapping ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Group Mapping + + Delete a group mapping by its ID.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param group_mapping_id: The group mapping ID. (required) + :type group_mapping_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_group_mapping_by_id_v1_serialize( + group_mapping_id=group_mapping_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_group_mapping_by_id_v1_with_http_info( + self, + group_mapping_id: Annotated[int, Field(strict=True, ge=0, description="The group mapping ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Group Mapping + + Delete a group mapping by its ID.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param group_mapping_id: The group mapping ID. (required) + :type group_mapping_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_group_mapping_by_id_v1_serialize( + group_mapping_id=group_mapping_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_group_mapping_by_id_v1_without_preload_content( + self, + group_mapping_id: Annotated[int, Field(strict=True, ge=0, description="The group mapping ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Group Mapping + + Delete a group mapping by its ID.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param group_mapping_id: The group mapping ID. (required) + :type group_mapping_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_group_mapping_by_id_v1_serialize( + group_mapping_id=group_mapping_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_group_mapping_by_id_v1_serialize( + self, + group_mapping_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if group_mapping_id is not None: + _path_params["groupMappingId"] = group_mapping_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/group-mappings/{groupMappingId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_group_mapping_by_id_v1( + self, + group_mapping_id: Annotated[int, Field(strict=True, ge=0, description="The group mapping ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GroupMappingResponseV1: + """Get Group Mapping + + Return a group mapping by its ID.\\ \\ **Required permissions:** _group-mappings.read_ + + :param group_mapping_id: The group mapping ID. (required) + :type group_mapping_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_group_mapping_by_id_v1_serialize( + group_mapping_id=group_mapping_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_group_mapping_by_id_v1_with_http_info( + self, + group_mapping_id: Annotated[int, Field(strict=True, ge=0, description="The group mapping ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GroupMappingResponseV1]: + """Get Group Mapping + + Return a group mapping by its ID.\\ \\ **Required permissions:** _group-mappings.read_ + + :param group_mapping_id: The group mapping ID. (required) + :type group_mapping_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_group_mapping_by_id_v1_serialize( + group_mapping_id=group_mapping_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_group_mapping_by_id_v1_without_preload_content( + self, + group_mapping_id: Annotated[int, Field(strict=True, ge=0, description="The group mapping ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Group Mapping + + Return a group mapping by its ID.\\ \\ **Required permissions:** _group-mappings.read_ + + :param group_mapping_id: The group mapping ID. (required) + :type group_mapping_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_group_mapping_by_id_v1_serialize( + group_mapping_id=group_mapping_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_group_mapping_by_id_v1_serialize( + self, + group_mapping_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if group_mapping_id is not None: + _path_params["groupMappingId"] = group_mapping_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/group-mappings/{groupMappingId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_group_mapping_settings_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GroupMappingSettingsV1: + """Get Group Mappings Settings + + Retrieves your group mapping settings.\\ \\ **Required permissions:** _group-mappings.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_group_mapping_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingSettingsV1", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_group_mapping_settings_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GroupMappingSettingsV1]: + """Get Group Mappings Settings + + Retrieves your group mapping settings.\\ \\ **Required permissions:** _group-mappings.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_group_mapping_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingSettingsV1", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_group_mapping_settings_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Group Mappings Settings + + Retrieves your group mapping settings.\\ \\ **Required permissions:** _group-mappings.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_group_mapping_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingSettingsV1", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_group_mapping_settings_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/group-mappings-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_group_mappings_v1( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GroupMappingsPaginatedResponseV1: + """List Group Mappings + + Retrieve a paginated list of group mappings.\\ \\ **Required permissions:** _group-mappings.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_group_mappings_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_group_mappings_v1_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GroupMappingsPaginatedResponseV1]: + """List Group Mappings + + Retrieve a paginated list of group mappings.\\ \\ **Required permissions:** _group-mappings.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_group_mappings_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_group_mappings_v1_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Group Mappings + + Retrieve a paginated list of group mappings.\\ \\ **Required permissions:** _group-mappings.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_group_mappings_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_group_mappings_v1_serialize( + self, + offset, + limit, + orderby, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if orderby is not None: + _query_params.append(("orderby", orderby)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/group-mappings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def save_group_mapping_settings_v1( + self, + group_mapping_settings_v1: Annotated[ + Optional[GroupMappingSettingsV1], Field(description="The payload required to save group mapping settings.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GroupMappingSettingsV1: + """Save Group Mapping settings + + Saves your group mapping settings.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param group_mapping_settings_v1: The payload required to save group mapping settings. + :type group_mapping_settings_v1: GroupMappingSettingsV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._save_group_mapping_settings_v1_serialize( + group_mapping_settings_v1=group_mapping_settings_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingSettingsV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def save_group_mapping_settings_v1_with_http_info( + self, + group_mapping_settings_v1: Annotated[ + Optional[GroupMappingSettingsV1], Field(description="The payload required to save group mapping settings.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GroupMappingSettingsV1]: + """Save Group Mapping settings + + Saves your group mapping settings.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param group_mapping_settings_v1: The payload required to save group mapping settings. + :type group_mapping_settings_v1: GroupMappingSettingsV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._save_group_mapping_settings_v1_serialize( + group_mapping_settings_v1=group_mapping_settings_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingSettingsV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def save_group_mapping_settings_v1_without_preload_content( + self, + group_mapping_settings_v1: Annotated[ + Optional[GroupMappingSettingsV1], Field(description="The payload required to save group mapping settings.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Save Group Mapping settings + + Saves your group mapping settings.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param group_mapping_settings_v1: The payload required to save group mapping settings. + :type group_mapping_settings_v1: GroupMappingSettingsV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._save_group_mapping_settings_v1_serialize( + group_mapping_settings_v1=group_mapping_settings_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingSettingsV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _save_group_mapping_settings_v1_serialize( + self, + group_mapping_settings_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if group_mapping_settings_v1 is not None: + _body_params = group_mapping_settings_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/group-mappings-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_group_mapping_by_id_v1( + self, + group_mapping_id: Annotated[int, Field(strict=True, ge=0, description="The group mapping ID.")], + update_group_mapping_request_v1: Optional[UpdateGroupMappingRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GroupMappingResponseV1: + """Update Group Mapping + + Update a group mapping by its ID.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param group_mapping_id: The group mapping ID. (required) + :type group_mapping_id: int + :param update_group_mapping_request_v1: + :type update_group_mapping_request_v1: UpdateGroupMappingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_group_mapping_by_id_v1_serialize( + group_mapping_id=group_mapping_id, + update_group_mapping_request_v1=update_group_mapping_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_group_mapping_by_id_v1_with_http_info( + self, + group_mapping_id: Annotated[int, Field(strict=True, ge=0, description="The group mapping ID.")], + update_group_mapping_request_v1: Optional[UpdateGroupMappingRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GroupMappingResponseV1]: + """Update Group Mapping + + Update a group mapping by its ID.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param group_mapping_id: The group mapping ID. (required) + :type group_mapping_id: int + :param update_group_mapping_request_v1: + :type update_group_mapping_request_v1: UpdateGroupMappingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_group_mapping_by_id_v1_serialize( + group_mapping_id=group_mapping_id, + update_group_mapping_request_v1=update_group_mapping_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_group_mapping_by_id_v1_without_preload_content( + self, + group_mapping_id: Annotated[int, Field(strict=True, ge=0, description="The group mapping ID.")], + update_group_mapping_request_v1: Optional[UpdateGroupMappingRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Group Mapping + + Update a group mapping by its ID.\\ \\ **Required permissions:** _group-mappings.edit_ + + :param group_mapping_id: The group mapping ID. (required) + :type group_mapping_id: int + :param update_group_mapping_request_v1: + :type update_group_mapping_request_v1: UpdateGroupMappingRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_group_mapping_by_id_v1_serialize( + group_mapping_id=group_mapping_id, + update_group_mapping_request_v1=update_group_mapping_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GroupMappingResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_group_mapping_by_id_v1_serialize( + self, + group_mapping_id, + update_group_mapping_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if group_mapping_id is not None: + _path_params["groupMappingId"] = group_mapping_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_group_mapping_request_v1 is not None: + _body_params = update_group_mapping_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/group-mappings/{groupMappingId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/inhibition_rules_api.py b/sysdig_client/api/inhibition_rules_api.py new file mode 100644 index 00000000..e1c337c3 --- /dev/null +++ b/sysdig_client/api/inhibition_rules_api.py @@ -0,0 +1,1327 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.create_inhibition_rule_request_v1 import CreateInhibitionRuleRequestV1 +from sysdig_client.models.get_inhibition_rules_paginated_response_v1 import GetInhibitionRulesPaginatedResponseV1 +from sysdig_client.models.inhibition_rule_response_v1 import InhibitionRuleResponseV1 +from sysdig_client.models.update_inhibition_rule_request_v1 import UpdateInhibitionRuleRequestV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class InhibitionRulesApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_inhibition_rule( + self, + create_inhibition_rule_request_v1: Annotated[ + CreateInhibitionRuleRequestV1, Field(description="The inhibition rule to be created.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> InhibitionRuleResponseV1: + """Create Inhibition Rule + + Create an inhibition rule.\\ \\ **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + :param create_inhibition_rule_request_v1: The inhibition rule to be created. (required) + :type create_inhibition_rule_request_v1: CreateInhibitionRuleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_inhibition_rule_serialize( + create_inhibition_rule_request_v1=create_inhibition_rule_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "InhibitionRuleResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_inhibition_rule_with_http_info( + self, + create_inhibition_rule_request_v1: Annotated[ + CreateInhibitionRuleRequestV1, Field(description="The inhibition rule to be created.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[InhibitionRuleResponseV1]: + """Create Inhibition Rule + + Create an inhibition rule.\\ \\ **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + :param create_inhibition_rule_request_v1: The inhibition rule to be created. (required) + :type create_inhibition_rule_request_v1: CreateInhibitionRuleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_inhibition_rule_serialize( + create_inhibition_rule_request_v1=create_inhibition_rule_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "InhibitionRuleResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_inhibition_rule_without_preload_content( + self, + create_inhibition_rule_request_v1: Annotated[ + CreateInhibitionRuleRequestV1, Field(description="The inhibition rule to be created.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Inhibition Rule + + Create an inhibition rule.\\ \\ **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + :param create_inhibition_rule_request_v1: The inhibition rule to be created. (required) + :type create_inhibition_rule_request_v1: CreateInhibitionRuleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_inhibition_rule_serialize( + create_inhibition_rule_request_v1=create_inhibition_rule_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "InhibitionRuleResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_inhibition_rule_serialize( + self, + create_inhibition_rule_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_inhibition_rule_request_v1 is not None: + _body_params = create_inhibition_rule_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/monitor/alerts/v1/inhibition-rules", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_inhibition_rule_by_id( + self, + inhibition_rule_id: Annotated[int, Field(strict=True, ge=0, description="The inhibition rule ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Inhibition Rule + + Delete an inhibition rule by its ID.\\ \\ **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + :param inhibition_rule_id: The inhibition rule ID. (required) + :type inhibition_rule_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_inhibition_rule_by_id_serialize( + inhibition_rule_id=inhibition_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_inhibition_rule_by_id_with_http_info( + self, + inhibition_rule_id: Annotated[int, Field(strict=True, ge=0, description="The inhibition rule ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Inhibition Rule + + Delete an inhibition rule by its ID.\\ \\ **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + :param inhibition_rule_id: The inhibition rule ID. (required) + :type inhibition_rule_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_inhibition_rule_by_id_serialize( + inhibition_rule_id=inhibition_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_inhibition_rule_by_id_without_preload_content( + self, + inhibition_rule_id: Annotated[int, Field(strict=True, ge=0, description="The inhibition rule ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Inhibition Rule + + Delete an inhibition rule by its ID.\\ \\ **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + :param inhibition_rule_id: The inhibition rule ID. (required) + :type inhibition_rule_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_inhibition_rule_by_id_serialize( + inhibition_rule_id=inhibition_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_inhibition_rule_by_id_serialize( + self, + inhibition_rule_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if inhibition_rule_id is not None: + _path_params["inhibitionRuleId"] = inhibition_rule_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/monitor/alerts/v1/inhibition-rules/{inhibitionRuleId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_inhibition_rule_by_id( + self, + inhibition_rule_id: Annotated[int, Field(strict=True, ge=0, description="The inhibition rule ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> InhibitionRuleResponseV1: + """Get Inhibition Rule + + Retrieve an inhibition rule by ID.\\ \\ **Required permissions:** _inhibition-rules.read_ or _alerts.read_ + + :param inhibition_rule_id: The inhibition rule ID. (required) + :type inhibition_rule_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_inhibition_rule_by_id_serialize( + inhibition_rule_id=inhibition_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InhibitionRuleResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_inhibition_rule_by_id_with_http_info( + self, + inhibition_rule_id: Annotated[int, Field(strict=True, ge=0, description="The inhibition rule ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[InhibitionRuleResponseV1]: + """Get Inhibition Rule + + Retrieve an inhibition rule by ID.\\ \\ **Required permissions:** _inhibition-rules.read_ or _alerts.read_ + + :param inhibition_rule_id: The inhibition rule ID. (required) + :type inhibition_rule_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_inhibition_rule_by_id_serialize( + inhibition_rule_id=inhibition_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InhibitionRuleResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_inhibition_rule_by_id_without_preload_content( + self, + inhibition_rule_id: Annotated[int, Field(strict=True, ge=0, description="The inhibition rule ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Inhibition Rule + + Retrieve an inhibition rule by ID.\\ \\ **Required permissions:** _inhibition-rules.read_ or _alerts.read_ + + :param inhibition_rule_id: The inhibition rule ID. (required) + :type inhibition_rule_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_inhibition_rule_by_id_serialize( + inhibition_rule_id=inhibition_rule_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InhibitionRuleResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_inhibition_rule_by_id_serialize( + self, + inhibition_rule_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if inhibition_rule_id is not None: + _path_params["inhibitionRuleId"] = inhibition_rule_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/alerts/v1/inhibition-rules/{inhibitionRuleId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_inhibition_rules( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetInhibitionRulesPaginatedResponseV1: + """List Inhibition Rules + + Retrieve the list of inhibition rules.\\ \\ **Required permissions:** _inhibition-rules.read_ or _alerts.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_inhibition_rules_serialize( + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetInhibitionRulesPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_inhibition_rules_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetInhibitionRulesPaginatedResponseV1]: + """List Inhibition Rules + + Retrieve the list of inhibition rules.\\ \\ **Required permissions:** _inhibition-rules.read_ or _alerts.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_inhibition_rules_serialize( + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetInhibitionRulesPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_inhibition_rules_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Inhibition Rules + + Retrieve the list of inhibition rules.\\ \\ **Required permissions:** _inhibition-rules.read_ or _alerts.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_inhibition_rules_serialize( + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetInhibitionRulesPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_inhibition_rules_serialize( + self, + offset, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/alerts/v1/inhibition-rules", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_inhibition_rule( + self, + inhibition_rule_id: Annotated[int, Field(strict=True, ge=0, description="The inhibition rule ID.")], + update_inhibition_rule_request_v1: Annotated[ + UpdateInhibitionRuleRequestV1, Field(description="The new version of the inhibition rule.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> InhibitionRuleResponseV1: + """Update Inhibition Rule + + Update an inhibition rule.\\ \\ **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + :param inhibition_rule_id: The inhibition rule ID. (required) + :type inhibition_rule_id: int + :param update_inhibition_rule_request_v1: The new version of the inhibition rule. (required) + :type update_inhibition_rule_request_v1: UpdateInhibitionRuleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_inhibition_rule_serialize( + inhibition_rule_id=inhibition_rule_id, + update_inhibition_rule_request_v1=update_inhibition_rule_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InhibitionRuleResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_inhibition_rule_with_http_info( + self, + inhibition_rule_id: Annotated[int, Field(strict=True, ge=0, description="The inhibition rule ID.")], + update_inhibition_rule_request_v1: Annotated[ + UpdateInhibitionRuleRequestV1, Field(description="The new version of the inhibition rule.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[InhibitionRuleResponseV1]: + """Update Inhibition Rule + + Update an inhibition rule.\\ \\ **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + :param inhibition_rule_id: The inhibition rule ID. (required) + :type inhibition_rule_id: int + :param update_inhibition_rule_request_v1: The new version of the inhibition rule. (required) + :type update_inhibition_rule_request_v1: UpdateInhibitionRuleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_inhibition_rule_serialize( + inhibition_rule_id=inhibition_rule_id, + update_inhibition_rule_request_v1=update_inhibition_rule_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InhibitionRuleResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_inhibition_rule_without_preload_content( + self, + inhibition_rule_id: Annotated[int, Field(strict=True, ge=0, description="The inhibition rule ID.")], + update_inhibition_rule_request_v1: Annotated[ + UpdateInhibitionRuleRequestV1, Field(description="The new version of the inhibition rule.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Inhibition Rule + + Update an inhibition rule.\\ \\ **Required permissions:** _inhibition-rules.edit_ or _alerts.edit_ + + :param inhibition_rule_id: The inhibition rule ID. (required) + :type inhibition_rule_id: int + :param update_inhibition_rule_request_v1: The new version of the inhibition rule. (required) + :type update_inhibition_rule_request_v1: UpdateInhibitionRuleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_inhibition_rule_serialize( + inhibition_rule_id=inhibition_rule_id, + update_inhibition_rule_request_v1=update_inhibition_rule_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InhibitionRuleResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_inhibition_rule_serialize( + self, + inhibition_rule_id, + update_inhibition_rule_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if inhibition_rule_id is not None: + _path_params["inhibitionRuleId"] = inhibition_rule_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_inhibition_rule_request_v1 is not None: + _body_params = update_inhibition_rule_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/monitor/alerts/v1/inhibition-rules/{inhibitionRuleId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/inventory_api.py b/sysdig_client/api/inventory_api.py new file mode 100644 index 00000000..3b8ac75a --- /dev/null +++ b/sysdig_client/api/inventory_api.py @@ -0,0 +1,598 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import StrictBool +from sysdig_client.models.inventory_resource_extended import InventoryResourceExtended +from sysdig_client.models.inventory_resource_response import InventoryResourceResponse + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class InventoryApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_resource( + self, + hash: Annotated[str, Field(strict=True, max_length=64, description="resource hash")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> InventoryResourceExtended: + """Get Resource + + Retrieve an Inventory Resource by its unique hash value. + + :param hash: resource hash (required) + :type hash: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_resource_serialize( + hash=hash, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InventoryResourceExtended", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_resource_with_http_info( + self, + hash: Annotated[str, Field(strict=True, max_length=64, description="resource hash")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[InventoryResourceExtended]: + """Get Resource + + Retrieve an Inventory Resource by its unique hash value. + + :param hash: resource hash (required) + :type hash: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_resource_serialize( + hash=hash, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InventoryResourceExtended", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_resource_without_preload_content( + self, + hash: Annotated[str, Field(strict=True, max_length=64, description="resource hash")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Resource + + Retrieve an Inventory Resource by its unique hash value. + + :param hash: resource hash (required) + :type hash: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_resource_serialize( + hash=hash, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InventoryResourceExtended", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_resource_serialize( + self, + hash, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if hash is not None: + _path_params["hash"] = hash + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/inventory/v1/resources/{hash}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_resources( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field( + description='Query language expression for filtering results. Operators: - `and` and `not` logical operators - `=`, `!=` - `in` - `contains` and `startsWith` to check partial values of attributes - `exists` to check if a field exists and not empty List of supported fields: - `account` - Type: string - Example: `account in ("285211435247")` - Description: DEPRECATED. The account that will be included in the results. - `accountName` - Type: string - Example: `accountName in ("some-account-name")` - Description: The account name that will be included in the results. - `accountId` - Type: string - Example: `accountId in ("345224567")` - Description: The account id that will be included in the results. - `cluster` - Type: string - Example: `cluster in ("cluster1")` - Description: The kubernetes cluster that will be included in the results. - `externalDNS` - Type: string - Example: `externalDNS in ("ec2-102-34-15-23.compute-1.amazonaws.com")` - Description: The external DNS that will be included in the results. - `distribution` - Type: string - Example: `distribution in ("gke", "vanilla")` - Description: The kubernetes distribution that will be included in the results. - `integrationName` - Type: string - Example: `integrationName = "github-integration"` - Description: The name of the integration an IaC resource belongs to. - `labels` - Type: string - Example: `not labels exists` - Description: The resource labels that will be included in the results. - `location` - Type: string - Example: `location starts with "https://bitbucket.org/organizations-workspace/teams-repository/src"` - Description: The web address of an IaC Manifest. - `name` - Type: string - Example: `name starts with "acl"` - Description: The names that will be included in the results. - `namespace` - Type: string - Example: `namespace contains "production"` - Description: The namespace that will be included in the results. - `nodeType` - Type: string - Example: `nodeType="Worker"` - Description: The nodeType that will be included in the results. - `osName` - Type: string - Example: `osName != "linux"` - Description: The operating system that will be included in the results. - `osImage` - Type: string - Example: `osImage = "Ubuntu 18.04.6 LTS"` - Description: The operating system image that will be included in the results. - `organization` - Type: string - Example: `organization = "s-xqe92dwe61"` - Description: The organization that will be included in the results. - `platform` - Type: string - Example: `platform = "AWS"` - Description: The platform that will be included in the results. - `control.accepted` - Type: boolean - Example: `control.accepted exists` - Description: Include (or Exclude) only resources with accepted results. Supported operators: exists and not exists. - `policy` - Type: string - Example: `policy in ("CIS Docker Benchmark")` - Description: Include resources that applied the selected policies. Supported operators: in, not in, exists, not exists. - `control.severity` - Type: string - Example: `control.severity in ("High")` - Description: Include resources that have violated risks in the selected severities. Supported operators: in, not in. - `control.failed` - Type: string - Example: `control.failed in ("/etc/default/docker owned by root:root")` - Description: Include resources that have violated the selected risks. Supported operators: in, not in, exists, not exists. - `policy.failed` - Type: string - Example: `policy.failed in ("PCI DSS (Payment Card Industry Data Security Standard) v3.2.1")` - Description: Include resources that failed the selected policies. Supported operators: in, not in, exists, not exists. - `policy.passed` in ("CIS Kubernetes V1.20 Benchmark") - Type: string - Example: `policy.passed in ("CIS Kubernetes V1.20 Benchmark")` - Description: Include resources that passed the selected policies. Supported operators: in, not in, exists, not exists. - `project` - Type: string - Example: `project = "project1"` - Description: DEPRECATED. The project that will be included in the results. - `projectName` - Type: string - Example: `projectName = "project123"` - Description: The project name that will be included in the results. - `projectId` - Type: string - Example: `projectId = "1235495521"` - Description: The project id that will be included in the results. - `region` - Type: string - Example: `region in ("europe-west1")` - Description: The regions that will be included in the results. - `repository` - Type: string - Example: `repository in ("e2e-repo")` - Description: The Repository an IaC resource belongs to. - `resourceOrigin` - Type: string - Example: `resourceOrigin = "Code"` - Description: Origin of the resource. Supported values: Code, Deployed. - `type` - Type: string - Example: `type = "Account"` - Description: The resource types that will be included in the results. - `subscription` - Type: string - Example: `subscription = "Azure subscription 1"` - Description: DEPRECATED. The Azure subscription that will be included in the results. - `subscriptionName` - Type: string - Example: `subscriptionName = "subscription abc"` - Description: The Azure subscription name that will be included in the results. - `subscriptionId` - Type: string - Example: `subscriptionId = "568634664353"` - Description: The Azure subscription id that will be included in the results. - `sourceType` - Type: string - Example: `sourceType = "YAML"` - Description: The source type of an IaC resource. Supported values: YAML, Kustomize, Terraform, Helm. - `version` - Type: string - Example: `version = "1.1"` - Description: OCP Cluster versions that will be included in the results. - `zone` - Type: string - Example: `zone in ("zone1")` - Description: The zones that will be included in the results. - `category` - Type: string - Example: `category in ("Compute", "IAM")` - Description: The category that will be included in the results. Supported operators: in, not in. - `isExposed` - Type: boolean - Example: `isExposed exists` - Description - Specifies whether the resource to return is exposed to the internet. Supported operators: exists and not exists. - `validatedExposure` - Type: boolean - Example: `validatedExposure exists` - Description - Specifies whether the resource to return is exposed to the internet and could be reach by our network exposure validator. Supported operators: exists and not exists. - `arn` - Type: string - Example: `arn in ("arn:aws:ec2:eu-central-1:843232641625:instance/i-0c1dedd325e71138d")` - Description - The AWS ARN of the resource. - `resourceId` - Type: string - Example: `resourceId = "//compute.googleapis.com/projects/project1/global/routes/default-route-192ae83214caddd"` - Description - The Azure or GCP Resource Identifier of the resource. - `container.name` - Type: string - Example: `container.name in ("sysdig-container")` - Description - Filters the resource by a container. - `architecture` - Type: string - Example: `architecture = "arm64"` - Description - Image architecture. - `baseOS` - Type: string - Example: `baseOS = "debian 11.6"` - Description - Image Base OS. - `digest` - Type: string - Example: `digest = "sha256:21829f4f033ac2805aa43a412bcdf60e98eee4124d565a06dee184c97efff6091"` - Description - Image Digest. - `imageId` - Type: string - Example: `imageId in ("sha256:3768ff6176e29a35ce1354622977a1e5c013045cbc4f30754ef3459218be8ac")` - Description - Image Id. - `os` - Type: string - Example: `os = "linux"` - Description - Image OS. - `container.imageName` - Type: string - Example: `container.imageName in ("registry.k8s.io/kube-image:v1.2.4")` - Description - Image Pullstring. - `image.registry` - Type: string - Example: `image.registry = "quay.io"` - Description - Image Registry. - `image.tag` - Type: string - Example: `image.tag in ("tag1")` - Description - Image tag. - `package.inUse` - Type: boolean - Example: `package.inUse exists` - Description - Package in use filter. Supported operators: exists and not exists. - `package.info` - Type: string - Example: `package.info in ("github.com/golang/protobuf - v1.5.2")` - Description - Filters by a package using the format [packge name] - [version]. - `package.path` - Type: string - Example: `package.path in ("/app")` - Description - Filters by package path. - `package.type` - Type: string - Example: `package.type in ("Golang")` - Description - Package type. - `vuln.cvssScore` - Type: string - Example: `vuln.cvssScore >= "3"` - Description - Filter by vulnerability CVSS. Supported operators: `=` and `>=`. - `vuln.hasExploit` - Type: boolean - Example: `vuln.hasExploit exists` - Description - Filters resources by the existence of vulnerabilities with exploits. Supported operators: exists and not exists. - `vuln.hasFix` - Type: boolean - Example: `vuln.hasFix exists` - Description - Filters resources by the existence of vulnerabilities with fixes. Supported operators: exists and not exists. - `vuln.name` - Type: string - Example: `vuln.name in ("CVE-2023-0049")` - Description - Filter by vulnerability name. - `vuln.severity` - Type: string - Example: `vuln.severity in ("Critical")` - Description - Filter by vulnerability severity. Supported operators: in, not in, exists and not exists. - `machineImage` - Type: string - Example: `machineImage = "ami-0b22b359fdfabe1b5"` - Description - Filter by host machine image. **Note**: Whenever you filter for values with special characters, ensure that you encode the values. If the special characters are " or \\, use the escape character \\ and then encode the values. ' + ), + ] = None, + page_number: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=1)]], Field(description="Page number. Defaults to 1.") + ] = None, + page_size: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Page size. Defaults to 20.") + ] = None, + with_enriched_containers: Annotated[ + Optional[StrictBool], + Field( + description="If true then for kubernetes workload resources additional container information will be included." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> InventoryResourceResponse: + """List Resources + + Search for Inventory Resources based on the given filter. + + :param filter: Query language expression for filtering results. Operators: - `and` and `not` logical operators - `=`, `!=` - `in` - `contains` and `startsWith` to check partial values of attributes - `exists` to check if a field exists and not empty List of supported fields: - `account` - Type: string - Example: `account in (\"285211435247\")` - Description: DEPRECATED. The account that will be included in the results. - `accountName` - Type: string - Example: `accountName in (\"some-account-name\")` - Description: The account name that will be included in the results. - `accountId` - Type: string - Example: `accountId in (\"345224567\")` - Description: The account id that will be included in the results. - `cluster` - Type: string - Example: `cluster in (\"cluster1\")` - Description: The kubernetes cluster that will be included in the results. - `externalDNS` - Type: string - Example: `externalDNS in (\"ec2-102-34-15-23.compute-1.amazonaws.com\")` - Description: The external DNS that will be included in the results. - `distribution` - Type: string - Example: `distribution in (\"gke\", \"vanilla\")` - Description: The kubernetes distribution that will be included in the results. - `integrationName` - Type: string - Example: `integrationName = \"github-integration\"` - Description: The name of the integration an IaC resource belongs to. - `labels` - Type: string - Example: `not labels exists` - Description: The resource labels that will be included in the results. - `location` - Type: string - Example: `location starts with \"https://bitbucket.org/organizations-workspace/teams-repository/src\"` - Description: The web address of an IaC Manifest. - `name` - Type: string - Example: `name starts with \"acl\"` - Description: The names that will be included in the results. - `namespace` - Type: string - Example: `namespace contains \"production\"` - Description: The namespace that will be included in the results. - `nodeType` - Type: string - Example: `nodeType=\"Worker\"` - Description: The nodeType that will be included in the results. - `osName` - Type: string - Example: `osName != \"linux\"` - Description: The operating system that will be included in the results. - `osImage` - Type: string - Example: `osImage = \"Ubuntu 18.04.6 LTS\"` - Description: The operating system image that will be included in the results. - `organization` - Type: string - Example: `organization = \"s-xqe92dwe61\"` - Description: The organization that will be included in the results. - `platform` - Type: string - Example: `platform = \"AWS\"` - Description: The platform that will be included in the results. - `control.accepted` - Type: boolean - Example: `control.accepted exists` - Description: Include (or Exclude) only resources with accepted results. Supported operators: exists and not exists. - `policy` - Type: string - Example: `policy in (\"CIS Docker Benchmark\")` - Description: Include resources that applied the selected policies. Supported operators: in, not in, exists, not exists. - `control.severity` - Type: string - Example: `control.severity in (\"High\")` - Description: Include resources that have violated risks in the selected severities. Supported operators: in, not in. - `control.failed` - Type: string - Example: `control.failed in (\"/etc/default/docker owned by root:root\")` - Description: Include resources that have violated the selected risks. Supported operators: in, not in, exists, not exists. - `policy.failed` - Type: string - Example: `policy.failed in (\"PCI DSS (Payment Card Industry Data Security Standard) v3.2.1\")` - Description: Include resources that failed the selected policies. Supported operators: in, not in, exists, not exists. - `policy.passed` in (\"CIS Kubernetes V1.20 Benchmark\") - Type: string - Example: `policy.passed in (\"CIS Kubernetes V1.20 Benchmark\")` - Description: Include resources that passed the selected policies. Supported operators: in, not in, exists, not exists. - `project` - Type: string - Example: `project = \"project1\"` - Description: DEPRECATED. The project that will be included in the results. - `projectName` - Type: string - Example: `projectName = \"project123\"` - Description: The project name that will be included in the results. - `projectId` - Type: string - Example: `projectId = \"1235495521\"` - Description: The project id that will be included in the results. - `region` - Type: string - Example: `region in (\"europe-west1\")` - Description: The regions that will be included in the results. - `repository` - Type: string - Example: `repository in (\"e2e-repo\")` - Description: The Repository an IaC resource belongs to. - `resourceOrigin` - Type: string - Example: `resourceOrigin = \"Code\"` - Description: Origin of the resource. Supported values: Code, Deployed. - `type` - Type: string - Example: `type = \"Account\"` - Description: The resource types that will be included in the results. - `subscription` - Type: string - Example: `subscription = \"Azure subscription 1\"` - Description: DEPRECATED. The Azure subscription that will be included in the results. - `subscriptionName` - Type: string - Example: `subscriptionName = \"subscription abc\"` - Description: The Azure subscription name that will be included in the results. - `subscriptionId` - Type: string - Example: `subscriptionId = \"568634664353\"` - Description: The Azure subscription id that will be included in the results. - `sourceType` - Type: string - Example: `sourceType = \"YAML\"` - Description: The source type of an IaC resource. Supported values: YAML, Kustomize, Terraform, Helm. - `version` - Type: string - Example: `version = \"1.1\"` - Description: OCP Cluster versions that will be included in the results. - `zone` - Type: string - Example: `zone in (\"zone1\")` - Description: The zones that will be included in the results. - `category` - Type: string - Example: `category in (\"Compute\", \"IAM\")` - Description: The category that will be included in the results. Supported operators: in, not in. - `isExposed` - Type: boolean - Example: `isExposed exists` - Description - Specifies whether the resource to return is exposed to the internet. Supported operators: exists and not exists. - `validatedExposure` - Type: boolean - Example: `validatedExposure exists` - Description - Specifies whether the resource to return is exposed to the internet and could be reach by our network exposure validator. Supported operators: exists and not exists. - `arn` - Type: string - Example: `arn in (\"arn:aws:ec2:eu-central-1:843232641625:instance/i-0c1dedd325e71138d\")` - Description - The AWS ARN of the resource. - `resourceId` - Type: string - Example: `resourceId = \"//compute.googleapis.com/projects/project1/global/routes/default-route-192ae83214caddd\"` - Description - The Azure or GCP Resource Identifier of the resource. - `container.name` - Type: string - Example: `container.name in (\"sysdig-container\")` - Description - Filters the resource by a container. - `architecture` - Type: string - Example: `architecture = \"arm64\"` - Description - Image architecture. - `baseOS` - Type: string - Example: `baseOS = \"debian 11.6\"` - Description - Image Base OS. - `digest` - Type: string - Example: `digest = \"sha256:21829f4f033ac2805aa43a412bcdf60e98eee4124d565a06dee184c97efff6091\"` - Description - Image Digest. - `imageId` - Type: string - Example: `imageId in (\"sha256:3768ff6176e29a35ce1354622977a1e5c013045cbc4f30754ef3459218be8ac\")` - Description - Image Id. - `os` - Type: string - Example: `os = \"linux\"` - Description - Image OS. - `container.imageName` - Type: string - Example: `container.imageName in (\"registry.k8s.io/kube-image:v1.2.4\")` - Description - Image Pullstring. - `image.registry` - Type: string - Example: `image.registry = \"quay.io\"` - Description - Image Registry. - `image.tag` - Type: string - Example: `image.tag in (\"tag1\")` - Description - Image tag. - `package.inUse` - Type: boolean - Example: `package.inUse exists` - Description - Package in use filter. Supported operators: exists and not exists. - `package.info` - Type: string - Example: `package.info in (\"github.com/golang/protobuf - v1.5.2\")` - Description - Filters by a package using the format [packge name] - [version]. - `package.path` - Type: string - Example: `package.path in (\"/app\")` - Description - Filters by package path. - `package.type` - Type: string - Example: `package.type in (\"Golang\")` - Description - Package type. - `vuln.cvssScore` - Type: string - Example: `vuln.cvssScore >= \"3\"` - Description - Filter by vulnerability CVSS. Supported operators: `=` and `>=`. - `vuln.hasExploit` - Type: boolean - Example: `vuln.hasExploit exists` - Description - Filters resources by the existence of vulnerabilities with exploits. Supported operators: exists and not exists. - `vuln.hasFix` - Type: boolean - Example: `vuln.hasFix exists` - Description - Filters resources by the existence of vulnerabilities with fixes. Supported operators: exists and not exists. - `vuln.name` - Type: string - Example: `vuln.name in (\"CVE-2023-0049\")` - Description - Filter by vulnerability name. - `vuln.severity` - Type: string - Example: `vuln.severity in (\"Critical\")` - Description - Filter by vulnerability severity. Supported operators: in, not in, exists and not exists. - `machineImage` - Type: string - Example: `machineImage = \"ami-0b22b359fdfabe1b5\"` - Description - Filter by host machine image. **Note**: Whenever you filter for values with special characters, ensure that you encode the values. If the special characters are \" or \\, use the escape character \\ and then encode the values. + :type filter: str + :param page_number: Page number. Defaults to 1. + :type page_number: int + :param page_size: Page size. Defaults to 20. + :type page_size: int + :param with_enriched_containers: If true then for kubernetes workload resources additional container information will be included. + :type with_enriched_containers: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_resources_serialize( + filter=filter, + page_number=page_number, + page_size=page_size, + with_enriched_containers=with_enriched_containers, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InventoryResourceResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_resources_with_http_info( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field( + description='Query language expression for filtering results. Operators: - `and` and `not` logical operators - `=`, `!=` - `in` - `contains` and `startsWith` to check partial values of attributes - `exists` to check if a field exists and not empty List of supported fields: - `account` - Type: string - Example: `account in ("285211435247")` - Description: DEPRECATED. The account that will be included in the results. - `accountName` - Type: string - Example: `accountName in ("some-account-name")` - Description: The account name that will be included in the results. - `accountId` - Type: string - Example: `accountId in ("345224567")` - Description: The account id that will be included in the results. - `cluster` - Type: string - Example: `cluster in ("cluster1")` - Description: The kubernetes cluster that will be included in the results. - `externalDNS` - Type: string - Example: `externalDNS in ("ec2-102-34-15-23.compute-1.amazonaws.com")` - Description: The external DNS that will be included in the results. - `distribution` - Type: string - Example: `distribution in ("gke", "vanilla")` - Description: The kubernetes distribution that will be included in the results. - `integrationName` - Type: string - Example: `integrationName = "github-integration"` - Description: The name of the integration an IaC resource belongs to. - `labels` - Type: string - Example: `not labels exists` - Description: The resource labels that will be included in the results. - `location` - Type: string - Example: `location starts with "https://bitbucket.org/organizations-workspace/teams-repository/src"` - Description: The web address of an IaC Manifest. - `name` - Type: string - Example: `name starts with "acl"` - Description: The names that will be included in the results. - `namespace` - Type: string - Example: `namespace contains "production"` - Description: The namespace that will be included in the results. - `nodeType` - Type: string - Example: `nodeType="Worker"` - Description: The nodeType that will be included in the results. - `osName` - Type: string - Example: `osName != "linux"` - Description: The operating system that will be included in the results. - `osImage` - Type: string - Example: `osImage = "Ubuntu 18.04.6 LTS"` - Description: The operating system image that will be included in the results. - `organization` - Type: string - Example: `organization = "s-xqe92dwe61"` - Description: The organization that will be included in the results. - `platform` - Type: string - Example: `platform = "AWS"` - Description: The platform that will be included in the results. - `control.accepted` - Type: boolean - Example: `control.accepted exists` - Description: Include (or Exclude) only resources with accepted results. Supported operators: exists and not exists. - `policy` - Type: string - Example: `policy in ("CIS Docker Benchmark")` - Description: Include resources that applied the selected policies. Supported operators: in, not in, exists, not exists. - `control.severity` - Type: string - Example: `control.severity in ("High")` - Description: Include resources that have violated risks in the selected severities. Supported operators: in, not in. - `control.failed` - Type: string - Example: `control.failed in ("/etc/default/docker owned by root:root")` - Description: Include resources that have violated the selected risks. Supported operators: in, not in, exists, not exists. - `policy.failed` - Type: string - Example: `policy.failed in ("PCI DSS (Payment Card Industry Data Security Standard) v3.2.1")` - Description: Include resources that failed the selected policies. Supported operators: in, not in, exists, not exists. - `policy.passed` in ("CIS Kubernetes V1.20 Benchmark") - Type: string - Example: `policy.passed in ("CIS Kubernetes V1.20 Benchmark")` - Description: Include resources that passed the selected policies. Supported operators: in, not in, exists, not exists. - `project` - Type: string - Example: `project = "project1"` - Description: DEPRECATED. The project that will be included in the results. - `projectName` - Type: string - Example: `projectName = "project123"` - Description: The project name that will be included in the results. - `projectId` - Type: string - Example: `projectId = "1235495521"` - Description: The project id that will be included in the results. - `region` - Type: string - Example: `region in ("europe-west1")` - Description: The regions that will be included in the results. - `repository` - Type: string - Example: `repository in ("e2e-repo")` - Description: The Repository an IaC resource belongs to. - `resourceOrigin` - Type: string - Example: `resourceOrigin = "Code"` - Description: Origin of the resource. Supported values: Code, Deployed. - `type` - Type: string - Example: `type = "Account"` - Description: The resource types that will be included in the results. - `subscription` - Type: string - Example: `subscription = "Azure subscription 1"` - Description: DEPRECATED. The Azure subscription that will be included in the results. - `subscriptionName` - Type: string - Example: `subscriptionName = "subscription abc"` - Description: The Azure subscription name that will be included in the results. - `subscriptionId` - Type: string - Example: `subscriptionId = "568634664353"` - Description: The Azure subscription id that will be included in the results. - `sourceType` - Type: string - Example: `sourceType = "YAML"` - Description: The source type of an IaC resource. Supported values: YAML, Kustomize, Terraform, Helm. - `version` - Type: string - Example: `version = "1.1"` - Description: OCP Cluster versions that will be included in the results. - `zone` - Type: string - Example: `zone in ("zone1")` - Description: The zones that will be included in the results. - `category` - Type: string - Example: `category in ("Compute", "IAM")` - Description: The category that will be included in the results. Supported operators: in, not in. - `isExposed` - Type: boolean - Example: `isExposed exists` - Description - Specifies whether the resource to return is exposed to the internet. Supported operators: exists and not exists. - `validatedExposure` - Type: boolean - Example: `validatedExposure exists` - Description - Specifies whether the resource to return is exposed to the internet and could be reach by our network exposure validator. Supported operators: exists and not exists. - `arn` - Type: string - Example: `arn in ("arn:aws:ec2:eu-central-1:843232641625:instance/i-0c1dedd325e71138d")` - Description - The AWS ARN of the resource. - `resourceId` - Type: string - Example: `resourceId = "//compute.googleapis.com/projects/project1/global/routes/default-route-192ae83214caddd"` - Description - The Azure or GCP Resource Identifier of the resource. - `container.name` - Type: string - Example: `container.name in ("sysdig-container")` - Description - Filters the resource by a container. - `architecture` - Type: string - Example: `architecture = "arm64"` - Description - Image architecture. - `baseOS` - Type: string - Example: `baseOS = "debian 11.6"` - Description - Image Base OS. - `digest` - Type: string - Example: `digest = "sha256:21829f4f033ac2805aa43a412bcdf60e98eee4124d565a06dee184c97efff6091"` - Description - Image Digest. - `imageId` - Type: string - Example: `imageId in ("sha256:3768ff6176e29a35ce1354622977a1e5c013045cbc4f30754ef3459218be8ac")` - Description - Image Id. - `os` - Type: string - Example: `os = "linux"` - Description - Image OS. - `container.imageName` - Type: string - Example: `container.imageName in ("registry.k8s.io/kube-image:v1.2.4")` - Description - Image Pullstring. - `image.registry` - Type: string - Example: `image.registry = "quay.io"` - Description - Image Registry. - `image.tag` - Type: string - Example: `image.tag in ("tag1")` - Description - Image tag. - `package.inUse` - Type: boolean - Example: `package.inUse exists` - Description - Package in use filter. Supported operators: exists and not exists. - `package.info` - Type: string - Example: `package.info in ("github.com/golang/protobuf - v1.5.2")` - Description - Filters by a package using the format [packge name] - [version]. - `package.path` - Type: string - Example: `package.path in ("/app")` - Description - Filters by package path. - `package.type` - Type: string - Example: `package.type in ("Golang")` - Description - Package type. - `vuln.cvssScore` - Type: string - Example: `vuln.cvssScore >= "3"` - Description - Filter by vulnerability CVSS. Supported operators: `=` and `>=`. - `vuln.hasExploit` - Type: boolean - Example: `vuln.hasExploit exists` - Description - Filters resources by the existence of vulnerabilities with exploits. Supported operators: exists and not exists. - `vuln.hasFix` - Type: boolean - Example: `vuln.hasFix exists` - Description - Filters resources by the existence of vulnerabilities with fixes. Supported operators: exists and not exists. - `vuln.name` - Type: string - Example: `vuln.name in ("CVE-2023-0049")` - Description - Filter by vulnerability name. - `vuln.severity` - Type: string - Example: `vuln.severity in ("Critical")` - Description - Filter by vulnerability severity. Supported operators: in, not in, exists and not exists. - `machineImage` - Type: string - Example: `machineImage = "ami-0b22b359fdfabe1b5"` - Description - Filter by host machine image. **Note**: Whenever you filter for values with special characters, ensure that you encode the values. If the special characters are " or \\, use the escape character \\ and then encode the values. ' + ), + ] = None, + page_number: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=1)]], Field(description="Page number. Defaults to 1.") + ] = None, + page_size: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Page size. Defaults to 20.") + ] = None, + with_enriched_containers: Annotated[ + Optional[StrictBool], + Field( + description="If true then for kubernetes workload resources additional container information will be included." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[InventoryResourceResponse]: + """List Resources + + Search for Inventory Resources based on the given filter. + + :param filter: Query language expression for filtering results. Operators: - `and` and `not` logical operators - `=`, `!=` - `in` - `contains` and `startsWith` to check partial values of attributes - `exists` to check if a field exists and not empty List of supported fields: - `account` - Type: string - Example: `account in (\"285211435247\")` - Description: DEPRECATED. The account that will be included in the results. - `accountName` - Type: string - Example: `accountName in (\"some-account-name\")` - Description: The account name that will be included in the results. - `accountId` - Type: string - Example: `accountId in (\"345224567\")` - Description: The account id that will be included in the results. - `cluster` - Type: string - Example: `cluster in (\"cluster1\")` - Description: The kubernetes cluster that will be included in the results. - `externalDNS` - Type: string - Example: `externalDNS in (\"ec2-102-34-15-23.compute-1.amazonaws.com\")` - Description: The external DNS that will be included in the results. - `distribution` - Type: string - Example: `distribution in (\"gke\", \"vanilla\")` - Description: The kubernetes distribution that will be included in the results. - `integrationName` - Type: string - Example: `integrationName = \"github-integration\"` - Description: The name of the integration an IaC resource belongs to. - `labels` - Type: string - Example: `not labels exists` - Description: The resource labels that will be included in the results. - `location` - Type: string - Example: `location starts with \"https://bitbucket.org/organizations-workspace/teams-repository/src\"` - Description: The web address of an IaC Manifest. - `name` - Type: string - Example: `name starts with \"acl\"` - Description: The names that will be included in the results. - `namespace` - Type: string - Example: `namespace contains \"production\"` - Description: The namespace that will be included in the results. - `nodeType` - Type: string - Example: `nodeType=\"Worker\"` - Description: The nodeType that will be included in the results. - `osName` - Type: string - Example: `osName != \"linux\"` - Description: The operating system that will be included in the results. - `osImage` - Type: string - Example: `osImage = \"Ubuntu 18.04.6 LTS\"` - Description: The operating system image that will be included in the results. - `organization` - Type: string - Example: `organization = \"s-xqe92dwe61\"` - Description: The organization that will be included in the results. - `platform` - Type: string - Example: `platform = \"AWS\"` - Description: The platform that will be included in the results. - `control.accepted` - Type: boolean - Example: `control.accepted exists` - Description: Include (or Exclude) only resources with accepted results. Supported operators: exists and not exists. - `policy` - Type: string - Example: `policy in (\"CIS Docker Benchmark\")` - Description: Include resources that applied the selected policies. Supported operators: in, not in, exists, not exists. - `control.severity` - Type: string - Example: `control.severity in (\"High\")` - Description: Include resources that have violated risks in the selected severities. Supported operators: in, not in. - `control.failed` - Type: string - Example: `control.failed in (\"/etc/default/docker owned by root:root\")` - Description: Include resources that have violated the selected risks. Supported operators: in, not in, exists, not exists. - `policy.failed` - Type: string - Example: `policy.failed in (\"PCI DSS (Payment Card Industry Data Security Standard) v3.2.1\")` - Description: Include resources that failed the selected policies. Supported operators: in, not in, exists, not exists. - `policy.passed` in (\"CIS Kubernetes V1.20 Benchmark\") - Type: string - Example: `policy.passed in (\"CIS Kubernetes V1.20 Benchmark\")` - Description: Include resources that passed the selected policies. Supported operators: in, not in, exists, not exists. - `project` - Type: string - Example: `project = \"project1\"` - Description: DEPRECATED. The project that will be included in the results. - `projectName` - Type: string - Example: `projectName = \"project123\"` - Description: The project name that will be included in the results. - `projectId` - Type: string - Example: `projectId = \"1235495521\"` - Description: The project id that will be included in the results. - `region` - Type: string - Example: `region in (\"europe-west1\")` - Description: The regions that will be included in the results. - `repository` - Type: string - Example: `repository in (\"e2e-repo\")` - Description: The Repository an IaC resource belongs to. - `resourceOrigin` - Type: string - Example: `resourceOrigin = \"Code\"` - Description: Origin of the resource. Supported values: Code, Deployed. - `type` - Type: string - Example: `type = \"Account\"` - Description: The resource types that will be included in the results. - `subscription` - Type: string - Example: `subscription = \"Azure subscription 1\"` - Description: DEPRECATED. The Azure subscription that will be included in the results. - `subscriptionName` - Type: string - Example: `subscriptionName = \"subscription abc\"` - Description: The Azure subscription name that will be included in the results. - `subscriptionId` - Type: string - Example: `subscriptionId = \"568634664353\"` - Description: The Azure subscription id that will be included in the results. - `sourceType` - Type: string - Example: `sourceType = \"YAML\"` - Description: The source type of an IaC resource. Supported values: YAML, Kustomize, Terraform, Helm. - `version` - Type: string - Example: `version = \"1.1\"` - Description: OCP Cluster versions that will be included in the results. - `zone` - Type: string - Example: `zone in (\"zone1\")` - Description: The zones that will be included in the results. - `category` - Type: string - Example: `category in (\"Compute\", \"IAM\")` - Description: The category that will be included in the results. Supported operators: in, not in. - `isExposed` - Type: boolean - Example: `isExposed exists` - Description - Specifies whether the resource to return is exposed to the internet. Supported operators: exists and not exists. - `validatedExposure` - Type: boolean - Example: `validatedExposure exists` - Description - Specifies whether the resource to return is exposed to the internet and could be reach by our network exposure validator. Supported operators: exists and not exists. - `arn` - Type: string - Example: `arn in (\"arn:aws:ec2:eu-central-1:843232641625:instance/i-0c1dedd325e71138d\")` - Description - The AWS ARN of the resource. - `resourceId` - Type: string - Example: `resourceId = \"//compute.googleapis.com/projects/project1/global/routes/default-route-192ae83214caddd\"` - Description - The Azure or GCP Resource Identifier of the resource. - `container.name` - Type: string - Example: `container.name in (\"sysdig-container\")` - Description - Filters the resource by a container. - `architecture` - Type: string - Example: `architecture = \"arm64\"` - Description - Image architecture. - `baseOS` - Type: string - Example: `baseOS = \"debian 11.6\"` - Description - Image Base OS. - `digest` - Type: string - Example: `digest = \"sha256:21829f4f033ac2805aa43a412bcdf60e98eee4124d565a06dee184c97efff6091\"` - Description - Image Digest. - `imageId` - Type: string - Example: `imageId in (\"sha256:3768ff6176e29a35ce1354622977a1e5c013045cbc4f30754ef3459218be8ac\")` - Description - Image Id. - `os` - Type: string - Example: `os = \"linux\"` - Description - Image OS. - `container.imageName` - Type: string - Example: `container.imageName in (\"registry.k8s.io/kube-image:v1.2.4\")` - Description - Image Pullstring. - `image.registry` - Type: string - Example: `image.registry = \"quay.io\"` - Description - Image Registry. - `image.tag` - Type: string - Example: `image.tag in (\"tag1\")` - Description - Image tag. - `package.inUse` - Type: boolean - Example: `package.inUse exists` - Description - Package in use filter. Supported operators: exists and not exists. - `package.info` - Type: string - Example: `package.info in (\"github.com/golang/protobuf - v1.5.2\")` - Description - Filters by a package using the format [packge name] - [version]. - `package.path` - Type: string - Example: `package.path in (\"/app\")` - Description - Filters by package path. - `package.type` - Type: string - Example: `package.type in (\"Golang\")` - Description - Package type. - `vuln.cvssScore` - Type: string - Example: `vuln.cvssScore >= \"3\"` - Description - Filter by vulnerability CVSS. Supported operators: `=` and `>=`. - `vuln.hasExploit` - Type: boolean - Example: `vuln.hasExploit exists` - Description - Filters resources by the existence of vulnerabilities with exploits. Supported operators: exists and not exists. - `vuln.hasFix` - Type: boolean - Example: `vuln.hasFix exists` - Description - Filters resources by the existence of vulnerabilities with fixes. Supported operators: exists and not exists. - `vuln.name` - Type: string - Example: `vuln.name in (\"CVE-2023-0049\")` - Description - Filter by vulnerability name. - `vuln.severity` - Type: string - Example: `vuln.severity in (\"Critical\")` - Description - Filter by vulnerability severity. Supported operators: in, not in, exists and not exists. - `machineImage` - Type: string - Example: `machineImage = \"ami-0b22b359fdfabe1b5\"` - Description - Filter by host machine image. **Note**: Whenever you filter for values with special characters, ensure that you encode the values. If the special characters are \" or \\, use the escape character \\ and then encode the values. + :type filter: str + :param page_number: Page number. Defaults to 1. + :type page_number: int + :param page_size: Page size. Defaults to 20. + :type page_size: int + :param with_enriched_containers: If true then for kubernetes workload resources additional container information will be included. + :type with_enriched_containers: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_resources_serialize( + filter=filter, + page_number=page_number, + page_size=page_size, + with_enriched_containers=with_enriched_containers, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InventoryResourceResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_resources_without_preload_content( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field( + description='Query language expression for filtering results. Operators: - `and` and `not` logical operators - `=`, `!=` - `in` - `contains` and `startsWith` to check partial values of attributes - `exists` to check if a field exists and not empty List of supported fields: - `account` - Type: string - Example: `account in ("285211435247")` - Description: DEPRECATED. The account that will be included in the results. - `accountName` - Type: string - Example: `accountName in ("some-account-name")` - Description: The account name that will be included in the results. - `accountId` - Type: string - Example: `accountId in ("345224567")` - Description: The account id that will be included in the results. - `cluster` - Type: string - Example: `cluster in ("cluster1")` - Description: The kubernetes cluster that will be included in the results. - `externalDNS` - Type: string - Example: `externalDNS in ("ec2-102-34-15-23.compute-1.amazonaws.com")` - Description: The external DNS that will be included in the results. - `distribution` - Type: string - Example: `distribution in ("gke", "vanilla")` - Description: The kubernetes distribution that will be included in the results. - `integrationName` - Type: string - Example: `integrationName = "github-integration"` - Description: The name of the integration an IaC resource belongs to. - `labels` - Type: string - Example: `not labels exists` - Description: The resource labels that will be included in the results. - `location` - Type: string - Example: `location starts with "https://bitbucket.org/organizations-workspace/teams-repository/src"` - Description: The web address of an IaC Manifest. - `name` - Type: string - Example: `name starts with "acl"` - Description: The names that will be included in the results. - `namespace` - Type: string - Example: `namespace contains "production"` - Description: The namespace that will be included in the results. - `nodeType` - Type: string - Example: `nodeType="Worker"` - Description: The nodeType that will be included in the results. - `osName` - Type: string - Example: `osName != "linux"` - Description: The operating system that will be included in the results. - `osImage` - Type: string - Example: `osImage = "Ubuntu 18.04.6 LTS"` - Description: The operating system image that will be included in the results. - `organization` - Type: string - Example: `organization = "s-xqe92dwe61"` - Description: The organization that will be included in the results. - `platform` - Type: string - Example: `platform = "AWS"` - Description: The platform that will be included in the results. - `control.accepted` - Type: boolean - Example: `control.accepted exists` - Description: Include (or Exclude) only resources with accepted results. Supported operators: exists and not exists. - `policy` - Type: string - Example: `policy in ("CIS Docker Benchmark")` - Description: Include resources that applied the selected policies. Supported operators: in, not in, exists, not exists. - `control.severity` - Type: string - Example: `control.severity in ("High")` - Description: Include resources that have violated risks in the selected severities. Supported operators: in, not in. - `control.failed` - Type: string - Example: `control.failed in ("/etc/default/docker owned by root:root")` - Description: Include resources that have violated the selected risks. Supported operators: in, not in, exists, not exists. - `policy.failed` - Type: string - Example: `policy.failed in ("PCI DSS (Payment Card Industry Data Security Standard) v3.2.1")` - Description: Include resources that failed the selected policies. Supported operators: in, not in, exists, not exists. - `policy.passed` in ("CIS Kubernetes V1.20 Benchmark") - Type: string - Example: `policy.passed in ("CIS Kubernetes V1.20 Benchmark")` - Description: Include resources that passed the selected policies. Supported operators: in, not in, exists, not exists. - `project` - Type: string - Example: `project = "project1"` - Description: DEPRECATED. The project that will be included in the results. - `projectName` - Type: string - Example: `projectName = "project123"` - Description: The project name that will be included in the results. - `projectId` - Type: string - Example: `projectId = "1235495521"` - Description: The project id that will be included in the results. - `region` - Type: string - Example: `region in ("europe-west1")` - Description: The regions that will be included in the results. - `repository` - Type: string - Example: `repository in ("e2e-repo")` - Description: The Repository an IaC resource belongs to. - `resourceOrigin` - Type: string - Example: `resourceOrigin = "Code"` - Description: Origin of the resource. Supported values: Code, Deployed. - `type` - Type: string - Example: `type = "Account"` - Description: The resource types that will be included in the results. - `subscription` - Type: string - Example: `subscription = "Azure subscription 1"` - Description: DEPRECATED. The Azure subscription that will be included in the results. - `subscriptionName` - Type: string - Example: `subscriptionName = "subscription abc"` - Description: The Azure subscription name that will be included in the results. - `subscriptionId` - Type: string - Example: `subscriptionId = "568634664353"` - Description: The Azure subscription id that will be included in the results. - `sourceType` - Type: string - Example: `sourceType = "YAML"` - Description: The source type of an IaC resource. Supported values: YAML, Kustomize, Terraform, Helm. - `version` - Type: string - Example: `version = "1.1"` - Description: OCP Cluster versions that will be included in the results. - `zone` - Type: string - Example: `zone in ("zone1")` - Description: The zones that will be included in the results. - `category` - Type: string - Example: `category in ("Compute", "IAM")` - Description: The category that will be included in the results. Supported operators: in, not in. - `isExposed` - Type: boolean - Example: `isExposed exists` - Description - Specifies whether the resource to return is exposed to the internet. Supported operators: exists and not exists. - `validatedExposure` - Type: boolean - Example: `validatedExposure exists` - Description - Specifies whether the resource to return is exposed to the internet and could be reach by our network exposure validator. Supported operators: exists and not exists. - `arn` - Type: string - Example: `arn in ("arn:aws:ec2:eu-central-1:843232641625:instance/i-0c1dedd325e71138d")` - Description - The AWS ARN of the resource. - `resourceId` - Type: string - Example: `resourceId = "//compute.googleapis.com/projects/project1/global/routes/default-route-192ae83214caddd"` - Description - The Azure or GCP Resource Identifier of the resource. - `container.name` - Type: string - Example: `container.name in ("sysdig-container")` - Description - Filters the resource by a container. - `architecture` - Type: string - Example: `architecture = "arm64"` - Description - Image architecture. - `baseOS` - Type: string - Example: `baseOS = "debian 11.6"` - Description - Image Base OS. - `digest` - Type: string - Example: `digest = "sha256:21829f4f033ac2805aa43a412bcdf60e98eee4124d565a06dee184c97efff6091"` - Description - Image Digest. - `imageId` - Type: string - Example: `imageId in ("sha256:3768ff6176e29a35ce1354622977a1e5c013045cbc4f30754ef3459218be8ac")` - Description - Image Id. - `os` - Type: string - Example: `os = "linux"` - Description - Image OS. - `container.imageName` - Type: string - Example: `container.imageName in ("registry.k8s.io/kube-image:v1.2.4")` - Description - Image Pullstring. - `image.registry` - Type: string - Example: `image.registry = "quay.io"` - Description - Image Registry. - `image.tag` - Type: string - Example: `image.tag in ("tag1")` - Description - Image tag. - `package.inUse` - Type: boolean - Example: `package.inUse exists` - Description - Package in use filter. Supported operators: exists and not exists. - `package.info` - Type: string - Example: `package.info in ("github.com/golang/protobuf - v1.5.2")` - Description - Filters by a package using the format [packge name] - [version]. - `package.path` - Type: string - Example: `package.path in ("/app")` - Description - Filters by package path. - `package.type` - Type: string - Example: `package.type in ("Golang")` - Description - Package type. - `vuln.cvssScore` - Type: string - Example: `vuln.cvssScore >= "3"` - Description - Filter by vulnerability CVSS. Supported operators: `=` and `>=`. - `vuln.hasExploit` - Type: boolean - Example: `vuln.hasExploit exists` - Description - Filters resources by the existence of vulnerabilities with exploits. Supported operators: exists and not exists. - `vuln.hasFix` - Type: boolean - Example: `vuln.hasFix exists` - Description - Filters resources by the existence of vulnerabilities with fixes. Supported operators: exists and not exists. - `vuln.name` - Type: string - Example: `vuln.name in ("CVE-2023-0049")` - Description - Filter by vulnerability name. - `vuln.severity` - Type: string - Example: `vuln.severity in ("Critical")` - Description - Filter by vulnerability severity. Supported operators: in, not in, exists and not exists. - `machineImage` - Type: string - Example: `machineImage = "ami-0b22b359fdfabe1b5"` - Description - Filter by host machine image. **Note**: Whenever you filter for values with special characters, ensure that you encode the values. If the special characters are " or \\, use the escape character \\ and then encode the values. ' + ), + ] = None, + page_number: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=1)]], Field(description="Page number. Defaults to 1.") + ] = None, + page_size: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Page size. Defaults to 20.") + ] = None, + with_enriched_containers: Annotated[ + Optional[StrictBool], + Field( + description="If true then for kubernetes workload resources additional container information will be included." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Resources + + Search for Inventory Resources based on the given filter. + + :param filter: Query language expression for filtering results. Operators: - `and` and `not` logical operators - `=`, `!=` - `in` - `contains` and `startsWith` to check partial values of attributes - `exists` to check if a field exists and not empty List of supported fields: - `account` - Type: string - Example: `account in (\"285211435247\")` - Description: DEPRECATED. The account that will be included in the results. - `accountName` - Type: string - Example: `accountName in (\"some-account-name\")` - Description: The account name that will be included in the results. - `accountId` - Type: string - Example: `accountId in (\"345224567\")` - Description: The account id that will be included in the results. - `cluster` - Type: string - Example: `cluster in (\"cluster1\")` - Description: The kubernetes cluster that will be included in the results. - `externalDNS` - Type: string - Example: `externalDNS in (\"ec2-102-34-15-23.compute-1.amazonaws.com\")` - Description: The external DNS that will be included in the results. - `distribution` - Type: string - Example: `distribution in (\"gke\", \"vanilla\")` - Description: The kubernetes distribution that will be included in the results. - `integrationName` - Type: string - Example: `integrationName = \"github-integration\"` - Description: The name of the integration an IaC resource belongs to. - `labels` - Type: string - Example: `not labels exists` - Description: The resource labels that will be included in the results. - `location` - Type: string - Example: `location starts with \"https://bitbucket.org/organizations-workspace/teams-repository/src\"` - Description: The web address of an IaC Manifest. - `name` - Type: string - Example: `name starts with \"acl\"` - Description: The names that will be included in the results. - `namespace` - Type: string - Example: `namespace contains \"production\"` - Description: The namespace that will be included in the results. - `nodeType` - Type: string - Example: `nodeType=\"Worker\"` - Description: The nodeType that will be included in the results. - `osName` - Type: string - Example: `osName != \"linux\"` - Description: The operating system that will be included in the results. - `osImage` - Type: string - Example: `osImage = \"Ubuntu 18.04.6 LTS\"` - Description: The operating system image that will be included in the results. - `organization` - Type: string - Example: `organization = \"s-xqe92dwe61\"` - Description: The organization that will be included in the results. - `platform` - Type: string - Example: `platform = \"AWS\"` - Description: The platform that will be included in the results. - `control.accepted` - Type: boolean - Example: `control.accepted exists` - Description: Include (or Exclude) only resources with accepted results. Supported operators: exists and not exists. - `policy` - Type: string - Example: `policy in (\"CIS Docker Benchmark\")` - Description: Include resources that applied the selected policies. Supported operators: in, not in, exists, not exists. - `control.severity` - Type: string - Example: `control.severity in (\"High\")` - Description: Include resources that have violated risks in the selected severities. Supported operators: in, not in. - `control.failed` - Type: string - Example: `control.failed in (\"/etc/default/docker owned by root:root\")` - Description: Include resources that have violated the selected risks. Supported operators: in, not in, exists, not exists. - `policy.failed` - Type: string - Example: `policy.failed in (\"PCI DSS (Payment Card Industry Data Security Standard) v3.2.1\")` - Description: Include resources that failed the selected policies. Supported operators: in, not in, exists, not exists. - `policy.passed` in (\"CIS Kubernetes V1.20 Benchmark\") - Type: string - Example: `policy.passed in (\"CIS Kubernetes V1.20 Benchmark\")` - Description: Include resources that passed the selected policies. Supported operators: in, not in, exists, not exists. - `project` - Type: string - Example: `project = \"project1\"` - Description: DEPRECATED. The project that will be included in the results. - `projectName` - Type: string - Example: `projectName = \"project123\"` - Description: The project name that will be included in the results. - `projectId` - Type: string - Example: `projectId = \"1235495521\"` - Description: The project id that will be included in the results. - `region` - Type: string - Example: `region in (\"europe-west1\")` - Description: The regions that will be included in the results. - `repository` - Type: string - Example: `repository in (\"e2e-repo\")` - Description: The Repository an IaC resource belongs to. - `resourceOrigin` - Type: string - Example: `resourceOrigin = \"Code\"` - Description: Origin of the resource. Supported values: Code, Deployed. - `type` - Type: string - Example: `type = \"Account\"` - Description: The resource types that will be included in the results. - `subscription` - Type: string - Example: `subscription = \"Azure subscription 1\"` - Description: DEPRECATED. The Azure subscription that will be included in the results. - `subscriptionName` - Type: string - Example: `subscriptionName = \"subscription abc\"` - Description: The Azure subscription name that will be included in the results. - `subscriptionId` - Type: string - Example: `subscriptionId = \"568634664353\"` - Description: The Azure subscription id that will be included in the results. - `sourceType` - Type: string - Example: `sourceType = \"YAML\"` - Description: The source type of an IaC resource. Supported values: YAML, Kustomize, Terraform, Helm. - `version` - Type: string - Example: `version = \"1.1\"` - Description: OCP Cluster versions that will be included in the results. - `zone` - Type: string - Example: `zone in (\"zone1\")` - Description: The zones that will be included in the results. - `category` - Type: string - Example: `category in (\"Compute\", \"IAM\")` - Description: The category that will be included in the results. Supported operators: in, not in. - `isExposed` - Type: boolean - Example: `isExposed exists` - Description - Specifies whether the resource to return is exposed to the internet. Supported operators: exists and not exists. - `validatedExposure` - Type: boolean - Example: `validatedExposure exists` - Description - Specifies whether the resource to return is exposed to the internet and could be reach by our network exposure validator. Supported operators: exists and not exists. - `arn` - Type: string - Example: `arn in (\"arn:aws:ec2:eu-central-1:843232641625:instance/i-0c1dedd325e71138d\")` - Description - The AWS ARN of the resource. - `resourceId` - Type: string - Example: `resourceId = \"//compute.googleapis.com/projects/project1/global/routes/default-route-192ae83214caddd\"` - Description - The Azure or GCP Resource Identifier of the resource. - `container.name` - Type: string - Example: `container.name in (\"sysdig-container\")` - Description - Filters the resource by a container. - `architecture` - Type: string - Example: `architecture = \"arm64\"` - Description - Image architecture. - `baseOS` - Type: string - Example: `baseOS = \"debian 11.6\"` - Description - Image Base OS. - `digest` - Type: string - Example: `digest = \"sha256:21829f4f033ac2805aa43a412bcdf60e98eee4124d565a06dee184c97efff6091\"` - Description - Image Digest. - `imageId` - Type: string - Example: `imageId in (\"sha256:3768ff6176e29a35ce1354622977a1e5c013045cbc4f30754ef3459218be8ac\")` - Description - Image Id. - `os` - Type: string - Example: `os = \"linux\"` - Description - Image OS. - `container.imageName` - Type: string - Example: `container.imageName in (\"registry.k8s.io/kube-image:v1.2.4\")` - Description - Image Pullstring. - `image.registry` - Type: string - Example: `image.registry = \"quay.io\"` - Description - Image Registry. - `image.tag` - Type: string - Example: `image.tag in (\"tag1\")` - Description - Image tag. - `package.inUse` - Type: boolean - Example: `package.inUse exists` - Description - Package in use filter. Supported operators: exists and not exists. - `package.info` - Type: string - Example: `package.info in (\"github.com/golang/protobuf - v1.5.2\")` - Description - Filters by a package using the format [packge name] - [version]. - `package.path` - Type: string - Example: `package.path in (\"/app\")` - Description - Filters by package path. - `package.type` - Type: string - Example: `package.type in (\"Golang\")` - Description - Package type. - `vuln.cvssScore` - Type: string - Example: `vuln.cvssScore >= \"3\"` - Description - Filter by vulnerability CVSS. Supported operators: `=` and `>=`. - `vuln.hasExploit` - Type: boolean - Example: `vuln.hasExploit exists` - Description - Filters resources by the existence of vulnerabilities with exploits. Supported operators: exists and not exists. - `vuln.hasFix` - Type: boolean - Example: `vuln.hasFix exists` - Description - Filters resources by the existence of vulnerabilities with fixes. Supported operators: exists and not exists. - `vuln.name` - Type: string - Example: `vuln.name in (\"CVE-2023-0049\")` - Description - Filter by vulnerability name. - `vuln.severity` - Type: string - Example: `vuln.severity in (\"Critical\")` - Description - Filter by vulnerability severity. Supported operators: in, not in, exists and not exists. - `machineImage` - Type: string - Example: `machineImage = \"ami-0b22b359fdfabe1b5\"` - Description - Filter by host machine image. **Note**: Whenever you filter for values with special characters, ensure that you encode the values. If the special characters are \" or \\, use the escape character \\ and then encode the values. + :type filter: str + :param page_number: Page number. Defaults to 1. + :type page_number: int + :param page_size: Page size. Defaults to 20. + :type page_size: int + :param with_enriched_containers: If true then for kubernetes workload resources additional container information will be included. + :type with_enriched_containers: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_resources_serialize( + filter=filter, + page_number=page_number, + page_size=page_size, + with_enriched_containers=with_enriched_containers, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "InventoryResourceResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_resources_serialize( + self, + filter, + page_number, + page_size, + with_enriched_containers, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if filter is not None: + _query_params.append(("filter", filter)) + + if page_number is not None: + _query_params.append(("pageNumber", page_number)) + + if page_size is not None: + _query_params.append(("pageSize", page_size)) + + if with_enriched_containers is not None: + _query_params.append(("withEnrichedContainers", with_enriched_containers)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/inventory/v1/resources", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/ip_filtering_api.py b/sysdig_client/api/ip_filtering_api.py new file mode 100644 index 00000000..714d2b62 --- /dev/null +++ b/sysdig_client/api/ip_filtering_api.py @@ -0,0 +1,1823 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.create_ip_filter_v1 import CreateIpFilterV1 +from sysdig_client.models.ip_filter_response_v1 import IpFilterResponseV1 +from sysdig_client.models.ip_filters_paginated_response_v1 import IpFiltersPaginatedResponseV1 +from sysdig_client.models.ip_filters_settings_v1 import IpFiltersSettingsV1 +from sysdig_client.models.update_ip_filter_v1 import UpdateIpFilterV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class IPFilteringApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_ip_filter_v1( + self, + create_ip_filter_v1: Annotated[ + Optional[CreateIpFilterV1], Field(description="The payload required to create IP filter.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IpFilterResponseV1: + """Create IP Filter + + Create a new IP filter.\\ \\ **Required permissions:** _ip-filters.edit_ + + :param create_ip_filter_v1: The payload required to create IP filter. + :type create_ip_filter_v1: CreateIpFilterV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_ip_filter_v1_serialize( + create_ip_filter_v1=create_ip_filter_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IpFilterResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_ip_filter_v1_with_http_info( + self, + create_ip_filter_v1: Annotated[ + Optional[CreateIpFilterV1], Field(description="The payload required to create IP filter.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IpFilterResponseV1]: + """Create IP Filter + + Create a new IP filter.\\ \\ **Required permissions:** _ip-filters.edit_ + + :param create_ip_filter_v1: The payload required to create IP filter. + :type create_ip_filter_v1: CreateIpFilterV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_ip_filter_v1_serialize( + create_ip_filter_v1=create_ip_filter_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IpFilterResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_ip_filter_v1_without_preload_content( + self, + create_ip_filter_v1: Annotated[ + Optional[CreateIpFilterV1], Field(description="The payload required to create IP filter.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create IP Filter + + Create a new IP filter.\\ \\ **Required permissions:** _ip-filters.edit_ + + :param create_ip_filter_v1: The payload required to create IP filter. + :type create_ip_filter_v1: CreateIpFilterV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_ip_filter_v1_serialize( + create_ip_filter_v1=create_ip_filter_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IpFilterResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_ip_filter_v1_serialize( + self, + create_ip_filter_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_ip_filter_v1 is not None: + _body_params = create_ip_filter_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/ip-filters", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_ip_filter_by_id_v1( + self, + ip_filter_id: Annotated[int, Field(strict=True, ge=0, description="IP Filter ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete IP Filter + + Delete IP filter by its ID.\\ \\ **Required permissions:** _ip-filters.edit_ + + :param ip_filter_id: IP Filter ID. (required) + :type ip_filter_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_ip_filter_by_id_v1_serialize( + ip_filter_id=ip_filter_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_ip_filter_by_id_v1_with_http_info( + self, + ip_filter_id: Annotated[int, Field(strict=True, ge=0, description="IP Filter ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete IP Filter + + Delete IP filter by its ID.\\ \\ **Required permissions:** _ip-filters.edit_ + + :param ip_filter_id: IP Filter ID. (required) + :type ip_filter_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_ip_filter_by_id_v1_serialize( + ip_filter_id=ip_filter_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_ip_filter_by_id_v1_without_preload_content( + self, + ip_filter_id: Annotated[int, Field(strict=True, ge=0, description="IP Filter ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete IP Filter + + Delete IP filter by its ID.\\ \\ **Required permissions:** _ip-filters.edit_ + + :param ip_filter_id: IP Filter ID. (required) + :type ip_filter_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_ip_filter_by_id_v1_serialize( + ip_filter_id=ip_filter_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_ip_filter_by_id_v1_serialize( + self, + ip_filter_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if ip_filter_id is not None: + _path_params["ipFilterId"] = ip_filter_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/ip-filters/{ipFilterId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_ip_filter_by_id_v1( + self, + ip_filter_id: Annotated[int, Field(strict=True, ge=0, description="IP Filter ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IpFilterResponseV1: + """Get IP Filter by ID + + Get IP Filter by ID.\\ \\ **Required permissions:** _ip-filters.read_ + + :param ip_filter_id: IP Filter ID. (required) + :type ip_filter_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_ip_filter_by_id_v1_serialize( + ip_filter_id=ip_filter_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFilterResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_ip_filter_by_id_v1_with_http_info( + self, + ip_filter_id: Annotated[int, Field(strict=True, ge=0, description="IP Filter ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IpFilterResponseV1]: + """Get IP Filter by ID + + Get IP Filter by ID.\\ \\ **Required permissions:** _ip-filters.read_ + + :param ip_filter_id: IP Filter ID. (required) + :type ip_filter_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_ip_filter_by_id_v1_serialize( + ip_filter_id=ip_filter_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFilterResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_ip_filter_by_id_v1_without_preload_content( + self, + ip_filter_id: Annotated[int, Field(strict=True, ge=0, description="IP Filter ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get IP Filter by ID + + Get IP Filter by ID.\\ \\ **Required permissions:** _ip-filters.read_ + + :param ip_filter_id: IP Filter ID. (required) + :type ip_filter_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_ip_filter_by_id_v1_serialize( + ip_filter_id=ip_filter_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFilterResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_ip_filter_by_id_v1_serialize( + self, + ip_filter_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if ip_filter_id is not None: + _path_params["ipFilterId"] = ip_filter_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/ip-filters/{ipFilterId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_ip_filters_settings_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IpFiltersSettingsV1: + """Get IP Filters Settings + + Retrieves your IP filters settings.\\ \\ **Required permissions:** _ip-filters.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_ip_filters_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFiltersSettingsV1", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_ip_filters_settings_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IpFiltersSettingsV1]: + """Get IP Filters Settings + + Retrieves your IP filters settings.\\ \\ **Required permissions:** _ip-filters.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_ip_filters_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFiltersSettingsV1", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_ip_filters_settings_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get IP Filters Settings + + Retrieves your IP filters settings.\\ \\ **Required permissions:** _ip-filters.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_ip_filters_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFiltersSettingsV1", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_ip_filters_settings_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/ip-filters-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_ip_filters_v1( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IpFiltersPaginatedResponseV1: + """List IP Filters + + Retrieve a paginated list of IP filters.\\ \\ **Required permissions:** _ip-filters.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_ip_filters_v1_serialize( + offset=offset, + limit=limit, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFiltersPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_ip_filters_v1_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IpFiltersPaginatedResponseV1]: + """List IP Filters + + Retrieve a paginated list of IP filters.\\ \\ **Required permissions:** _ip-filters.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_ip_filters_v1_serialize( + offset=offset, + limit=limit, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFiltersPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_ip_filters_v1_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List IP Filters + + Retrieve a paginated list of IP filters.\\ \\ **Required permissions:** _ip-filters.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_ip_filters_v1_serialize( + offset=offset, + limit=limit, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFiltersPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_ip_filters_v1_serialize( + self, + offset, + limit, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/ip-filters", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def save_ip_filters_settings_v1( + self, + ip_filters_settings_v1: Annotated[ + Optional[IpFiltersSettingsV1], Field(description="The payload required to save IP filters settings.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IpFiltersSettingsV1: + """Save IP Filters settings + + Saves your IP filters settings.\\ \\ **Required permissions:** _ip-filters.edit_ + + :param ip_filters_settings_v1: The payload required to save IP filters settings. + :type ip_filters_settings_v1: IpFiltersSettingsV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._save_ip_filters_settings_v1_serialize( + ip_filters_settings_v1=ip_filters_settings_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFiltersSettingsV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def save_ip_filters_settings_v1_with_http_info( + self, + ip_filters_settings_v1: Annotated[ + Optional[IpFiltersSettingsV1], Field(description="The payload required to save IP filters settings.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IpFiltersSettingsV1]: + """Save IP Filters settings + + Saves your IP filters settings.\\ \\ **Required permissions:** _ip-filters.edit_ + + :param ip_filters_settings_v1: The payload required to save IP filters settings. + :type ip_filters_settings_v1: IpFiltersSettingsV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._save_ip_filters_settings_v1_serialize( + ip_filters_settings_v1=ip_filters_settings_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFiltersSettingsV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def save_ip_filters_settings_v1_without_preload_content( + self, + ip_filters_settings_v1: Annotated[ + Optional[IpFiltersSettingsV1], Field(description="The payload required to save IP filters settings.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Save IP Filters settings + + Saves your IP filters settings.\\ \\ **Required permissions:** _ip-filters.edit_ + + :param ip_filters_settings_v1: The payload required to save IP filters settings. + :type ip_filters_settings_v1: IpFiltersSettingsV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._save_ip_filters_settings_v1_serialize( + ip_filters_settings_v1=ip_filters_settings_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFiltersSettingsV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _save_ip_filters_settings_v1_serialize( + self, + ip_filters_settings_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if ip_filters_settings_v1 is not None: + _body_params = ip_filters_settings_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/ip-filters-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_ip_filter_v1( + self, + ip_filter_id: Annotated[int, Field(strict=True, ge=0, description="IP Filter ID.")], + update_ip_filter_v1: UpdateIpFilterV1, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IpFilterResponseV1: + """Update IP Filter + + Update IP filter by its ID. \\ \\ **Required permissions:** _ip-filters.edit_ + + :param ip_filter_id: IP Filter ID. (required) + :type ip_filter_id: int + :param update_ip_filter_v1: (required) + :type update_ip_filter_v1: UpdateIpFilterV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_ip_filter_v1_serialize( + ip_filter_id=ip_filter_id, + update_ip_filter_v1=update_ip_filter_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFilterResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_ip_filter_v1_with_http_info( + self, + ip_filter_id: Annotated[int, Field(strict=True, ge=0, description="IP Filter ID.")], + update_ip_filter_v1: UpdateIpFilterV1, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IpFilterResponseV1]: + """Update IP Filter + + Update IP filter by its ID. \\ \\ **Required permissions:** _ip-filters.edit_ + + :param ip_filter_id: IP Filter ID. (required) + :type ip_filter_id: int + :param update_ip_filter_v1: (required) + :type update_ip_filter_v1: UpdateIpFilterV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_ip_filter_v1_serialize( + ip_filter_id=ip_filter_id, + update_ip_filter_v1=update_ip_filter_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFilterResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_ip_filter_v1_without_preload_content( + self, + ip_filter_id: Annotated[int, Field(strict=True, ge=0, description="IP Filter ID.")], + update_ip_filter_v1: UpdateIpFilterV1, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update IP Filter + + Update IP filter by its ID. \\ \\ **Required permissions:** _ip-filters.edit_ + + :param ip_filter_id: IP Filter ID. (required) + :type ip_filter_id: int + :param update_ip_filter_v1: (required) + :type update_ip_filter_v1: UpdateIpFilterV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_ip_filter_v1_serialize( + ip_filter_id=ip_filter_id, + update_ip_filter_v1=update_ip_filter_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IpFilterResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_ip_filter_v1_serialize( + self, + ip_filter_id, + update_ip_filter_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if ip_filter_id is not None: + _path_params["ipFilterId"] = ip_filter_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_ip_filter_v1 is not None: + _body_params = update_ip_filter_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/ip-filters/{ipFilterId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/jira_integrations_api.py b/sysdig_client/api/jira_integrations_api.py new file mode 100644 index 00000000..25c18a06 --- /dev/null +++ b/sysdig_client/api/jira_integrations_api.py @@ -0,0 +1,2651 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import StrictBool +from sysdig_client.models.create_integration_request_v1 import CreateIntegrationRequestV1 +from sysdig_client.models.create_issue_type_request_v1 import CreateIssueTypeRequestV1 +from sysdig_client.models.integration_response_v1 import IntegrationResponseV1 +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 +from sysdig_client.models.issue_types_response_v1 import IssueTypesResponseV1 +from sysdig_client.models.paginated_integrations_response_v1 import PaginatedIntegrationsResponseV1 +from sysdig_client.models.update_integration_request_v1 import UpdateIntegrationRequestV1 +from sysdig_client.models.update_issue_type_request_v1 import UpdateIssueTypeRequestV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class JiraIntegrationsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_jira_integration_v1( + self, + create_integration_request_v1: Annotated[CreateIntegrationRequestV1, Field(description="A Jira integration to create")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IntegrationResponseV1: + """Create Jira integration + + This operation creates a Jira integration on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param create_integration_request_v1: A Jira integration to create (required) + :type create_integration_request_v1: CreateIntegrationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_jira_integration_v1_serialize( + create_integration_request_v1=create_integration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IntegrationResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_jira_integration_v1_with_http_info( + self, + create_integration_request_v1: Annotated[CreateIntegrationRequestV1, Field(description="A Jira integration to create")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IntegrationResponseV1]: + """Create Jira integration + + This operation creates a Jira integration on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param create_integration_request_v1: A Jira integration to create (required) + :type create_integration_request_v1: CreateIntegrationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_jira_integration_v1_serialize( + create_integration_request_v1=create_integration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IntegrationResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_jira_integration_v1_without_preload_content( + self, + create_integration_request_v1: Annotated[CreateIntegrationRequestV1, Field(description="A Jira integration to create")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Jira integration + + This operation creates a Jira integration on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param create_integration_request_v1: A Jira integration to create (required) + :type create_integration_request_v1: CreateIntegrationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_jira_integration_v1_serialize( + create_integration_request_v1=create_integration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IntegrationResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_jira_integration_v1_serialize( + self, + create_integration_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_integration_request_v1 is not None: + _body_params = create_integration_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/jira/v1/integrations", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def create_jira_issue_type_v1( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + create_issue_type_request_v1: Annotated[CreateIssueTypeRequestV1, Field(description="A Jira issue type to create")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IssueTypeResponseV1: + """Create Jira issue type + + This operation creates a Jira issue type on the Sysdig platform for the particular Jira integration. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param create_issue_type_request_v1: A Jira issue type to create (required) + :type create_issue_type_request_v1: CreateIssueTypeRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_jira_issue_type_v1_serialize( + integration_id=integration_id, + create_issue_type_request_v1=create_issue_type_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IssueTypeResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_jira_issue_type_v1_with_http_info( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + create_issue_type_request_v1: Annotated[CreateIssueTypeRequestV1, Field(description="A Jira issue type to create")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IssueTypeResponseV1]: + """Create Jira issue type + + This operation creates a Jira issue type on the Sysdig platform for the particular Jira integration. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param create_issue_type_request_v1: A Jira issue type to create (required) + :type create_issue_type_request_v1: CreateIssueTypeRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_jira_issue_type_v1_serialize( + integration_id=integration_id, + create_issue_type_request_v1=create_issue_type_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IssueTypeResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_jira_issue_type_v1_without_preload_content( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + create_issue_type_request_v1: Annotated[CreateIssueTypeRequestV1, Field(description="A Jira issue type to create")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Jira issue type + + This operation creates a Jira issue type on the Sysdig platform for the particular Jira integration. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param create_issue_type_request_v1: A Jira issue type to create (required) + :type create_issue_type_request_v1: CreateIssueTypeRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_jira_issue_type_v1_serialize( + integration_id=integration_id, + create_issue_type_request_v1=create_issue_type_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "IssueTypeResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_jira_issue_type_v1_serialize( + self, + integration_id, + create_issue_type_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_issue_type_request_v1 is not None: + _body_params = create_issue_type_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/jira/v1/integrations/{integrationId}/issue-types", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_jira_integration_v1( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Jira integration + + This operation deletes a specific Jira integration on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_jira_integration_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_jira_integration_v1_with_http_info( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Jira integration + + This operation deletes a specific Jira integration on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_jira_integration_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_jira_integration_v1_without_preload_content( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Jira integration + + This operation deletes a specific Jira integration on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_jira_integration_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_jira_integration_v1_serialize( + self, + integration_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/jira/v1/integrations/{integrationId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_jira_issue_type_v1( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + issue_type_id: Annotated[int, Field(strict=True, ge=0, description="Jira issue type identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Jira issue type + + This operation deletes a specific Jira issue type on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param issue_type_id: Jira issue type identifier (required) + :type issue_type_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_jira_issue_type_v1_serialize( + integration_id=integration_id, + issue_type_id=issue_type_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_jira_issue_type_v1_with_http_info( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + issue_type_id: Annotated[int, Field(strict=True, ge=0, description="Jira issue type identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Jira issue type + + This operation deletes a specific Jira issue type on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param issue_type_id: Jira issue type identifier (required) + :type issue_type_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_jira_issue_type_v1_serialize( + integration_id=integration_id, + issue_type_id=issue_type_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_jira_issue_type_v1_without_preload_content( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + issue_type_id: Annotated[int, Field(strict=True, ge=0, description="Jira issue type identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Jira issue type + + This operation deletes a specific Jira issue type on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param issue_type_id: Jira issue type identifier (required) + :type issue_type_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_jira_issue_type_v1_serialize( + integration_id=integration_id, + issue_type_id=issue_type_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_jira_issue_type_v1_serialize( + self, + integration_id, + issue_type_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + if issue_type_id is not None: + _path_params["issueTypeId"] = issue_type_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_jira_integration_v1( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IntegrationResponseV1: + """Get Jira integration + + This operation returns a specific Jira integration from the Sysdig platform. **Required permissions:** *ticketing-integration.read* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_integration_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_jira_integration_v1_with_http_info( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IntegrationResponseV1]: + """Get Jira integration + + This operation returns a specific Jira integration from the Sysdig platform. **Required permissions:** *ticketing-integration.read* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_integration_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_jira_integration_v1_without_preload_content( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Jira integration + + This operation returns a specific Jira integration from the Sysdig platform. **Required permissions:** *ticketing-integration.read* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_integration_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_jira_integration_v1_serialize( + self, + integration_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/jira/v1/integrations/{integrationId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_jira_integrations_v1( + self, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + enabled: Annotated[Optional[StrictBool], Field(description="Enabled status of the integration")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> PaginatedIntegrationsResponseV1: + """List Jira integrations + + This operation returns a paginated list of Jira integrations from the Sysdig platform. **Required permissions:** *ticketing-integration.read* + + :param limit: The number of items to return + :type limit: int + :param offset: The offset number of items to start with + :type offset: int + :param enabled: Enabled status of the integration + :type enabled: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_integrations_v1_serialize( + limit=limit, + offset=offset, + enabled=enabled, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PaginatedIntegrationsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_jira_integrations_v1_with_http_info( + self, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + enabled: Annotated[Optional[StrictBool], Field(description="Enabled status of the integration")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[PaginatedIntegrationsResponseV1]: + """List Jira integrations + + This operation returns a paginated list of Jira integrations from the Sysdig platform. **Required permissions:** *ticketing-integration.read* + + :param limit: The number of items to return + :type limit: int + :param offset: The offset number of items to start with + :type offset: int + :param enabled: Enabled status of the integration + :type enabled: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_integrations_v1_serialize( + limit=limit, + offset=offset, + enabled=enabled, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PaginatedIntegrationsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_jira_integrations_v1_without_preload_content( + self, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + enabled: Annotated[Optional[StrictBool], Field(description="Enabled status of the integration")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Jira integrations + + This operation returns a paginated list of Jira integrations from the Sysdig platform. **Required permissions:** *ticketing-integration.read* + + :param limit: The number of items to return + :type limit: int + :param offset: The offset number of items to start with + :type offset: int + :param enabled: Enabled status of the integration + :type enabled: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_integrations_v1_serialize( + limit=limit, + offset=offset, + enabled=enabled, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PaginatedIntegrationsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_jira_integrations_v1_serialize( + self, + limit, + offset, + enabled, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if limit is not None: + _query_params.append(("limit", limit)) + + if offset is not None: + _query_params.append(("offset", offset)) + + if enabled is not None: + _query_params.append(("enabled", enabled)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/jira/v1/integrations", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_jira_issue_type_v1( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + issue_type_id: Annotated[int, Field(strict=True, ge=0, description="Jira issue type identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IssueTypeResponseV1: + """Get Jira issue type + + This operation returns a specific Jira issue type from the Sysdig platform. **Required permissions:** *ticketing-integration.read* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param issue_type_id: Jira issue type identifier (required) + :type issue_type_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_issue_type_v1_serialize( + integration_id=integration_id, + issue_type_id=issue_type_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IssueTypeResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_jira_issue_type_v1_with_http_info( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + issue_type_id: Annotated[int, Field(strict=True, ge=0, description="Jira issue type identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IssueTypeResponseV1]: + """Get Jira issue type + + This operation returns a specific Jira issue type from the Sysdig platform. **Required permissions:** *ticketing-integration.read* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param issue_type_id: Jira issue type identifier (required) + :type issue_type_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_issue_type_v1_serialize( + integration_id=integration_id, + issue_type_id=issue_type_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IssueTypeResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_jira_issue_type_v1_without_preload_content( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + issue_type_id: Annotated[int, Field(strict=True, ge=0, description="Jira issue type identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Jira issue type + + This operation returns a specific Jira issue type from the Sysdig platform. **Required permissions:** *ticketing-integration.read* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param issue_type_id: Jira issue type identifier (required) + :type issue_type_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_issue_type_v1_serialize( + integration_id=integration_id, + issue_type_id=issue_type_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IssueTypeResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_jira_issue_type_v1_serialize( + self, + integration_id, + issue_type_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + if issue_type_id is not None: + _path_params["issueTypeId"] = issue_type_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_jira_issue_types_v1( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IssueTypesResponseV1: + """List Jira issue types + + This operation returns a list of Jira issue types from the Sysdig platform, associated with a particular Jira integration. **Required permissions:** *ticketing-integration.read* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_issue_types_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IssueTypesResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_jira_issue_types_v1_with_http_info( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IssueTypesResponseV1]: + """List Jira issue types + + This operation returns a list of Jira issue types from the Sysdig platform, associated with a particular Jira integration. **Required permissions:** *ticketing-integration.read* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_issue_types_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IssueTypesResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_jira_issue_types_v1_without_preload_content( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Jira issue types + + This operation returns a list of Jira issue types from the Sysdig platform, associated with a particular Jira integration. **Required permissions:** *ticketing-integration.read* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_jira_issue_types_v1_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IssueTypesResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_jira_issue_types_v1_serialize( + self, + integration_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/jira/v1/integrations/{integrationId}/issue-types", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_jira_integration_v1( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + update_integration_request_v1: Annotated[ + Optional[UpdateIntegrationRequestV1], Field(description="The Jira integration to update") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IntegrationResponseV1: + """Update Jira integration + + This operation updates a specific Jira integration on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param update_integration_request_v1: The Jira integration to update + :type update_integration_request_v1: UpdateIntegrationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_jira_integration_v1_serialize( + integration_id=integration_id, + update_integration_request_v1=update_integration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_jira_integration_v1_with_http_info( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + update_integration_request_v1: Annotated[ + Optional[UpdateIntegrationRequestV1], Field(description="The Jira integration to update") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IntegrationResponseV1]: + """Update Jira integration + + This operation updates a specific Jira integration on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param update_integration_request_v1: The Jira integration to update + :type update_integration_request_v1: UpdateIntegrationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_jira_integration_v1_serialize( + integration_id=integration_id, + update_integration_request_v1=update_integration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_jira_integration_v1_without_preload_content( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + update_integration_request_v1: Annotated[ + Optional[UpdateIntegrationRequestV1], Field(description="The Jira integration to update") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Jira integration + + This operation updates a specific Jira integration on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param update_integration_request_v1: The Jira integration to update + :type update_integration_request_v1: UpdateIntegrationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_jira_integration_v1_serialize( + integration_id=integration_id, + update_integration_request_v1=update_integration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IntegrationResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_jira_integration_v1_serialize( + self, + integration_id, + update_integration_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_integration_request_v1 is not None: + _body_params = update_integration_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/jira/v1/integrations/{integrationId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_jira_issue_type_v1( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + issue_type_id: Annotated[int, Field(strict=True, ge=0, description="Jira issue type identifier")], + update_issue_type_request_v1: Annotated[ + Optional[UpdateIssueTypeRequestV1], Field(description="A Jira issue type to update") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> IssueTypeResponseV1: + """Update Jira issue type + + This operation updates a specific Jira issue type on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param issue_type_id: Jira issue type identifier (required) + :type issue_type_id: int + :param update_issue_type_request_v1: A Jira issue type to update + :type update_issue_type_request_v1: UpdateIssueTypeRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_jira_issue_type_v1_serialize( + integration_id=integration_id, + issue_type_id=issue_type_id, + update_issue_type_request_v1=update_issue_type_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IssueTypeResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_jira_issue_type_v1_with_http_info( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + issue_type_id: Annotated[int, Field(strict=True, ge=0, description="Jira issue type identifier")], + update_issue_type_request_v1: Annotated[ + Optional[UpdateIssueTypeRequestV1], Field(description="A Jira issue type to update") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[IssueTypeResponseV1]: + """Update Jira issue type + + This operation updates a specific Jira issue type on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param issue_type_id: Jira issue type identifier (required) + :type issue_type_id: int + :param update_issue_type_request_v1: A Jira issue type to update + :type update_issue_type_request_v1: UpdateIssueTypeRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_jira_issue_type_v1_serialize( + integration_id=integration_id, + issue_type_id=issue_type_id, + update_issue_type_request_v1=update_issue_type_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IssueTypeResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_jira_issue_type_v1_without_preload_content( + self, + integration_id: Annotated[int, Field(strict=True, ge=0, description="Jira integration identifier")], + issue_type_id: Annotated[int, Field(strict=True, ge=0, description="Jira issue type identifier")], + update_issue_type_request_v1: Annotated[ + Optional[UpdateIssueTypeRequestV1], Field(description="A Jira issue type to update") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Jira issue type + + This operation updates a specific Jira issue type on the Sysdig platform. **Required permissions:** *ticketing-integration.write* + + :param integration_id: Jira integration identifier (required) + :type integration_id: int + :param issue_type_id: Jira issue type identifier (required) + :type issue_type_id: int + :param update_issue_type_request_v1: A Jira issue type to update + :type update_issue_type_request_v1: UpdateIssueTypeRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_jira_issue_type_v1_serialize( + integration_id=integration_id, + issue_type_id=issue_type_id, + update_issue_type_request_v1=update_issue_type_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "IssueTypeResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_jira_issue_type_v1_serialize( + self, + integration_id, + issue_type_id, + update_issue_type_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params["integrationId"] = integration_id + if issue_type_id is not None: + _path_params["issueTypeId"] = issue_type_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_issue_type_request_v1 is not None: + _body_params = update_issue_type_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/jira/v1/integrations/{integrationId}/issue-types/{issueTypeId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/metrics_collection_api.py b/sysdig_client/api/metrics_collection_api.py new file mode 100644 index 00000000..c5992c3d --- /dev/null +++ b/sysdig_client/api/metrics_collection_api.py @@ -0,0 +1,2392 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.custom_jobs_enablement_v1 import CustomJobsEnablementV1 +from sysdig_client.models.get_custom_jobs_paginated_response_v1 import GetCustomJobsPaginatedResponseV1 +from sysdig_client.models.request_body_disabled_metrics_v1 import RequestBodyDisabledMetricsV1 +from sysdig_client.models.response_list_disabled_metrics_v1 import ResponseListDisabledMetricsV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class MetricsCollectionApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_custom_prometheus_job_v1( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + body: Annotated[ + Optional[StrictStr], + Field(description="The payload to create a custom job. Content must be a valid Prometheus `scrape_config`."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> str: + """Create Custom Prometheus job + + Create a custom Prometheus job. \\ The body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\\ \\ The custom job will be disabled by default and must be enabled with the `/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement` api. \\ You can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations \\ **CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs. \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param body: The payload to create a custom job. Content must be a valid Prometheus `scrape_config`. + :type body: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_custom_prometheus_job_v1_serialize( + job_name=job_name, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "str", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_custom_prometheus_job_v1_with_http_info( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + body: Annotated[ + Optional[StrictStr], + Field(description="The payload to create a custom job. Content must be a valid Prometheus `scrape_config`."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[str]: + """Create Custom Prometheus job + + Create a custom Prometheus job. \\ The body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\\ \\ The custom job will be disabled by default and must be enabled with the `/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement` api. \\ You can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations \\ **CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs. \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param body: The payload to create a custom job. Content must be a valid Prometheus `scrape_config`. + :type body: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_custom_prometheus_job_v1_serialize( + job_name=job_name, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "str", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_custom_prometheus_job_v1_without_preload_content( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + body: Annotated[ + Optional[StrictStr], + Field(description="The payload to create a custom job. Content must be a valid Prometheus `scrape_config`."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Custom Prometheus job + + Create a custom Prometheus job. \\ The body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\\ \\ The custom job will be disabled by default and must be enabled with the `/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement` api. \\ You can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations \\ **CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs. \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param body: The payload to create a custom job. Content must be a valid Prometheus `scrape_config`. + :type body: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_custom_prometheus_job_v1_serialize( + job_name=job_name, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "str", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_custom_prometheus_job_v1_serialize( + self, + job_name, + body, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if job_name is not None: + _path_params["jobName"] = job_name + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if body is not None: + _body_params = body + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/yaml", "application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/yaml"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_custom_prometheus_job_by_id_v1( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Custom Prometheus job + + Delete a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_custom_prometheus_job_by_id_v1_serialize( + job_name=job_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_custom_prometheus_job_by_id_v1_with_http_info( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Custom Prometheus job + + Delete a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_custom_prometheus_job_by_id_v1_serialize( + job_name=job_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_custom_prometheus_job_by_id_v1_without_preload_content( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Custom Prometheus job + + Delete a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_custom_prometheus_job_by_id_v1_serialize( + job_name=job_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_custom_prometheus_job_by_id_v1_serialize( + self, + job_name, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if job_name is not None: + _path_params["jobName"] = job_name + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_custom_prometheus_job_by_name_v1( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> str: + """Get Custom Prometheus Job + + Retrieve a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.read_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_custom_prometheus_job_by_name_v1_serialize( + job_name=job_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_custom_prometheus_job_by_name_v1_with_http_info( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[str]: + """Get Custom Prometheus Job + + Retrieve a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.read_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_custom_prometheus_job_by_name_v1_serialize( + job_name=job_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_custom_prometheus_job_by_name_v1_without_preload_content( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Custom Prometheus Job + + Retrieve a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.read_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_custom_prometheus_job_by_name_v1_serialize( + job_name=job_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_custom_prometheus_job_by_name_v1_serialize( + self, + job_name, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if job_name is not None: + _path_params["jobName"] = job_name + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/yaml", "application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_custom_prometheus_job_enablement_v1( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> CustomJobsEnablementV1: + """Get Custom Prometheus Job enablement + + Retrieve the enablement state of a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_custom_prometheus_job_enablement_v1_serialize( + job_name=job_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CustomJobsEnablementV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_custom_prometheus_job_enablement_v1_with_http_info( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[CustomJobsEnablementV1]: + """Get Custom Prometheus Job enablement + + Retrieve the enablement state of a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_custom_prometheus_job_enablement_v1_serialize( + job_name=job_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CustomJobsEnablementV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_custom_prometheus_job_enablement_v1_without_preload_content( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Custom Prometheus Job enablement + + Retrieve the enablement state of a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_custom_prometheus_job_enablement_v1_serialize( + job_name=job_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CustomJobsEnablementV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_custom_prometheus_job_enablement_v1_serialize( + self, + job_name, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if job_name is not None: + _path_params["jobName"] = job_name + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_custom_prometheus_jobs_v1( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetCustomJobsPaginatedResponseV1: + """List Custom Prometheus jobs + + Retrieve a paginated list of custom Prometheus jobs.\\ \\ **Required permissions:** _promcat.integrations.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_custom_prometheus_jobs_v1_serialize( + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetCustomJobsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_custom_prometheus_jobs_v1_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetCustomJobsPaginatedResponseV1]: + """List Custom Prometheus jobs + + Retrieve a paginated list of custom Prometheus jobs.\\ \\ **Required permissions:** _promcat.integrations.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_custom_prometheus_jobs_v1_serialize( + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetCustomJobsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_custom_prometheus_jobs_v1_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Custom Prometheus jobs + + Retrieve a paginated list of custom Prometheus jobs.\\ \\ **Required permissions:** _promcat.integrations.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_custom_prometheus_jobs_v1_serialize( + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetCustomJobsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_custom_prometheus_jobs_v1_serialize( + self, + offset, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/prometheus-jobs/v1alpha1/custom-jobs", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_disabled_metrics_by_job_v1( + self, + job_name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The name of the Prometheus Job whose excluded metrics are to be listed. "), + ] = None, + metric_name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The exact name of the metric to be filtered. "), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ResponseListDisabledMetricsV1: + """List disabled metrics collection for Jobs. + + List all disabled metrics per Job.\\ \\ **Required permissions:** Integrations Read + + :param job_name: The name of the Prometheus Job whose excluded metrics are to be listed. + :type job_name: str + :param metric_name: The exact name of the metric to be filtered. + :type metric_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_disabled_metrics_by_job_v1_serialize( + job_name=job_name, + metric_name=metric_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ResponseListDisabledMetricsV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_disabled_metrics_by_job_v1_with_http_info( + self, + job_name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The name of the Prometheus Job whose excluded metrics are to be listed. "), + ] = None, + metric_name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The exact name of the metric to be filtered. "), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ResponseListDisabledMetricsV1]: + """List disabled metrics collection for Jobs. + + List all disabled metrics per Job.\\ \\ **Required permissions:** Integrations Read + + :param job_name: The name of the Prometheus Job whose excluded metrics are to be listed. + :type job_name: str + :param metric_name: The exact name of the metric to be filtered. + :type metric_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_disabled_metrics_by_job_v1_serialize( + job_name=job_name, + metric_name=metric_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ResponseListDisabledMetricsV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_disabled_metrics_by_job_v1_without_preload_content( + self, + job_name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The name of the Prometheus Job whose excluded metrics are to be listed. "), + ] = None, + metric_name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The exact name of the metric to be filtered. "), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List disabled metrics collection for Jobs. + + List all disabled metrics per Job.\\ \\ **Required permissions:** Integrations Read + + :param job_name: The name of the Prometheus Job whose excluded metrics are to be listed. + :type job_name: str + :param metric_name: The exact name of the metric to be filtered. + :type metric_name: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_disabled_metrics_by_job_v1_serialize( + job_name=job_name, + metric_name=metric_name, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ResponseListDisabledMetricsV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_disabled_metrics_by_job_v1_serialize( + self, + job_name, + metric_name, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if job_name is not None: + _query_params.append(("jobName", job_name)) + + if metric_name is not None: + _query_params.append(("metricName", metric_name)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/prometheus-jobs/v1/disabled-metrics", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_disabled_metrics_v1( + self, + request_body_disabled_metrics_v1: Optional[RequestBodyDisabledMetricsV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ResponseListDisabledMetricsV1: + """Disable or re-enable metrics collection for Jobs + + Disable specific metric collection for a specified Job. \\ This API supports specifying multiple Jobs, each with its own list of metrics to be disabled. \\ Additionally, you can use the same API to re-enable metrics that were previously disabled.\\ \\ **Required permissions:** Integrations Full Access + + :param request_body_disabled_metrics_v1: + :type request_body_disabled_metrics_v1: RequestBodyDisabledMetricsV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_disabled_metrics_v1_serialize( + request_body_disabled_metrics_v1=request_body_disabled_metrics_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ResponseListDisabledMetricsV1", + "207": "ResponseListDisabledMetricsAndErrorV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_disabled_metrics_v1_with_http_info( + self, + request_body_disabled_metrics_v1: Optional[RequestBodyDisabledMetricsV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ResponseListDisabledMetricsV1]: + """Disable or re-enable metrics collection for Jobs + + Disable specific metric collection for a specified Job. \\ This API supports specifying multiple Jobs, each with its own list of metrics to be disabled. \\ Additionally, you can use the same API to re-enable metrics that were previously disabled.\\ \\ **Required permissions:** Integrations Full Access + + :param request_body_disabled_metrics_v1: + :type request_body_disabled_metrics_v1: RequestBodyDisabledMetricsV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_disabled_metrics_v1_serialize( + request_body_disabled_metrics_v1=request_body_disabled_metrics_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ResponseListDisabledMetricsV1", + "207": "ResponseListDisabledMetricsAndErrorV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_disabled_metrics_v1_without_preload_content( + self, + request_body_disabled_metrics_v1: Optional[RequestBodyDisabledMetricsV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Disable or re-enable metrics collection for Jobs + + Disable specific metric collection for a specified Job. \\ This API supports specifying multiple Jobs, each with its own list of metrics to be disabled. \\ Additionally, you can use the same API to re-enable metrics that were previously disabled.\\ \\ **Required permissions:** Integrations Full Access + + :param request_body_disabled_metrics_v1: + :type request_body_disabled_metrics_v1: RequestBodyDisabledMetricsV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_disabled_metrics_v1_serialize( + request_body_disabled_metrics_v1=request_body_disabled_metrics_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ResponseListDisabledMetricsV1", + "207": "ResponseListDisabledMetricsAndErrorV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_disabled_metrics_v1_serialize( + self, + request_body_disabled_metrics_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if request_body_disabled_metrics_v1 is not None: + _body_params = request_body_disabled_metrics_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/monitor/prometheus-jobs/v1/disabled-metrics", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_custom_prometheus_job_by_id_v1( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + body: Annotated[Optional[StrictStr], Field(description="The custom Prometheus job yaml content")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> str: + """Update Custom Prometheus Job + + Update a custom Prometheus job. \\ The body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\\ \\ You can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations \\ **CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs. \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param body: The custom Prometheus job yaml content + :type body: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_custom_prometheus_job_by_id_v1_serialize( + job_name=job_name, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_custom_prometheus_job_by_id_v1_with_http_info( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + body: Annotated[Optional[StrictStr], Field(description="The custom Prometheus job yaml content")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[str]: + """Update Custom Prometheus Job + + Update a custom Prometheus job. \\ The body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\\ \\ You can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations \\ **CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs. \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param body: The custom Prometheus job yaml content + :type body: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_custom_prometheus_job_by_id_v1_serialize( + job_name=job_name, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_custom_prometheus_job_by_id_v1_without_preload_content( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + body: Annotated[Optional[StrictStr], Field(description="The custom Prometheus job yaml content")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Custom Prometheus Job + + Update a custom Prometheus job. \\ The body of the request must be a valid `scrape_config` as defined here: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\\ \\ You can override the standard Sysdig integration jobs using the same job name. The job names are available here: https://docs.sysdig.com/en/docs/sysdig-monitor/integrations/monitoring-integrations/configure-default-integrations/#supported-monitoring-integrations \\ **CAUTION**: the content of the job must be validated according to the Prometheus Scrape Config job definition. Any misconfiguration here can lead the Agent to fail the job parsing and stop sending custom metrics for all jobs. \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param body: The custom Prometheus job yaml content + :type body: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_custom_prometheus_job_by_id_v1_serialize( + job_name=job_name, + body=body, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_custom_prometheus_job_by_id_v1_serialize( + self, + job_name, + body, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if job_name is not None: + _path_params["jobName"] = job_name + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if body is not None: + _body_params = body + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/yaml", "application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/yaml"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_custom_prometheus_job_enablement_v1( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + custom_jobs_enablement_v1: Annotated[ + Optional[CustomJobsEnablementV1], Field(description="The payload required to enable the custom Prometheus job.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> CustomJobsEnablementV1: + """Update Custom Prometheus Job enablement + + Update the enablement state of a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param custom_jobs_enablement_v1: The payload required to enable the custom Prometheus job. + :type custom_jobs_enablement_v1: CustomJobsEnablementV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_custom_prometheus_job_enablement_v1_serialize( + job_name=job_name, + custom_jobs_enablement_v1=custom_jobs_enablement_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CustomJobsEnablementV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_custom_prometheus_job_enablement_v1_with_http_info( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + custom_jobs_enablement_v1: Annotated[ + Optional[CustomJobsEnablementV1], Field(description="The payload required to enable the custom Prometheus job.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[CustomJobsEnablementV1]: + """Update Custom Prometheus Job enablement + + Update the enablement state of a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param custom_jobs_enablement_v1: The payload required to enable the custom Prometheus job. + :type custom_jobs_enablement_v1: CustomJobsEnablementV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_custom_prometheus_job_enablement_v1_serialize( + job_name=job_name, + custom_jobs_enablement_v1=custom_jobs_enablement_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CustomJobsEnablementV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_custom_prometheus_job_enablement_v1_without_preload_content( + self, + job_name: Annotated[str, Field(min_length=1, strict=True, max_length=256, description="The custom Prometheus job name.")], + custom_jobs_enablement_v1: Annotated[ + Optional[CustomJobsEnablementV1], Field(description="The payload required to enable the custom Prometheus job.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Custom Prometheus Job enablement + + Update the enablement state of a custom Prometheus job by its name.\\ \\ **Required permissions:** _promcat.integrations.admin_ + + :param job_name: The custom Prometheus job name. (required) + :type job_name: str + :param custom_jobs_enablement_v1: The payload required to enable the custom Prometheus job. + :type custom_jobs_enablement_v1: CustomJobsEnablementV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_custom_prometheus_job_enablement_v1_serialize( + job_name=job_name, + custom_jobs_enablement_v1=custom_jobs_enablement_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "CustomJobsEnablementV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_custom_prometheus_job_enablement_v1_serialize( + self, + job_name, + custom_jobs_enablement_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if job_name is not None: + _path_params["jobName"] = job_name + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if custom_jobs_enablement_v1 is not None: + _body_params = custom_jobs_enablement_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/monitor/prometheus-jobs/v1alpha1/custom-jobs/{jobName}/enablement", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/monitor_events_api.py b/sysdig_client/api/monitor_events_api.py new file mode 100644 index 00000000..fc469bf1 --- /dev/null +++ b/sysdig_client/api/monitor_events_api.py @@ -0,0 +1,351 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.list_monitor_events_response import ListMonitorEventsResponse + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class MonitorEventsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_monitor_events_v1( + self, + var_from: Optional[Annotated[int, Field(le=4133980799000000000, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=4133980799000000000, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListMonitorEventsResponse: + """Get Events + + Retrieves the list of events matching the expressed search criteria. The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. The time criteria is required and can be specified in two different ways: - Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. - Using a `cursor` the events returned will be in the before or after the event, depending on the cursor type. More details are available in the `cursor` attribute in the response.\\ \\ **Required permissions:** - _alert-events.read_ for alert events to be included in the response - _custom-events.read_ for custom events to be included in the response + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param filter: + :type filter: str + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_monitor_events_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + filter=filter, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListMonitorEventsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_monitor_events_v1_with_http_info( + self, + var_from: Optional[Annotated[int, Field(le=4133980799000000000, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=4133980799000000000, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListMonitorEventsResponse]: + """Get Events + + Retrieves the list of events matching the expressed search criteria. The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. The time criteria is required and can be specified in two different ways: - Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. - Using a `cursor` the events returned will be in the before or after the event, depending on the cursor type. More details are available in the `cursor` attribute in the response.\\ \\ **Required permissions:** - _alert-events.read_ for alert events to be included in the response - _custom-events.read_ for custom events to be included in the response + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param filter: + :type filter: str + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_monitor_events_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + filter=filter, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListMonitorEventsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_monitor_events_v1_without_preload_content( + self, + var_from: Optional[Annotated[int, Field(le=4133980799000000000, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=4133980799000000000, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Events + + Retrieves the list of events matching the expressed search criteria. The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. The time criteria is required and can be specified in two different ways: - Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. - Using a `cursor` the events returned will be in the before or after the event, depending on the cursor type. More details are available in the `cursor` attribute in the response.\\ \\ **Required permissions:** - _alert-events.read_ for alert events to be included in the response - _custom-events.read_ for custom events to be included in the response + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param filter: + :type filter: str + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_monitor_events_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + filter=filter, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListMonitorEventsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_monitor_events_v1_serialize( + self, + var_from, + to, + cursor, + filter, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if var_from is not None: + _query_params.append(("from", var_from)) + + if to is not None: + _query_params.append(("to", to)) + + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if filter is not None: + _query_params.append(("filter", filter)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/monitor/events/v1/events", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/notification_channels_api.py b/sysdig_client/api/notification_channels_api.py new file mode 100644 index 00000000..308d7d61 --- /dev/null +++ b/sysdig_client/api/notification_channels_api.py @@ -0,0 +1,1330 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.get_notification_channels_paginated_response_v1 import GetNotificationChannelsPaginatedResponseV1 +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class NotificationChannelsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_notification_channel( + self, + create_notification_channel_request_v1: Annotated[ + CreateNotificationChannelRequestV1, Field(description="The payload required to create a notification channel") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> NotificationChannelResponseV1: + """Create Notification Channel + + Create a notification channel.\\ \\ **Required permissions:** _notification-channels.edit_ + + :param create_notification_channel_request_v1: The payload required to create a notification channel (required) + :type create_notification_channel_request_v1: CreateNotificationChannelRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_notification_channel_serialize( + create_notification_channel_request_v1=create_notification_channel_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "NotificationChannelResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_notification_channel_with_http_info( + self, + create_notification_channel_request_v1: Annotated[ + CreateNotificationChannelRequestV1, Field(description="The payload required to create a notification channel") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[NotificationChannelResponseV1]: + """Create Notification Channel + + Create a notification channel.\\ \\ **Required permissions:** _notification-channels.edit_ + + :param create_notification_channel_request_v1: The payload required to create a notification channel (required) + :type create_notification_channel_request_v1: CreateNotificationChannelRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_notification_channel_serialize( + create_notification_channel_request_v1=create_notification_channel_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "NotificationChannelResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_notification_channel_without_preload_content( + self, + create_notification_channel_request_v1: Annotated[ + CreateNotificationChannelRequestV1, Field(description="The payload required to create a notification channel") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Notification Channel + + Create a notification channel.\\ \\ **Required permissions:** _notification-channels.edit_ + + :param create_notification_channel_request_v1: The payload required to create a notification channel (required) + :type create_notification_channel_request_v1: CreateNotificationChannelRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_notification_channel_serialize( + create_notification_channel_request_v1=create_notification_channel_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "NotificationChannelResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_notification_channel_serialize( + self, + create_notification_channel_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_notification_channel_request_v1 is not None: + _body_params = create_notification_channel_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/notification-channels", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_notification_channel_by_id( + self, + notification_channel_id: Annotated[int, Field(strict=True, ge=0, description="The Notification Channel Identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Notification Channel + + Delete a notification channel by its ID.\\ \\ **Required permissions:** _notification-channels.edit_ + + :param notification_channel_id: The Notification Channel Identifier (required) + :type notification_channel_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_notification_channel_by_id_serialize( + notification_channel_id=notification_channel_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_notification_channel_by_id_with_http_info( + self, + notification_channel_id: Annotated[int, Field(strict=True, ge=0, description="The Notification Channel Identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Notification Channel + + Delete a notification channel by its ID.\\ \\ **Required permissions:** _notification-channels.edit_ + + :param notification_channel_id: The Notification Channel Identifier (required) + :type notification_channel_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_notification_channel_by_id_serialize( + notification_channel_id=notification_channel_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_notification_channel_by_id_without_preload_content( + self, + notification_channel_id: Annotated[int, Field(strict=True, ge=0, description="The Notification Channel Identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Notification Channel + + Delete a notification channel by its ID.\\ \\ **Required permissions:** _notification-channels.edit_ + + :param notification_channel_id: The Notification Channel Identifier (required) + :type notification_channel_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_notification_channel_by_id_serialize( + notification_channel_id=notification_channel_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_notification_channel_by_id_serialize( + self, + notification_channel_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if notification_channel_id is not None: + _path_params["notificationChannelId"] = notification_channel_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/notification-channels/{notificationChannelId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_notification_channel_by_id( + self, + notification_channel_id: Annotated[int, Field(strict=True, ge=0, description="The Notification Channel Identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> NotificationChannelResponseV1: + """Get Notification Channel + + Returns a specific notification channel by its ID.\\ \\ **Required permissions:** _notification-channels.read_ + + :param notification_channel_id: The Notification Channel Identifier (required) + :type notification_channel_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_notification_channel_by_id_serialize( + notification_channel_id=notification_channel_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "NotificationChannelResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_notification_channel_by_id_with_http_info( + self, + notification_channel_id: Annotated[int, Field(strict=True, ge=0, description="The Notification Channel Identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[NotificationChannelResponseV1]: + """Get Notification Channel + + Returns a specific notification channel by its ID.\\ \\ **Required permissions:** _notification-channels.read_ + + :param notification_channel_id: The Notification Channel Identifier (required) + :type notification_channel_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_notification_channel_by_id_serialize( + notification_channel_id=notification_channel_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "NotificationChannelResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_notification_channel_by_id_without_preload_content( + self, + notification_channel_id: Annotated[int, Field(strict=True, ge=0, description="The Notification Channel Identifier")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Notification Channel + + Returns a specific notification channel by its ID.\\ \\ **Required permissions:** _notification-channels.read_ + + :param notification_channel_id: The Notification Channel Identifier (required) + :type notification_channel_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_notification_channel_by_id_serialize( + notification_channel_id=notification_channel_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "NotificationChannelResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_notification_channel_by_id_serialize( + self, + notification_channel_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if notification_channel_id is not None: + _path_params["notificationChannelId"] = notification_channel_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/notification-channels/{notificationChannelId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_notification_channels( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetNotificationChannelsPaginatedResponseV1: + """List Notification Channels + + Retrieve a paginated list of notification channels.\\ \\ **Required permissions:** _notification-channels.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_notification_channels_serialize( + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetNotificationChannelsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_notification_channels_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetNotificationChannelsPaginatedResponseV1]: + """List Notification Channels + + Retrieve a paginated list of notification channels.\\ \\ **Required permissions:** _notification-channels.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_notification_channels_serialize( + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetNotificationChannelsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_notification_channels_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Notification Channels + + Retrieve a paginated list of notification channels.\\ \\ **Required permissions:** _notification-channels.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_notification_channels_serialize( + offset=offset, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetNotificationChannelsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_notification_channels_serialize( + self, + offset, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/notification-channels", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_notification_channel_by_id( + self, + notification_channel_id: Annotated[int, Field(strict=True, ge=0, description="The Notification Channel Identifier")], + update_notification_channel_request_v1: Annotated[ + UpdateNotificationChannelRequestV1, Field(description="The payload required to update the notification channel") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> NotificationChannelResponseV1: + """Update Notification Channel + + Update a notification channel by its ID.\\ \\ **Required permissions:** _notification-channels.edit_ + + :param notification_channel_id: The Notification Channel Identifier (required) + :type notification_channel_id: int + :param update_notification_channel_request_v1: The payload required to update the notification channel (required) + :type update_notification_channel_request_v1: UpdateNotificationChannelRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_notification_channel_by_id_serialize( + notification_channel_id=notification_channel_id, + update_notification_channel_request_v1=update_notification_channel_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "NotificationChannelResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_notification_channel_by_id_with_http_info( + self, + notification_channel_id: Annotated[int, Field(strict=True, ge=0, description="The Notification Channel Identifier")], + update_notification_channel_request_v1: Annotated[ + UpdateNotificationChannelRequestV1, Field(description="The payload required to update the notification channel") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[NotificationChannelResponseV1]: + """Update Notification Channel + + Update a notification channel by its ID.\\ \\ **Required permissions:** _notification-channels.edit_ + + :param notification_channel_id: The Notification Channel Identifier (required) + :type notification_channel_id: int + :param update_notification_channel_request_v1: The payload required to update the notification channel (required) + :type update_notification_channel_request_v1: UpdateNotificationChannelRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_notification_channel_by_id_serialize( + notification_channel_id=notification_channel_id, + update_notification_channel_request_v1=update_notification_channel_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "NotificationChannelResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_notification_channel_by_id_without_preload_content( + self, + notification_channel_id: Annotated[int, Field(strict=True, ge=0, description="The Notification Channel Identifier")], + update_notification_channel_request_v1: Annotated[ + UpdateNotificationChannelRequestV1, Field(description="The payload required to update the notification channel") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Notification Channel + + Update a notification channel by its ID.\\ \\ **Required permissions:** _notification-channels.edit_ + + :param notification_channel_id: The Notification Channel Identifier (required) + :type notification_channel_id: int + :param update_notification_channel_request_v1: The payload required to update the notification channel (required) + :type update_notification_channel_request_v1: UpdateNotificationChannelRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_notification_channel_by_id_serialize( + notification_channel_id=notification_channel_id, + update_notification_channel_request_v1=update_notification_channel_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "NotificationChannelResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_notification_channel_by_id_serialize( + self, + notification_channel_id, + update_notification_channel_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if notification_channel_id is not None: + _path_params["notificationChannelId"] = notification_channel_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_notification_channel_request_v1 is not None: + _body_params = update_notification_channel_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/notification-channels/{notificationChannelId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/permissions_api.py b/sysdig_client/api/permissions_api.py new file mode 100644 index 00000000..7ed684ac --- /dev/null +++ b/sysdig_client/api/permissions_api.py @@ -0,0 +1,278 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.get_permissions_response_v1 import GetPermissionsResponseV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class PermissionsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_permissions_v1( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field( + description="Filter by products when getting permissions for custom roles.\\ Avaliable products are: SDS, SDC.\\ You can specify a single product or a list of products separated by commas.\\ Product names are case-sensitive.\\ If not specified, all permissions are returned. " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetPermissionsResponseV1: + """Get Customer Permissions + + Retrieve a list of permissions that are used in custom roles.\\ \\ **Required permissions:** _permissions.read_ + + :param filter: Filter by products when getting permissions for custom roles.\\ Avaliable products are: SDS, SDC.\\ You can specify a single product or a list of products separated by commas.\\ Product names are case-sensitive.\\ If not specified, all permissions are returned. + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_permissions_v1_serialize( + filter=filter, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPermissionsResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_permissions_v1_with_http_info( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field( + description="Filter by products when getting permissions for custom roles.\\ Avaliable products are: SDS, SDC.\\ You can specify a single product or a list of products separated by commas.\\ Product names are case-sensitive.\\ If not specified, all permissions are returned. " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetPermissionsResponseV1]: + """Get Customer Permissions + + Retrieve a list of permissions that are used in custom roles.\\ \\ **Required permissions:** _permissions.read_ + + :param filter: Filter by products when getting permissions for custom roles.\\ Avaliable products are: SDS, SDC.\\ You can specify a single product or a list of products separated by commas.\\ Product names are case-sensitive.\\ If not specified, all permissions are returned. + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_permissions_v1_serialize( + filter=filter, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPermissionsResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_permissions_v1_without_preload_content( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field( + description="Filter by products when getting permissions for custom roles.\\ Avaliable products are: SDS, SDC.\\ You can specify a single product or a list of products separated by commas.\\ Product names are case-sensitive.\\ If not specified, all permissions are returned. " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Customer Permissions + + Retrieve a list of permissions that are used in custom roles.\\ \\ **Required permissions:** _permissions.read_ + + :param filter: Filter by products when getting permissions for custom roles.\\ Avaliable products are: SDS, SDC.\\ You can specify a single product or a list of products separated by commas.\\ Product names are case-sensitive.\\ If not specified, all permissions are returned. + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_permissions_v1_serialize( + filter=filter, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPermissionsResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_permissions_v1_serialize( + self, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/permissions", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/platform_audit_api.py b/sysdig_client/api/platform_audit_api.py new file mode 100644 index 00000000..a08b2665 --- /dev/null +++ b/sysdig_client/api/platform_audit_api.py @@ -0,0 +1,339 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.list_audit_events_response import ListAuditEventsResponse + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class PlatformAuditApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_platform_audit_events_v1( + self, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Optional[Annotated[int, Field(le=999, strict=True, ge=1)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListAuditEventsResponse: + """Get Platform Audit Events + + Retrieve a paginated list of Platform Audit Events.\\ \\ **Required permissions:** _audit-trail-events.read_ + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param filter: + :type filter: str + :param limit: + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_platform_audit_events_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + filter=filter, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListAuditEventsResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_platform_audit_events_v1_with_http_info( + self, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Optional[Annotated[int, Field(le=999, strict=True, ge=1)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListAuditEventsResponse]: + """Get Platform Audit Events + + Retrieve a paginated list of Platform Audit Events.\\ \\ **Required permissions:** _audit-trail-events.read_ + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param filter: + :type filter: str + :param limit: + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_platform_audit_events_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + filter=filter, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListAuditEventsResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_platform_audit_events_v1_without_preload_content( + self, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Optional[Annotated[int, Field(le=999, strict=True, ge=1)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Platform Audit Events + + Retrieve a paginated list of Platform Audit Events.\\ \\ **Required permissions:** _audit-trail-events.read_ + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param filter: + :type filter: str + :param limit: + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_platform_audit_events_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + filter=filter, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListAuditEventsResponse", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_platform_audit_events_v1_serialize( + self, + var_from, + to, + cursor, + filter, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if var_from is not None: + _query_params.append(("from", var_from)) + + if to is not None: + _query_params.append(("to", to)) + + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if filter is not None: + _query_params.append(("filter", filter)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/platform-audit-events", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/prometheus_api.py b/sysdig_client/api/prometheus_api.py new file mode 100644 index 00000000..6a6a64ea --- /dev/null +++ b/sysdig_client/api/prometheus_api.py @@ -0,0 +1,8952 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import StrictBool, StrictBytes, field_validator +from sysdig_client.models.alerts_response_v1 import AlertsResponseV1 +from sysdig_client.models.label_values_response_v1 import LabelValuesResponseV1 +from sysdig_client.models.labels_response_v1 import LabelsResponseV1 +from sysdig_client.models.metadata_response_v1 import MetadataResponseV1 +from sysdig_client.models.query_response_v1 import QueryResponseV1 +from sysdig_client.models.rules_response_v1 import RulesResponseV1 +from sysdig_client.models.series_response_v1 import SeriesResponseV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class PrometheusApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_admin_tsdb_clean_tombstones_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Clean Tombstones + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_admin_tsdb_clean_tombstones_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_admin_tsdb_clean_tombstones_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Clean Tombstones + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_admin_tsdb_clean_tombstones_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_admin_tsdb_clean_tombstones_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Clean Tombstones + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_admin_tsdb_clean_tombstones_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_admin_tsdb_clean_tombstones_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/admin/tsdb/clean_tombstones", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_admin_tsdb_delete_series_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Series + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_admin_tsdb_delete_series_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_admin_tsdb_delete_series_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Series + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_admin_tsdb_delete_series_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_admin_tsdb_delete_series_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Series + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_admin_tsdb_delete_series_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_admin_tsdb_delete_series_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/admin/tsdb/delete_series", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_admin_tsdb_snapshot_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Snapshot + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_admin_tsdb_snapshot_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_admin_tsdb_snapshot_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Snapshot + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_admin_tsdb_snapshot_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_admin_tsdb_snapshot_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Snapshot + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_admin_tsdb_snapshot_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_admin_tsdb_snapshot_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/admin/tsdb/snapshot", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_alert_managers_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Alertmanagers + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_alert_managers_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_alert_managers_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Alertmanagers + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_alert_managers_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_alert_managers_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Alertmanagers + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_alert_managers_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_alert_managers_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1//alertmanagers", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_alerts_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> AlertsResponseV1: + """Alerts + + Returns a list of active alerts that are currently firing in Prometheus. \\ **Required permissions:** _alerts.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_alerts_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AlertsResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_alerts_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[AlertsResponseV1]: + """Alerts + + Returns a list of active alerts that are currently firing in Prometheus. \\ **Required permissions:** _alerts.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_alerts_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AlertsResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_alerts_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Alerts + + Returns a list of active alerts that are currently firing in Prometheus. \\ **Required permissions:** _alerts.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_alerts_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AlertsResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_alerts_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/alerts", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_exemplars_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Query Exemplars + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_exemplars_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_exemplars_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Query Exemplars + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_exemplars_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_exemplars_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Query Exemplars + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_exemplars_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_exemplars_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/query_exemplars", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_format_query_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Format Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_format_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_format_query_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Format Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_format_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_format_query_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Format Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_format_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_format_query_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/format_query", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_label_values_v1( + self, + label_name: Annotated[ + str, Field(strict=True, max_length=10000, description="The name of the label to retrieve values for.") + ], + start: Annotated[ + Optional[Any], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + end: Annotated[Optional[Any], Field(description="UNSUPPORTED - Sysdig does not support this parameter.")] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="A repeated series selector argument that specifies the series from which to read the label values." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned labels. This is 5,000 by default. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> LabelValuesResponseV1: + """Labels Values Query + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param label_name: The name of the label to retrieve values for. (required) + :type label_name: str + :param start: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type start: QueryTime + :param end: UNSUPPORTED - Sysdig does not support this parameter. + :type end: QueryTime + :param match: A repeated series selector argument that specifies the series from which to read the label values. + :type match: List[str] + :param limit: The maximum number of returned labels. This is 5,000 by default. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_label_values_v1_serialize( + label_name=label_name, + start=start, + end=end, + match=match, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "LabelValuesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_label_values_v1_with_http_info( + self, + label_name: Annotated[ + str, Field(strict=True, max_length=10000, description="The name of the label to retrieve values for.") + ], + start: Annotated[ + Optional[Any], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + end: Annotated[Optional[Any], Field(description="UNSUPPORTED - Sysdig does not support this parameter.")] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="A repeated series selector argument that specifies the series from which to read the label values." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned labels. This is 5,000 by default. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[LabelValuesResponseV1]: + """Labels Values Query + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param label_name: The name of the label to retrieve values for. (required) + :type label_name: str + :param start: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type start: QueryTime + :param end: UNSUPPORTED - Sysdig does not support this parameter. + :type end: QueryTime + :param match: A repeated series selector argument that specifies the series from which to read the label values. + :type match: List[str] + :param limit: The maximum number of returned labels. This is 5,000 by default. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_label_values_v1_serialize( + label_name=label_name, + start=start, + end=end, + match=match, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "LabelValuesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_label_values_v1_without_preload_content( + self, + label_name: Annotated[ + str, Field(strict=True, max_length=10000, description="The name of the label to retrieve values for.") + ], + start: Annotated[ + Optional[Any], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + end: Annotated[Optional[Any], Field(description="UNSUPPORTED - Sysdig does not support this parameter.")] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="A repeated series selector argument that specifies the series from which to read the label values." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned labels. This is 5,000 by default. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Labels Values Query + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param label_name: The name of the label to retrieve values for. (required) + :type label_name: str + :param start: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type start: QueryTime + :param end: UNSUPPORTED - Sysdig does not support this parameter. + :type end: QueryTime + :param match: A repeated series selector argument that specifies the series from which to read the label values. + :type match: List[str] + :param limit: The maximum number of returned labels. This is 5,000 by default. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_label_values_v1_serialize( + label_name=label_name, + start=start, + end=end, + match=match, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "LabelValuesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_label_values_v1_serialize( + self, + label_name, + start, + end, + match, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "match[]": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if label_name is not None: + _path_params["labelName"] = label_name + # process the query parameters + if start is not None: + _query_params.append(("start", start)) + + if end is not None: + _query_params.append(("end", end)) + + if match is not None: + _query_params.append(("match[]", match)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/label/{labelName}/values", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_labels_v1( + self, + start: Annotated[ + Optional[Any], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + end: Annotated[Optional[Any], Field(description="UNSUPPORTED - Sysdig does not support this parameter.")] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="A repeated series selector argument that specifies the series from which to read the label names." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> LabelsResponseV1: + """Labels Query + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param start: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type start: QueryTime + :param end: UNSUPPORTED - Sysdig does not support this parameter. + :type end: QueryTime + :param match: A repeated series selector argument that specifies the series from which to read the label names. + :type match: List[str] + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_labels_v1_serialize( + start=start, + end=end, + match=match, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "LabelsResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_labels_v1_with_http_info( + self, + start: Annotated[ + Optional[Any], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + end: Annotated[Optional[Any], Field(description="UNSUPPORTED - Sysdig does not support this parameter.")] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="A repeated series selector argument that specifies the series from which to read the label names." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[LabelsResponseV1]: + """Labels Query + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param start: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type start: QueryTime + :param end: UNSUPPORTED - Sysdig does not support this parameter. + :type end: QueryTime + :param match: A repeated series selector argument that specifies the series from which to read the label names. + :type match: List[str] + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_labels_v1_serialize( + start=start, + end=end, + match=match, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "LabelsResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_labels_v1_without_preload_content( + self, + start: Annotated[ + Optional[Any], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + end: Annotated[Optional[Any], Field(description="UNSUPPORTED - Sysdig does not support this parameter.")] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="A repeated series selector argument that specifies the series from which to read the label names." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Labels Query + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param start: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type start: QueryTime + :param end: UNSUPPORTED - Sysdig does not support this parameter. + :type end: QueryTime + :param match: A repeated series selector argument that specifies the series from which to read the label names. + :type match: List[str] + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_labels_v1_serialize( + start=start, + end=end, + match=match, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "LabelsResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_labels_v1_serialize( + self, + start, + end, + match, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "match[]": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if start is not None: + _query_params.append(("start", start)) + + if end is not None: + _query_params.append(("end", end)) + + if match is not None: + _query_params.append(("match[]", match)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/labels", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_live_notifications_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Live Notifications + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_live_notifications_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_live_notifications_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Live Notifications + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_live_notifications_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_live_notifications_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Live Notifications + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_live_notifications_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_live_notifications_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/notifications/live", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_metadata_v1( + self, + limit_per_metric: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="UNSUPPORTED - Sysdig does not support this parameter."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of metrics to return. To disable the limit, set the value to 0."), + ] = None, + metric: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=255)]], + Field( + description="A specific metric name to filter metadata for. If omitted, metadata for all metrics is retrieved." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> MetadataResponseV1: + """Querying metric metadata + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param limit_per_metric: UNSUPPORTED - Sysdig does not support this parameter. + :type limit_per_metric: int + :param limit: The maximum number of metrics to return. To disable the limit, set the value to 0. + :type limit: int + :param metric: A specific metric name to filter metadata for. If omitted, metadata for all metrics is retrieved. + :type metric: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_metadata_v1_serialize( + limit_per_metric=limit_per_metric, + limit=limit, + metric=metric, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "MetadataResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_metadata_v1_with_http_info( + self, + limit_per_metric: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="UNSUPPORTED - Sysdig does not support this parameter."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of metrics to return. To disable the limit, set the value to 0."), + ] = None, + metric: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=255)]], + Field( + description="A specific metric name to filter metadata for. If omitted, metadata for all metrics is retrieved." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[MetadataResponseV1]: + """Querying metric metadata + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param limit_per_metric: UNSUPPORTED - Sysdig does not support this parameter. + :type limit_per_metric: int + :param limit: The maximum number of metrics to return. To disable the limit, set the value to 0. + :type limit: int + :param metric: A specific metric name to filter metadata for. If omitted, metadata for all metrics is retrieved. + :type metric: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_metadata_v1_serialize( + limit_per_metric=limit_per_metric, + limit=limit, + metric=metric, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "MetadataResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_metadata_v1_without_preload_content( + self, + limit_per_metric: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="UNSUPPORTED - Sysdig does not support this parameter."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of metrics to return. To disable the limit, set the value to 0."), + ] = None, + metric: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=255)]], + Field( + description="A specific metric name to filter metadata for. If omitted, metadata for all metrics is retrieved." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Querying metric metadata + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param limit_per_metric: UNSUPPORTED - Sysdig does not support this parameter. + :type limit_per_metric: int + :param limit: The maximum number of metrics to return. To disable the limit, set the value to 0. + :type limit: int + :param metric: A specific metric name to filter metadata for. If omitted, metadata for all metrics is retrieved. + :type metric: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_metadata_v1_serialize( + limit_per_metric=limit_per_metric, + limit=limit, + metric=metric, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "MetadataResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_metadata_v1_serialize( + self, + limit_per_metric, + limit, + metric, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if limit_per_metric is not None: + _query_params.append(("limit_per_metric", limit_per_metric)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if metric is not None: + _query_params.append(("metric", metric)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/metadata", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_notifications_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Active Notifications + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_notifications_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_notifications_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Active Notifications + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_notifications_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_notifications_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Active Notifications + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_notifications_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_notifications_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/notifications", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_parse_query_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Parse Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_parse_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_parse_query_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Parse Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_parse_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_parse_query_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Parse Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_parse_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_parse_query_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/parse_query", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_query_range_v1( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + start: Annotated[ + Any, Field(description="The inclusive start timestamp of the query range as RFC3339 or a unix timestamp.") + ], + end: Annotated[Any, Field(description="The inclusive end timestamp of the query range as RFC3339 or a unix timestamp.")], + step: Annotated[ + Any, + Field(description="The query resolution step width, specified as a duration or a floating-point number of seconds."), + ], + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> QueryResponseV1: + """Range Query + + This endpoint evaluates an expression query over a specified time range. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param start: The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type start: QueryTime + :param end: The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type end: QueryTime + :param step: The query resolution step width, specified as a duration or a floating-point number of seconds. (required) + :type step: GetQueryRangeV1StepParameter + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_query_range_v1_serialize( + query=query, + start=start, + end=end, + step=step, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_query_range_v1_with_http_info( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + start: Annotated[ + Any, Field(description="The inclusive start timestamp of the query range as RFC3339 or a unix timestamp.") + ], + end: Annotated[Any, Field(description="The inclusive end timestamp of the query range as RFC3339 or a unix timestamp.")], + step: Annotated[ + Any, + Field(description="The query resolution step width, specified as a duration or a floating-point number of seconds."), + ], + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[QueryResponseV1]: + """Range Query + + This endpoint evaluates an expression query over a specified time range. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param start: The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type start: QueryTime + :param end: The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type end: QueryTime + :param step: The query resolution step width, specified as a duration or a floating-point number of seconds. (required) + :type step: GetQueryRangeV1StepParameter + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_query_range_v1_serialize( + query=query, + start=start, + end=end, + step=step, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_query_range_v1_without_preload_content( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + start: Annotated[ + Any, Field(description="The inclusive start timestamp of the query range as RFC3339 or a unix timestamp.") + ], + end: Annotated[Any, Field(description="The inclusive end timestamp of the query range as RFC3339 or a unix timestamp.")], + step: Annotated[ + Any, + Field(description="The query resolution step width, specified as a duration or a floating-point number of seconds."), + ], + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Range Query + + This endpoint evaluates an expression query over a specified time range. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param start: The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type start: QueryTime + :param end: The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type end: QueryTime + :param step: The query resolution step width, specified as a duration or a floating-point number of seconds. (required) + :type step: GetQueryRangeV1StepParameter + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_query_range_v1_serialize( + query=query, + start=start, + end=end, + step=step, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_query_range_v1_serialize( + self, + query, + start, + end, + step, + timeout, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if query is not None: + _query_params.append(("query", query)) + + if start is not None: + _query_params.append(("start", start)) + + if end is not None: + _query_params.append(("end", end)) + + if step is not None: + _query_params.append(("step", step)) + + if timeout is not None: + _query_params.append(("timeout", timeout)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/query_range", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_query_v1( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + time: Annotated[ + Optional[Any], + Field( + description="The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used." + ), + ] = None, + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> QueryResponseV1: + """Instant Query + + This endpoint evaluates an instant query at a single point in time. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param time: The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. + :type time: QueryTime + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_query_v1_serialize( + query=query, + time=time, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_query_v1_with_http_info( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + time: Annotated[ + Optional[Any], + Field( + description="The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used." + ), + ] = None, + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[QueryResponseV1]: + """Instant Query + + This endpoint evaluates an instant query at a single point in time. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param time: The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. + :type time: QueryTime + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_query_v1_serialize( + query=query, + time=time, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_query_v1_without_preload_content( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + time: Annotated[ + Optional[Any], + Field( + description="The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used." + ), + ] = None, + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Instant Query + + This endpoint evaluates an instant query at a single point in time. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param time: The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. + :type time: QueryTime + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_query_v1_serialize( + query=query, + time=time, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_query_v1_serialize( + self, + query, + time, + timeout, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if query is not None: + _query_params.append(("query", query)) + + if time is not None: + _query_params.append(("time", time)) + + if timeout is not None: + _query_params.append(("timeout", timeout)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/query", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_rules_v1( + self, + type: Annotated[ + Optional[StrictStr], + Field( + description="This endpoint only returns alerting rules (`type=alert`). When absent or empty, only alerting rules are returned." + ), + ] = None, + rule_name: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="Only return rules with the given rule name. If repeated, rules with any of the provided names are returned." + ), + ] = None, + rule_group: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="Only return rules with the given rule group name. If repeated, rules with any of the provided group names are returned." + ), + ] = None, + file: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field(description="UNSUPPORTED - Sysdig does not support this parameter."), + ] = None, + exclude_alerts: Annotated[ + Optional[StrictBool], + Field(description="This endpoint supports only returning alerting rules (`exclude_alerts=true`)."), + ] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=100)]], + Field(description="Only return rules with configured labels that satisfy the label selectors."), + ] = None, + group_limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="Limit the number of rule groups returned in a single response."), + ] = None, + group_next_token: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=255)]], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RulesResponseV1: + """Rules + + The /rules API endpoint returns the list of alerting rules. It also returns the currently active alerts fired by the Prometheus instance of each alerting rule. \\ Sysdig currently does not support recording rules. \\ **Required permissions:** _alerts.read_ + + :param type: This endpoint only returns alerting rules (`type=alert`). When absent or empty, only alerting rules are returned. + :type type: str + :param rule_name: Only return rules with the given rule name. If repeated, rules with any of the provided names are returned. + :type rule_name: List[str] + :param rule_group: Only return rules with the given rule group name. If repeated, rules with any of the provided group names are returned. + :type rule_group: List[str] + :param file: UNSUPPORTED - Sysdig does not support this parameter. + :type file: List[str] + :param exclude_alerts: This endpoint supports only returning alerting rules (`exclude_alerts=true`). + :type exclude_alerts: bool + :param match: Only return rules with configured labels that satisfy the label selectors. + :type match: List[str] + :param group_limit: Limit the number of rule groups returned in a single response. + :type group_limit: int + :param group_next_token: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type group_next_token: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_rules_v1_serialize( + type=type, + rule_name=rule_name, + rule_group=rule_group, + file=file, + exclude_alerts=exclude_alerts, + match=match, + group_limit=group_limit, + group_next_token=group_next_token, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RulesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_rules_v1_with_http_info( + self, + type: Annotated[ + Optional[StrictStr], + Field( + description="This endpoint only returns alerting rules (`type=alert`). When absent or empty, only alerting rules are returned." + ), + ] = None, + rule_name: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="Only return rules with the given rule name. If repeated, rules with any of the provided names are returned." + ), + ] = None, + rule_group: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="Only return rules with the given rule group name. If repeated, rules with any of the provided group names are returned." + ), + ] = None, + file: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field(description="UNSUPPORTED - Sysdig does not support this parameter."), + ] = None, + exclude_alerts: Annotated[ + Optional[StrictBool], + Field(description="This endpoint supports only returning alerting rules (`exclude_alerts=true`)."), + ] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=100)]], + Field(description="Only return rules with configured labels that satisfy the label selectors."), + ] = None, + group_limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="Limit the number of rule groups returned in a single response."), + ] = None, + group_next_token: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=255)]], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[RulesResponseV1]: + """Rules + + The /rules API endpoint returns the list of alerting rules. It also returns the currently active alerts fired by the Prometheus instance of each alerting rule. \\ Sysdig currently does not support recording rules. \\ **Required permissions:** _alerts.read_ + + :param type: This endpoint only returns alerting rules (`type=alert`). When absent or empty, only alerting rules are returned. + :type type: str + :param rule_name: Only return rules with the given rule name. If repeated, rules with any of the provided names are returned. + :type rule_name: List[str] + :param rule_group: Only return rules with the given rule group name. If repeated, rules with any of the provided group names are returned. + :type rule_group: List[str] + :param file: UNSUPPORTED - Sysdig does not support this parameter. + :type file: List[str] + :param exclude_alerts: This endpoint supports only returning alerting rules (`exclude_alerts=true`). + :type exclude_alerts: bool + :param match: Only return rules with configured labels that satisfy the label selectors. + :type match: List[str] + :param group_limit: Limit the number of rule groups returned in a single response. + :type group_limit: int + :param group_next_token: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type group_next_token: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_rules_v1_serialize( + type=type, + rule_name=rule_name, + rule_group=rule_group, + file=file, + exclude_alerts=exclude_alerts, + match=match, + group_limit=group_limit, + group_next_token=group_next_token, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RulesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_rules_v1_without_preload_content( + self, + type: Annotated[ + Optional[StrictStr], + Field( + description="This endpoint only returns alerting rules (`type=alert`). When absent or empty, only alerting rules are returned." + ), + ] = None, + rule_name: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="Only return rules with the given rule name. If repeated, rules with any of the provided names are returned." + ), + ] = None, + rule_group: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="Only return rules with the given rule group name. If repeated, rules with any of the provided group names are returned." + ), + ] = None, + file: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field(description="UNSUPPORTED - Sysdig does not support this parameter."), + ] = None, + exclude_alerts: Annotated[ + Optional[StrictBool], + Field(description="This endpoint supports only returning alerting rules (`exclude_alerts=true`)."), + ] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=100)]], + Field(description="Only return rules with configured labels that satisfy the label selectors."), + ] = None, + group_limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="Limit the number of rule groups returned in a single response."), + ] = None, + group_next_token: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=255)]], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Rules + + The /rules API endpoint returns the list of alerting rules. It also returns the currently active alerts fired by the Prometheus instance of each alerting rule. \\ Sysdig currently does not support recording rules. \\ **Required permissions:** _alerts.read_ + + :param type: This endpoint only returns alerting rules (`type=alert`). When absent or empty, only alerting rules are returned. + :type type: str + :param rule_name: Only return rules with the given rule name. If repeated, rules with any of the provided names are returned. + :type rule_name: List[str] + :param rule_group: Only return rules with the given rule group name. If repeated, rules with any of the provided group names are returned. + :type rule_group: List[str] + :param file: UNSUPPORTED - Sysdig does not support this parameter. + :type file: List[str] + :param exclude_alerts: This endpoint supports only returning alerting rules (`exclude_alerts=true`). + :type exclude_alerts: bool + :param match: Only return rules with configured labels that satisfy the label selectors. + :type match: List[str] + :param group_limit: Limit the number of rule groups returned in a single response. + :type group_limit: int + :param group_next_token: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type group_next_token: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_rules_v1_serialize( + type=type, + rule_name=rule_name, + rule_group=rule_group, + file=file, + exclude_alerts=exclude_alerts, + match=match, + group_limit=group_limit, + group_next_token=group_next_token, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RulesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_rules_v1_serialize( + self, + type, + rule_name, + rule_group, + file, + exclude_alerts, + match, + group_limit, + group_next_token, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "rule_name[]": "multi", + "rule_group[]": "multi", + "file[]": "multi", + "match[]": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if type is not None: + _query_params.append(("type", type)) + + if rule_name is not None: + _query_params.append(("rule_name[]", rule_name)) + + if rule_group is not None: + _query_params.append(("rule_group[]", rule_group)) + + if file is not None: + _query_params.append(("file[]", file)) + + if exclude_alerts is not None: + _query_params.append(("exclude_alerts", exclude_alerts)) + + if match is not None: + _query_params.append(("match[]", match)) + + if group_limit is not None: + _query_params.append(("group_limit", group_limit)) + + if group_next_token is not None: + _query_params.append(("group_next_token", group_next_token)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/rules", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_series_v1( + self, + match: Annotated[ + List[Annotated[str, Field(strict=True, max_length=255)]], + Field( + max_length=100, + description="A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter.", + ), + ], + start: Annotated[ + Optional[Any], Field(description="The inclusive start timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + end: Annotated[ + Optional[Any], Field(description="The inclusive end timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> SeriesResponseV1: + """Series Query + + The following endpoint returns the list of time series that match a specified label set. \\ **Required permissions:** _metrics-data.read_ + + :param match: A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. (required) + :type match: List[str] + :param start: The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. + :type start: QueryTime + :param end: The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. + :type end: QueryTime + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_series_v1_serialize( + match=match, + start=start, + end=end, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SeriesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_series_v1_with_http_info( + self, + match: Annotated[ + List[Annotated[str, Field(strict=True, max_length=255)]], + Field( + max_length=100, + description="A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter.", + ), + ], + start: Annotated[ + Optional[Any], Field(description="The inclusive start timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + end: Annotated[ + Optional[Any], Field(description="The inclusive end timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[SeriesResponseV1]: + """Series Query + + The following endpoint returns the list of time series that match a specified label set. \\ **Required permissions:** _metrics-data.read_ + + :param match: A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. (required) + :type match: List[str] + :param start: The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. + :type start: QueryTime + :param end: The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. + :type end: QueryTime + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_series_v1_serialize( + match=match, + start=start, + end=end, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SeriesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_series_v1_without_preload_content( + self, + match: Annotated[ + List[Annotated[str, Field(strict=True, max_length=255)]], + Field( + max_length=100, + description="A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter.", + ), + ], + start: Annotated[ + Optional[Any], Field(description="The inclusive start timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + end: Annotated[ + Optional[Any], Field(description="The inclusive end timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Series Query + + The following endpoint returns the list of time series that match a specified label set. \\ **Required permissions:** _metrics-data.read_ + + :param match: A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. (required) + :type match: List[str] + :param start: The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. + :type start: QueryTime + :param end: The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. + :type end: QueryTime + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_series_v1_serialize( + match=match, + start=start, + end=end, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SeriesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_series_v1_serialize( + self, + match, + start, + end, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "match[]": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if match is not None: + _query_params.append(("match[]", match)) + + if start is not None: + _query_params.append(("start", start)) + + if end is not None: + _query_params.append(("end", end)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/series", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_status_build_info_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Build Information + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_build_info_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_status_build_info_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Build Information + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_build_info_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_status_build_info_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Build Information + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_build_info_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_status_build_info_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/status/buildinfo", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_status_config_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Config + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_config_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_status_config_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Config + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_config_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_status_config_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Config + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_config_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_status_config_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/status/config", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_status_flags_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Flags + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_flags_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_status_flags_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Flags + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_flags_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_status_flags_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Flags + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_flags_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_status_flags_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/status/flags", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_status_runtime_info_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Runtime Information + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_runtime_info_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_status_runtime_info_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Runtime Information + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_runtime_info_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_status_runtime_info_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Runtime Information + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_runtime_info_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_status_runtime_info_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/status/runtimeinfo", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_status_tsdb_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """TSDB Stats + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_tsdb_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_status_tsdb_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """TSDB Stats + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_tsdb_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_status_tsdb_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """TSDB Stats + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_tsdb_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_status_tsdb_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/status/tsdb", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_status_wal_replay_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """WAL Replay + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_wal_replay_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_status_wal_replay_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """WAL Replay + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_wal_replay_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_status_wal_replay_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """WAL Replay + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_status_wal_replay_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_status_wal_replay_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/status/walreplay", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_targets_metadata_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Querying target metadata + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_targets_metadata_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_targets_metadata_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Querying target metadata + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_targets_metadata_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_targets_metadata_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Querying target metadata + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_targets_metadata_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_targets_metadata_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/targets/metadata", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_targets_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Targets + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_targets_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_targets_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Targets + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_targets_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_targets_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Targets + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_targets_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_targets_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/prometheus/api/v1/targets", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_admin_tsdb_clean_tombstones_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Clean Tombstones + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_admin_tsdb_clean_tombstones_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_admin_tsdb_clean_tombstones_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Clean Tombstones + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_admin_tsdb_clean_tombstones_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_admin_tsdb_clean_tombstones_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Clean Tombstones + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_admin_tsdb_clean_tombstones_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_admin_tsdb_clean_tombstones_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/prometheus/api/v1/admin/tsdb/clean_tombstones", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_admin_tsdb_delete_series_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Series + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_admin_tsdb_delete_series_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_admin_tsdb_delete_series_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Series + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_admin_tsdb_delete_series_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_admin_tsdb_delete_series_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Series + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_admin_tsdb_delete_series_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_admin_tsdb_delete_series_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/prometheus/api/v1/admin/tsdb/delete_series", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_admin_tsdb_snapshot_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Snapshot + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_admin_tsdb_snapshot_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_admin_tsdb_snapshot_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Snapshot + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_admin_tsdb_snapshot_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_admin_tsdb_snapshot_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Snapshot + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_admin_tsdb_snapshot_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_admin_tsdb_snapshot_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/prometheus/api/v1/admin/tsdb/snapshot", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_exemplars_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Query Exemplars + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_exemplars_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_exemplars_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Query Exemplars + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_exemplars_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_exemplars_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Query Exemplars + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_exemplars_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_exemplars_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/query_exemplars", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_format_query_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Format Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_format_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_format_query_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Format Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_format_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_format_query_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Format Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_format_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_format_query_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/format_query", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_labels_v1( + self, + start: Annotated[ + Optional[Any], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + end: Annotated[Optional[Any], Field(description="UNSUPPORTED - Sysdig does not support this parameter.")] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="A repeated series selector argument that specifies the series from which to read the label names." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> LabelsResponseV1: + """Labels Query + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param start: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type start: QueryTime + :param end: UNSUPPORTED - Sysdig does not support this parameter. + :type end: QueryTime + :param match: A repeated series selector argument that specifies the series from which to read the label names. + :type match: List[str] + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_labels_v1_serialize( + start=start, + end=end, + match=match, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "LabelsResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_labels_v1_with_http_info( + self, + start: Annotated[ + Optional[Any], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + end: Annotated[Optional[Any], Field(description="UNSUPPORTED - Sysdig does not support this parameter.")] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="A repeated series selector argument that specifies the series from which to read the label names." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[LabelsResponseV1]: + """Labels Query + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param start: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type start: QueryTime + :param end: UNSUPPORTED - Sysdig does not support this parameter. + :type end: QueryTime + :param match: A repeated series selector argument that specifies the series from which to read the label names. + :type match: List[str] + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_labels_v1_serialize( + start=start, + end=end, + match=match, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "LabelsResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_labels_v1_without_preload_content( + self, + start: Annotated[ + Optional[Any], + Field( + description="UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation." + ), + ] = None, + end: Annotated[Optional[Any], Field(description="UNSUPPORTED - Sysdig does not support this parameter.")] = None, + match: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]], + Field( + description="A repeated series selector argument that specifies the series from which to read the label names." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Labels Query + + The following endpoint returns a list of label names: \\ **Required permissions:** _metrics-data.read_ + + :param start: UNSUPPORTED - This parameter is not supported due to the Sysdig's specific implementation. + :type start: QueryTime + :param end: UNSUPPORTED - Sysdig does not support this parameter. + :type end: QueryTime + :param match: A repeated series selector argument that specifies the series from which to read the label names. + :type match: List[str] + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_labels_v1_serialize( + start=start, + end=end, + match=match, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "LabelsResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_labels_v1_serialize( + self, + start, + end, + match, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "match[]": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if start is not None: + _query_params.append(("start", start)) + + if end is not None: + _query_params.append(("end", end)) + + if match is not None: + _query_params.append(("match[]", match)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/labels", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_parse_query_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Parse Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_parse_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_parse_query_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Parse Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_parse_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_parse_query_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Parse Query + + This endpoint is NOT SUPPORTED. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_parse_query_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "410": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_parse_query_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/parse_query", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_query_range_v1( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + start: Annotated[ + Any, Field(description="The inclusive start timestamp of the query range as RFC3339 or a unix timestamp.") + ], + end: Annotated[Any, Field(description="The inclusive end timestamp of the query range as RFC3339 or a unix timestamp.")], + step: Annotated[ + Any, + Field(description="The query resolution step width, specified as a duration or a floating-point number of seconds."), + ], + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> QueryResponseV1: + """Range Query + + This endpoint evaluates an expression query over a specified time range. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param start: The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type start: QueryTime + :param end: The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type end: QueryTime + :param step: The query resolution step width, specified as a duration or a floating-point number of seconds. (required) + :type step: GetQueryRangeV1StepParameter + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_query_range_v1_serialize( + query=query, + start=start, + end=end, + step=step, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_query_range_v1_with_http_info( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + start: Annotated[ + Any, Field(description="The inclusive start timestamp of the query range as RFC3339 or a unix timestamp.") + ], + end: Annotated[Any, Field(description="The inclusive end timestamp of the query range as RFC3339 or a unix timestamp.")], + step: Annotated[ + Any, + Field(description="The query resolution step width, specified as a duration or a floating-point number of seconds."), + ], + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[QueryResponseV1]: + """Range Query + + This endpoint evaluates an expression query over a specified time range. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param start: The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type start: QueryTime + :param end: The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type end: QueryTime + :param step: The query resolution step width, specified as a duration or a floating-point number of seconds. (required) + :type step: GetQueryRangeV1StepParameter + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_query_range_v1_serialize( + query=query, + start=start, + end=end, + step=step, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_query_range_v1_without_preload_content( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + start: Annotated[ + Any, Field(description="The inclusive start timestamp of the query range as RFC3339 or a unix timestamp.") + ], + end: Annotated[Any, Field(description="The inclusive end timestamp of the query range as RFC3339 or a unix timestamp.")], + step: Annotated[ + Any, + Field(description="The query resolution step width, specified as a duration or a floating-point number of seconds."), + ], + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Range Query + + This endpoint evaluates an expression query over a specified time range. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param start: The inclusive start timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type start: QueryTime + :param end: The inclusive end timestamp of the query range as RFC3339 or a unix timestamp. (required) + :type end: QueryTime + :param step: The query resolution step width, specified as a duration or a floating-point number of seconds. (required) + :type step: GetQueryRangeV1StepParameter + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_query_range_v1_serialize( + query=query, + start=start, + end=end, + step=step, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_query_range_v1_serialize( + self, + query, + start, + end, + step, + timeout, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if query is not None: + _query_params.append(("query", query)) + + if start is not None: + _query_params.append(("start", start)) + + if end is not None: + _query_params.append(("end", end)) + + if step is not None: + _query_params.append(("step", step)) + + if timeout is not None: + _query_params.append(("timeout", timeout)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/query_range", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_query_v1( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + time: Annotated[ + Optional[Any], + Field( + description="The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used." + ), + ] = None, + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> QueryResponseV1: + """Instant Query + + This endpoint evaluates an instant query at a single point in time. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param time: The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. + :type time: QueryTime + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_query_v1_serialize( + query=query, + time=time, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_query_v1_with_http_info( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + time: Annotated[ + Optional[Any], + Field( + description="The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used." + ), + ] = None, + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[QueryResponseV1]: + """Instant Query + + This endpoint evaluates an instant query at a single point in time. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param time: The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. + :type time: QueryTime + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_query_v1_serialize( + query=query, + time=time, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_query_v1_without_preload_content( + self, + query: Annotated[str, Field(strict=True, max_length=50000, description="The Prometheus expression query string.")], + time: Annotated[ + Optional[Any], + Field( + description="The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used." + ), + ] = None, + timeout: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=50)]], + Field(description="The evaluation timeout. The default is 2 minutes."), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="The maximum number of returned series. To disable the limit, set the value to 0."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Instant Query + + This endpoint evaluates an instant query at a single point in time. \\ **Required permissions:** _metrics-data.read_ + + :param query: The Prometheus expression query string. (required) + :type query: str + :param time: The evaluation timestamp as RFC3339 or a unix timestamp. If omitted, the current server time is used. + :type time: QueryTime + :param timeout: The evaluation timeout. The default is 2 minutes. + :type timeout: str + :param limit: The maximum number of returned series. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_query_v1_serialize( + query=query, + time=time, + timeout=timeout, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_query_v1_serialize( + self, + query, + time, + timeout, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if query is not None: + _query_params.append(("query", query)) + + if time is not None: + _query_params.append(("time", time)) + + if timeout is not None: + _query_params.append(("timeout", timeout)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/query", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_series_v1( + self, + match: Annotated[ + List[Annotated[str, Field(strict=True, max_length=255)]], + Field( + max_length=100, + description="A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter.", + ), + ], + start: Annotated[ + Optional[Any], Field(description="The inclusive start timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + end: Annotated[ + Optional[Any], Field(description="The inclusive end timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> SeriesResponseV1: + """Series Query + + The following endpoint returns the list of time series that match a specified label set. \\ **Required permissions:** _metrics-data.read_ + + :param match: A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. (required) + :type match: List[str] + :param start: The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. + :type start: QueryTime + :param end: The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. + :type end: QueryTime + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_series_v1_serialize( + match=match, + start=start, + end=end, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SeriesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_series_v1_with_http_info( + self, + match: Annotated[ + List[Annotated[str, Field(strict=True, max_length=255)]], + Field( + max_length=100, + description="A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter.", + ), + ], + start: Annotated[ + Optional[Any], Field(description="The inclusive start timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + end: Annotated[ + Optional[Any], Field(description="The inclusive end timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[SeriesResponseV1]: + """Series Query + + The following endpoint returns the list of time series that match a specified label set. \\ **Required permissions:** _metrics-data.read_ + + :param match: A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. (required) + :type match: List[str] + :param start: The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. + :type start: QueryTime + :param end: The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. + :type end: QueryTime + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_series_v1_serialize( + match=match, + start=start, + end=end, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SeriesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_series_v1_without_preload_content( + self, + match: Annotated[ + List[Annotated[str, Field(strict=True, max_length=255)]], + Field( + max_length=100, + description="A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter.", + ), + ], + start: Annotated[ + Optional[Any], Field(description="The inclusive start timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + end: Annotated[ + Optional[Any], Field(description="The inclusive end timestamp of the series query as RFC3339 or a unix timestamp.") + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field( + description="The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0." + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Series Query + + The following endpoint returns the list of time series that match a specified label set. \\ **Required permissions:** _metrics-data.read_ + + :param match: A repeated series selector argument that specifies the series to return. You must provide at least one match[] parameter. (required) + :type match: List[str] + :param start: The inclusive start timestamp of the series query as RFC3339 or a unix timestamp. + :type start: QueryTime + :param end: The inclusive end timestamp of the series query as RFC3339 or a unix timestamp. + :type end: QueryTime + :param limit: The maximum number of returned series. The limit is capped at 10,000. To disable the limit, set the value to 0. + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_series_v1_serialize( + match=match, + start=start, + end=end, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SeriesResponseV1", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "422": "PrometheusError", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_series_v1_serialize( + self, + match, + start, + end, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "match[]": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if match is not None: + _query_params.append(("match[]", match)) + + if start is not None: + _query_params.append(("start", start)) + + if end is not None: + _query_params.append(("end", end)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/series", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def remote_write_v1( + self, + body: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> str: + """Ingest metric data (remote write) + + Accepts a Protobuf-encoded Snappy-compressed request containing time series data. Used for remote write integrations. \\ **Required permissions:** _ingest.prws_ + + :param body: (required) + :type body: bytearray + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._remote_write_v1_serialize( + body=body, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def remote_write_v1_with_http_info( + self, + body: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[str]: + """Ingest metric data (remote write) + + Accepts a Protobuf-encoded Snappy-compressed request containing time series data. Used for remote write integrations. \\ **Required permissions:** _ingest.prws_ + + :param body: (required) + :type body: bytearray + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._remote_write_v1_serialize( + body=body, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def remote_write_v1_without_preload_content( + self, + body: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Ingest metric data (remote write) + + Accepts a Protobuf-encoded Snappy-compressed request containing time series data. Used for remote write integrations. \\ **Required permissions:** _ingest.prws_ + + :param body: (required) + :type body: bytearray + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._remote_write_v1_serialize( + body=body, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "PrometheusError", + "401": "GetQueryV1401Response", + "404": "str", + "429": "Error", + "500": "PrometheusError", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _remote_write_v1_serialize( + self, + body, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if body is not None: + # convert to byte array if the input is a file name (str) + if isinstance(body, str): + with open(body, "rb") as _fp: + _body_params = _fp.read() + elif isinstance(body, tuple): + # drop the filename from the tuple + _body_params = body[1] + else: + _body_params = body + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["text/plain", "application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/x-protobuf"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/prometheus/api/v1/write", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/reporting_api.py b/sysdig_client/api/reporting_api.py new file mode 100644 index 00000000..f30de055 --- /dev/null +++ b/sysdig_client/api/reporting_api.py @@ -0,0 +1,660 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import field_validator +from sysdig_client.models.list_jobs import ListJobs +from sysdig_client.models.list_schedules import ListSchedules + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class ReportingApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def list_jobs_v1( + self, + schedule_id: Annotated[str, Field(strict=True, max_length=512, description="ID of the Schedule")], + report_id: Annotated[ + Optional[Annotated[int, Field(le=1000000, strict=True, ge=0)]], Field(description="ID of the Report") + ] = None, + is_report_template: Annotated[ + Optional[StrictStr], Field(description="Indicates whether the report is a template.") + ] = None, + completed_on: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="Date the job was completed in epoch milliseconds."), + ] = None, + job_type: Annotated[Optional[StrictStr], Field(description="Type of the job.")] = None, + status: Annotated[Optional[StrictStr], Field(description="Status of the job.")] = None, + kind: Annotated[Optional[StrictStr], Field(description="Kind of the report.")] = None, + policies: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="List of policy IDs in string format."), + ] = None, + zones: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], Field(description="List of zone IDs in string format.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListJobs: + """List Report Job Runs + + Retrieve a list of Report Job runs.\\ \\ **Required permissions:** platform.reporting.report-downloads.read + + :param schedule_id: ID of the Schedule (required) + :type schedule_id: str + :param report_id: ID of the Report + :type report_id: int + :param is_report_template: Indicates whether the report is a template. + :type is_report_template: str + :param completed_on: Date the job was completed in epoch milliseconds. + :type completed_on: int + :param job_type: Type of the job. + :type job_type: str + :param status: Status of the job. + :type status: str + :param kind: Kind of the report. + :type kind: str + :param policies: List of policy IDs in string format. + :type policies: str + :param zones: List of zone IDs in string format. + :type zones: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_jobs_v1_serialize( + schedule_id=schedule_id, + report_id=report_id, + is_report_template=is_report_template, + completed_on=completed_on, + job_type=job_type, + status=status, + kind=kind, + policies=policies, + zones=zones, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListJobs", + "400": "Error", + "401": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def list_jobs_v1_with_http_info( + self, + schedule_id: Annotated[str, Field(strict=True, max_length=512, description="ID of the Schedule")], + report_id: Annotated[ + Optional[Annotated[int, Field(le=1000000, strict=True, ge=0)]], Field(description="ID of the Report") + ] = None, + is_report_template: Annotated[ + Optional[StrictStr], Field(description="Indicates whether the report is a template.") + ] = None, + completed_on: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="Date the job was completed in epoch milliseconds."), + ] = None, + job_type: Annotated[Optional[StrictStr], Field(description="Type of the job.")] = None, + status: Annotated[Optional[StrictStr], Field(description="Status of the job.")] = None, + kind: Annotated[Optional[StrictStr], Field(description="Kind of the report.")] = None, + policies: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="List of policy IDs in string format."), + ] = None, + zones: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], Field(description="List of zone IDs in string format.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListJobs]: + """List Report Job Runs + + Retrieve a list of Report Job runs.\\ \\ **Required permissions:** platform.reporting.report-downloads.read + + :param schedule_id: ID of the Schedule (required) + :type schedule_id: str + :param report_id: ID of the Report + :type report_id: int + :param is_report_template: Indicates whether the report is a template. + :type is_report_template: str + :param completed_on: Date the job was completed in epoch milliseconds. + :type completed_on: int + :param job_type: Type of the job. + :type job_type: str + :param status: Status of the job. + :type status: str + :param kind: Kind of the report. + :type kind: str + :param policies: List of policy IDs in string format. + :type policies: str + :param zones: List of zone IDs in string format. + :type zones: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_jobs_v1_serialize( + schedule_id=schedule_id, + report_id=report_id, + is_report_template=is_report_template, + completed_on=completed_on, + job_type=job_type, + status=status, + kind=kind, + policies=policies, + zones=zones, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListJobs", + "400": "Error", + "401": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def list_jobs_v1_without_preload_content( + self, + schedule_id: Annotated[str, Field(strict=True, max_length=512, description="ID of the Schedule")], + report_id: Annotated[ + Optional[Annotated[int, Field(le=1000000, strict=True, ge=0)]], Field(description="ID of the Report") + ] = None, + is_report_template: Annotated[ + Optional[StrictStr], Field(description="Indicates whether the report is a template.") + ] = None, + completed_on: Annotated[ + Optional[Annotated[int, Field(strict=True, ge=0)]], + Field(description="Date the job was completed in epoch milliseconds."), + ] = None, + job_type: Annotated[Optional[StrictStr], Field(description="Type of the job.")] = None, + status: Annotated[Optional[StrictStr], Field(description="Status of the job.")] = None, + kind: Annotated[Optional[StrictStr], Field(description="Kind of the report.")] = None, + policies: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="List of policy IDs in string format."), + ] = None, + zones: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], Field(description="List of zone IDs in string format.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Report Job Runs + + Retrieve a list of Report Job runs.\\ \\ **Required permissions:** platform.reporting.report-downloads.read + + :param schedule_id: ID of the Schedule (required) + :type schedule_id: str + :param report_id: ID of the Report + :type report_id: int + :param is_report_template: Indicates whether the report is a template. + :type is_report_template: str + :param completed_on: Date the job was completed in epoch milliseconds. + :type completed_on: int + :param job_type: Type of the job. + :type job_type: str + :param status: Status of the job. + :type status: str + :param kind: Kind of the report. + :type kind: str + :param policies: List of policy IDs in string format. + :type policies: str + :param zones: List of zone IDs in string format. + :type zones: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_jobs_v1_serialize( + schedule_id=schedule_id, + report_id=report_id, + is_report_template=is_report_template, + completed_on=completed_on, + job_type=job_type, + status=status, + kind=kind, + policies=policies, + zones=zones, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListJobs", + "400": "Error", + "401": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _list_jobs_v1_serialize( + self, + schedule_id, + report_id, + is_report_template, + completed_on, + job_type, + status, + kind, + policies, + zones, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if schedule_id is not None: + _query_params.append(("scheduleId", schedule_id)) + + if report_id is not None: + _query_params.append(("reportId", report_id)) + + if is_report_template is not None: + _query_params.append(("isReportTemplate", is_report_template)) + + if completed_on is not None: + _query_params.append(("completedOn", completed_on)) + + if job_type is not None: + _query_params.append(("jobType", job_type)) + + if status is not None: + _query_params.append(("status", status)) + + if kind is not None: + _query_params.append(("kind", kind)) + + if policies is not None: + _query_params.append(("policies", policies)) + + if zones is not None: + _query_params.append(("zones", zones)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/reporting/v1/jobs", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def list_schedules_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListSchedules: + """List Report Schedules + + Retrieve a paginated list of Report Schedules.\\ \\ **Required permissions:** platform.reporting.schedules.read + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_schedules_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListSchedules", + "400": "Error", + "401": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def list_schedules_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListSchedules]: + """List Report Schedules + + Retrieve a paginated list of Report Schedules.\\ \\ **Required permissions:** platform.reporting.schedules.read + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_schedules_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListSchedules", + "400": "Error", + "401": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def list_schedules_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Report Schedules + + Retrieve a paginated list of Report Schedules.\\ \\ **Required permissions:** platform.reporting.schedules.read + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_schedules_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListSchedules", + "400": "Error", + "401": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _list_schedules_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/reporting/v1/schedules", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/response_actions_api.py b/sysdig_client/api/response_actions_api.py new file mode 100644 index 00000000..9188ee4d --- /dev/null +++ b/sysdig_client/api/response_actions_api.py @@ -0,0 +1,1602 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import StrictBytes +from sysdig_client.models.action_execution import ActionExecution +from sysdig_client.models.action_executions import ActionExecutions +from sysdig_client.models.actions import Actions +from sysdig_client.models.submit_action_execution_request import SubmitActionExecutionRequest + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class ResponseActionsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_action_execution_file_acquire_v1( + self, + action_execution_id: Annotated[str, Field(strict=True, max_length=64, description="ID of the action execution")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> bytearray: + """Get Acquired File + + Download a Capture file created by an executed \"File Acquire\" Response Action.\\ \\ **Required permissions:** _data-gathering-response-actions.read_ + + :param action_execution_id: ID of the action execution (required) + :type action_execution_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_action_execution_file_acquire_v1_serialize( + action_execution_id=action_execution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "bytearray", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_action_execution_file_acquire_v1_with_http_info( + self, + action_execution_id: Annotated[str, Field(strict=True, max_length=64, description="ID of the action execution")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[bytearray]: + """Get Acquired File + + Download a Capture file created by an executed \"File Acquire\" Response Action.\\ \\ **Required permissions:** _data-gathering-response-actions.read_ + + :param action_execution_id: ID of the action execution (required) + :type action_execution_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_action_execution_file_acquire_v1_serialize( + action_execution_id=action_execution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "bytearray", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_action_execution_file_acquire_v1_without_preload_content( + self, + action_execution_id: Annotated[str, Field(strict=True, max_length=64, description="ID of the action execution")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Acquired File + + Download a Capture file created by an executed \"File Acquire\" Response Action.\\ \\ **Required permissions:** _data-gathering-response-actions.read_ + + :param action_execution_id: ID of the action execution (required) + :type action_execution_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_action_execution_file_acquire_v1_serialize( + action_execution_id=action_execution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "bytearray", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_action_execution_file_acquire_v1_serialize( + self, + action_execution_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if action_execution_id is not None: + _path_params["actionExecutionId"] = action_execution_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/octet-stream", "application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/response-actions/v1alpha1/action-executions/{actionExecutionId}/acquired-file", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_action_execution_v1( + self, + action_execution_id: Annotated[str, Field(strict=True, max_length=64, description="ID of the action execution")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ActionExecution: + """Get Action Execution + + Get an action execution.\\ \\ **Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. Results will include the executions of the Response Actions you are allowed to see. + + :param action_execution_id: ID of the action execution (required) + :type action_execution_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_action_execution_v1_serialize( + action_execution_id=action_execution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ActionExecution", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_action_execution_v1_with_http_info( + self, + action_execution_id: Annotated[str, Field(strict=True, max_length=64, description="ID of the action execution")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ActionExecution]: + """Get Action Execution + + Get an action execution.\\ \\ **Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. Results will include the executions of the Response Actions you are allowed to see. + + :param action_execution_id: ID of the action execution (required) + :type action_execution_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_action_execution_v1_serialize( + action_execution_id=action_execution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ActionExecution", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_action_execution_v1_without_preload_content( + self, + action_execution_id: Annotated[str, Field(strict=True, max_length=64, description="ID of the action execution")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Action Execution + + Get an action execution.\\ \\ **Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. Results will include the executions of the Response Actions you are allowed to see. + + :param action_execution_id: ID of the action execution (required) + :type action_execution_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_action_execution_v1_serialize( + action_execution_id=action_execution_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ActionExecution", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_action_execution_v1_serialize( + self, + action_execution_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if action_execution_id is not None: + _path_params["actionExecutionId"] = action_execution_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/response-actions/v1alpha1/action-executions/{actionExecutionId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_action_executionsv1( + self, + caller_id: Optional[Annotated[str, Field(strict=True, max_length=128)]] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ActionExecutions: + """Returns the list of Response Actions executions. You can filter them with the available query parameters. + + Returns a list of action executions. **Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. + + :param caller_id: + :type caller_id: str + :param filter: + :type filter: str + :param limit: The number of items to return + :type limit: int + :param offset: The offset number of items to start with + :type offset: int + :param var_from: + :type var_from: int + :param to: + :type to: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_action_executionsv1_serialize( + caller_id=caller_id, + filter=filter, + limit=limit, + offset=offset, + var_from=var_from, + to=to, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ActionExecutions", + "400": "InvalidRequest", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_action_executionsv1_with_http_info( + self, + caller_id: Optional[Annotated[str, Field(strict=True, max_length=128)]] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ActionExecutions]: + """Returns the list of Response Actions executions. You can filter them with the available query parameters. + + Returns a list of action executions. **Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. + + :param caller_id: + :type caller_id: str + :param filter: + :type filter: str + :param limit: The number of items to return + :type limit: int + :param offset: The offset number of items to start with + :type offset: int + :param var_from: + :type var_from: int + :param to: + :type to: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_action_executionsv1_serialize( + caller_id=caller_id, + filter=filter, + limit=limit, + offset=offset, + var_from=var_from, + to=to, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ActionExecutions", + "400": "InvalidRequest", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_action_executionsv1_without_preload_content( + self, + caller_id: Optional[Annotated[str, Field(strict=True, max_length=128)]] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Returns the list of Response Actions executions. You can filter them with the available query parameters. + + Returns a list of action executions. **Required permissions:** _containment-response-actions.read_ or _data-gathering-response-actions.read_, depending on the action type. + + :param caller_id: + :type caller_id: str + :param filter: + :type filter: str + :param limit: The number of items to return + :type limit: int + :param offset: The offset number of items to start with + :type offset: int + :param var_from: + :type var_from: int + :param to: + :type to: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_action_executionsv1_serialize( + caller_id=caller_id, + filter=filter, + limit=limit, + offset=offset, + var_from=var_from, + to=to, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ActionExecutions", + "400": "InvalidRequest", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_action_executionsv1_serialize( + self, + caller_id, + filter, + limit, + offset, + var_from, + to, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if caller_id is not None: + _query_params.append(("callerId", caller_id)) + + if filter is not None: + _query_params.append(("filter", filter)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if offset is not None: + _query_params.append(("offset", offset)) + + if var_from is not None: + _query_params.append(("from", var_from)) + + if to is not None: + _query_params.append(("to", to)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/response-actions/v1alpha1/action-executions", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_actions_v1( + self, + context: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=1024)]]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Actions: + """Get All Response Actions + + Get the list of available executable Response Actions.\\ \\ **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + :param context: + :type context: Dict[str, str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_actions_v1_serialize( + context=context, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "Actions", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_actions_v1_with_http_info( + self, + context: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=1024)]]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[Actions]: + """Get All Response Actions + + Get the list of available executable Response Actions.\\ \\ **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + :param context: + :type context: Dict[str, str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_actions_v1_serialize( + context=context, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "Actions", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_actions_v1_without_preload_content( + self, + context: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=1024)]]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get All Response Actions + + Get the list of available executable Response Actions.\\ \\ **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + :param context: + :type context: Dict[str, str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_actions_v1_serialize( + context=context, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "Actions", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_actions_v1_serialize( + self, + context, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if context is not None: + _query_params.append(("context", context)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/response-actions/v1alpha1/actions", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def submit_action_executionv1( + self, + submit_action_execution_request: Annotated[ + SubmitActionExecutionRequest, Field(description="Configuration for the new integration") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ActionExecution: + """Submit the execution of an action + + Submits the execution of an action. The action will be executed asynchronously and the response will contain the action execution ID.\\ **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + :param submit_action_execution_request: Configuration for the new integration (required) + :type submit_action_execution_request: SubmitActionExecutionRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._submit_action_executionv1_serialize( + submit_action_execution_request=submit_action_execution_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ActionExecution", + "400": "InvalidRequest1", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def submit_action_executionv1_with_http_info( + self, + submit_action_execution_request: Annotated[ + SubmitActionExecutionRequest, Field(description="Configuration for the new integration") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ActionExecution]: + """Submit the execution of an action + + Submits the execution of an action. The action will be executed asynchronously and the response will contain the action execution ID.\\ **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + :param submit_action_execution_request: Configuration for the new integration (required) + :type submit_action_execution_request: SubmitActionExecutionRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._submit_action_executionv1_serialize( + submit_action_execution_request=submit_action_execution_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ActionExecution", + "400": "InvalidRequest1", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def submit_action_executionv1_without_preload_content( + self, + submit_action_execution_request: Annotated[ + SubmitActionExecutionRequest, Field(description="Configuration for the new integration") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Submit the execution of an action + + Submits the execution of an action. The action will be executed asynchronously and the response will contain the action execution ID.\\ **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + :param submit_action_execution_request: Configuration for the new integration (required) + :type submit_action_execution_request: SubmitActionExecutionRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._submit_action_executionv1_serialize( + submit_action_execution_request=submit_action_execution_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ActionExecution", + "400": "InvalidRequest1", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _submit_action_executionv1_serialize( + self, + submit_action_execution_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if submit_action_execution_request is not None: + _body_params = submit_action_execution_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/secure/response-actions/v1alpha1/action-executions", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def undo_action_execution_v1( + self, + action_execution_id: Annotated[str, Field(strict=True, max_length=64, description="ID of the action execution")], + caller_id: Optional[Annotated[str, Field(strict=True, max_length=128)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ActionExecution: + """Undoes an Action Execution + + Undoes an action execution.\\ \\ **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + :param action_execution_id: ID of the action execution (required) + :type action_execution_id: str + :param caller_id: + :type caller_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._undo_action_execution_v1_serialize( + action_execution_id=action_execution_id, + caller_id=caller_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ActionExecution", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def undo_action_execution_v1_with_http_info( + self, + action_execution_id: Annotated[str, Field(strict=True, max_length=64, description="ID of the action execution")], + caller_id: Optional[Annotated[str, Field(strict=True, max_length=128)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ActionExecution]: + """Undoes an Action Execution + + Undoes an action execution.\\ \\ **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + :param action_execution_id: ID of the action execution (required) + :type action_execution_id: str + :param caller_id: + :type caller_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._undo_action_execution_v1_serialize( + action_execution_id=action_execution_id, + caller_id=caller_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ActionExecution", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def undo_action_execution_v1_without_preload_content( + self, + action_execution_id: Annotated[str, Field(strict=True, max_length=64, description="ID of the action execution")], + caller_id: Optional[Annotated[str, Field(strict=True, max_length=128)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Undoes an Action Execution + + Undoes an action execution.\\ \\ **Required permissions:** _containment-response-actions.exec_ or _data-gathering-response-actions.exec_, depending on the action type. + + :param action_execution_id: ID of the action execution (required) + :type action_execution_id: str + :param caller_id: + :type caller_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._undo_action_execution_v1_serialize( + action_execution_id=action_execution_id, + caller_id=caller_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ActionExecution", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _undo_action_execution_v1_serialize( + self, + action_execution_id, + caller_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if action_execution_id is not None: + _path_params["actionExecutionId"] = action_execution_id + # process the query parameters + if caller_id is not None: + _query_params.append(("callerId", caller_id)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/secure/response-actions/v1alpha1/action-executions/{actionExecutionId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/roles_api.py b/sysdig_client/api/roles_api.py new file mode 100644 index 00000000..df765f7e --- /dev/null +++ b/sysdig_client/api/roles_api.py @@ -0,0 +1,1352 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.get_roles_paginated_response_v1 import GetRolesPaginatedResponseV1 +from sysdig_client.models.role_request_v1 import RoleRequestV1 +from sysdig_client.models.role_response_v1 import RoleResponseV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class RolesApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_role_v1( + self, + role_request_v1: Optional[RoleRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RoleResponseV1: + """Create Role + + Create a new role.\\ \\ **Required permissions:** _roles.edit_ + + :param role_request_v1: + :type role_request_v1: RoleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_role_v1_serialize( + role_request_v1=role_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "RoleResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_role_v1_with_http_info( + self, + role_request_v1: Optional[RoleRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[RoleResponseV1]: + """Create Role + + Create a new role.\\ \\ **Required permissions:** _roles.edit_ + + :param role_request_v1: + :type role_request_v1: RoleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_role_v1_serialize( + role_request_v1=role_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "RoleResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_role_v1_without_preload_content( + self, + role_request_v1: Optional[RoleRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Role + + Create a new role.\\ \\ **Required permissions:** _roles.edit_ + + :param role_request_v1: + :type role_request_v1: RoleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_role_v1_serialize( + role_request_v1=role_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "RoleResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_role_v1_serialize( + self, + role_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if role_request_v1 is not None: + _body_params = role_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/roles", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_role_by_id_v1( + self, + role_id: Annotated[int, Field(strict=True, ge=0, description="The role id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Role + + Delete a role by its ID.\\ \\ **Required permissions:** _roles.edit_ + + :param role_id: The role id. (required) + :type role_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_role_by_id_v1_serialize( + role_id=role_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_role_by_id_v1_with_http_info( + self, + role_id: Annotated[int, Field(strict=True, ge=0, description="The role id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Role + + Delete a role by its ID.\\ \\ **Required permissions:** _roles.edit_ + + :param role_id: The role id. (required) + :type role_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_role_by_id_v1_serialize( + role_id=role_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_role_by_id_v1_without_preload_content( + self, + role_id: Annotated[int, Field(strict=True, ge=0, description="The role id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Role + + Delete a role by its ID.\\ \\ **Required permissions:** _roles.edit_ + + :param role_id: The role id. (required) + :type role_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_role_by_id_v1_serialize( + role_id=role_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_role_by_id_v1_serialize( + self, + role_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if role_id is not None: + _path_params["roleId"] = role_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/roles/{roleId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_role_by_id_v1( + self, + role_id: Annotated[int, Field(strict=True, ge=0, description="The role id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RoleResponseV1: + """Get Role + + Return a role by its ID.\\ \\ **Required permissions:** _roles.read_ + + :param role_id: The role id. (required) + :type role_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_role_by_id_v1_serialize( + role_id=role_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RoleResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_role_by_id_v1_with_http_info( + self, + role_id: Annotated[int, Field(strict=True, ge=0, description="The role id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[RoleResponseV1]: + """Get Role + + Return a role by its ID.\\ \\ **Required permissions:** _roles.read_ + + :param role_id: The role id. (required) + :type role_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_role_by_id_v1_serialize( + role_id=role_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RoleResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_role_by_id_v1_without_preload_content( + self, + role_id: Annotated[int, Field(strict=True, ge=0, description="The role id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Role + + Return a role by its ID.\\ \\ **Required permissions:** _roles.read_ + + :param role_id: The role id. (required) + :type role_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_role_by_id_v1_serialize( + role_id=role_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RoleResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_role_by_id_v1_serialize( + self, + role_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if role_id is not None: + _path_params["roleId"] = role_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/roles/{roleId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_roles_v1( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetRolesPaginatedResponseV1: + """List Roles + + Retrieve a paginated list of roles.\\ \\ **Required permissions:** _roles.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_roles_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetRolesPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_roles_v1_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetRolesPaginatedResponseV1]: + """List Roles + + Retrieve a paginated list of roles.\\ \\ **Required permissions:** _roles.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_roles_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetRolesPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_roles_v1_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Roles + + Retrieve a paginated list of roles.\\ \\ **Required permissions:** _roles.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_roles_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetRolesPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_roles_v1_serialize( + self, + offset, + limit, + orderby, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if orderby is not None: + _query_params.append(("orderby", orderby)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/roles", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_role_by_id_v1( + self, + role_id: Annotated[int, Field(strict=True, ge=0, description="The role id.")], + role_request_v1: Optional[RoleRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RoleResponseV1: + """Update Role + + Update a role by its ID.\\ \\ **Required permissions:** _roles.edit_ + + :param role_id: The role id. (required) + :type role_id: int + :param role_request_v1: + :type role_request_v1: RoleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_role_by_id_v1_serialize( + role_id=role_id, + role_request_v1=role_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RoleResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_role_by_id_v1_with_http_info( + self, + role_id: Annotated[int, Field(strict=True, ge=0, description="The role id.")], + role_request_v1: Optional[RoleRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[RoleResponseV1]: + """Update Role + + Update a role by its ID.\\ \\ **Required permissions:** _roles.edit_ + + :param role_id: The role id. (required) + :type role_id: int + :param role_request_v1: + :type role_request_v1: RoleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_role_by_id_v1_serialize( + role_id=role_id, + role_request_v1=role_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RoleResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_role_by_id_v1_without_preload_content( + self, + role_id: Annotated[int, Field(strict=True, ge=0, description="The role id.")], + role_request_v1: Optional[RoleRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Role + + Update a role by its ID.\\ \\ **Required permissions:** _roles.edit_ + + :param role_id: The role id. (required) + :type role_id: int + :param role_request_v1: + :type role_request_v1: RoleRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_role_by_id_v1_serialize( + role_id=role_id, + role_request_v1=role_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RoleResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_role_by_id_v1_serialize( + self, + role_id, + role_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if role_id is not None: + _path_params["roleId"] = role_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if role_request_v1 is not None: + _body_params = role_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/roles/{roleId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/sbom_api.py b/sysdig_client/api/sbom_api.py new file mode 100644 index 00000000..7bf26758 --- /dev/null +++ b/sysdig_client/api/sbom_api.py @@ -0,0 +1,356 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import field_validator +from sysdig_client.models.sbom_result_response import SbomResultResponse + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class SBOMApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_sbomv1beta1( + self, + asset_id: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=512)]], + Field( + description="The ID of the asset for which we want to retrieve the SBOM. It's the imageId for container-image and the hostId for hosts Provide this with assetType if not providing bomIdentifier " + ), + ] = None, + asset_type: Annotated[ + Optional[StrictStr], + Field( + description="The type of the asset for which we want to retrieve the SBOM. Provide this with assetId if not providing bomIdentifier" + ), + ] = None, + bom_identifier: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=512)]], + Field(description="The ID of a single SBOM. Either provide this or both assetId and assetType"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> SbomResultResponse: + """Get SBOM + + Retrieve a SBOM (Software Bill Of Material) in CycloneDX format. + + :param asset_id: The ID of the asset for which we want to retrieve the SBOM. It's the imageId for container-image and the hostId for hosts Provide this with assetType if not providing bomIdentifier + :type asset_id: str + :param asset_type: The type of the asset for which we want to retrieve the SBOM. Provide this with assetId if not providing bomIdentifier + :type asset_type: str + :param bom_identifier: The ID of a single SBOM. Either provide this or both assetId and assetType + :type bom_identifier: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sbomv1beta1_serialize( + asset_id=asset_id, + asset_type=asset_type, + bom_identifier=bom_identifier, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SbomResultResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "406": "str", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_sbomv1beta1_with_http_info( + self, + asset_id: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=512)]], + Field( + description="The ID of the asset for which we want to retrieve the SBOM. It's the imageId for container-image and the hostId for hosts Provide this with assetType if not providing bomIdentifier " + ), + ] = None, + asset_type: Annotated[ + Optional[StrictStr], + Field( + description="The type of the asset for which we want to retrieve the SBOM. Provide this with assetId if not providing bomIdentifier" + ), + ] = None, + bom_identifier: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=512)]], + Field(description="The ID of a single SBOM. Either provide this or both assetId and assetType"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[SbomResultResponse]: + """Get SBOM + + Retrieve a SBOM (Software Bill Of Material) in CycloneDX format. + + :param asset_id: The ID of the asset for which we want to retrieve the SBOM. It's the imageId for container-image and the hostId for hosts Provide this with assetType if not providing bomIdentifier + :type asset_id: str + :param asset_type: The type of the asset for which we want to retrieve the SBOM. Provide this with assetId if not providing bomIdentifier + :type asset_type: str + :param bom_identifier: The ID of a single SBOM. Either provide this or both assetId and assetType + :type bom_identifier: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sbomv1beta1_serialize( + asset_id=asset_id, + asset_type=asset_type, + bom_identifier=bom_identifier, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SbomResultResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "406": "str", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_sbomv1beta1_without_preload_content( + self, + asset_id: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=512)]], + Field( + description="The ID of the asset for which we want to retrieve the SBOM. It's the imageId for container-image and the hostId for hosts Provide this with assetType if not providing bomIdentifier " + ), + ] = None, + asset_type: Annotated[ + Optional[StrictStr], + Field( + description="The type of the asset for which we want to retrieve the SBOM. Provide this with assetId if not providing bomIdentifier" + ), + ] = None, + bom_identifier: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=512)]], + Field(description="The ID of a single SBOM. Either provide this or both assetId and assetType"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get SBOM + + Retrieve a SBOM (Software Bill Of Material) in CycloneDX format. + + :param asset_id: The ID of the asset for which we want to retrieve the SBOM. It's the imageId for container-image and the hostId for hosts Provide this with assetType if not providing bomIdentifier + :type asset_id: str + :param asset_type: The type of the asset for which we want to retrieve the SBOM. Provide this with assetId if not providing bomIdentifier + :type asset_type: str + :param bom_identifier: The ID of a single SBOM. Either provide this or both assetId and assetType + :type bom_identifier: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sbomv1beta1_serialize( + asset_id=asset_id, + asset_type=asset_type, + bom_identifier=bom_identifier, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SbomResultResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "406": "str", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_sbomv1beta1_serialize( + self, + asset_id, + asset_type, + bom_identifier, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if asset_id is not None: + _query_params.append(("assetId", asset_id)) + + if asset_type is not None: + _query_params.append(("assetType", asset_type)) + + if bom_identifier is not None: + _query_params.append(("bomIdentifier", bom_identifier)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1beta1/sboms", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/secure_events_api.py b/sysdig_client/api/secure_events_api.py new file mode 100644 index 00000000..bbde6b67 --- /dev/null +++ b/sysdig_client/api/secure_events_api.py @@ -0,0 +1,833 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.event import Event +from sysdig_client.models.list_events_response import ListEventsResponse +from sysdig_client.models.supported_filters_response import SupportedFiltersResponse + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class SecureEventsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_event_v1( + self, + event_id: Annotated[str, Field(strict=True, max_length=32, description="The event id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Event: + """Get event + + Retrieves an event given its id. + + :param event_id: The event id. (required) + :type event_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_event_v1_serialize( + event_id=event_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "Event", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_event_v1_with_http_info( + self, + event_id: Annotated[str, Field(strict=True, max_length=32, description="The event id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[Event]: + """Get event + + Retrieves an event given its id. + + :param event_id: The event id. (required) + :type event_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_event_v1_serialize( + event_id=event_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "Event", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_event_v1_without_preload_content( + self, + event_id: Annotated[str, Field(strict=True, max_length=32, description="The event id.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get event + + Retrieves an event given its id. + + :param event_id: The event id. (required) + :type event_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_event_v1_serialize( + event_id=event_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "Event", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_event_v1_serialize( + self, + event_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if event_id is not None: + _path_params["eventId"] = event_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/events/v1/events/{eventId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_events_supported_filters_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> SupportedFiltersResponse: + """Get available filters + + Events can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_events_supported_filters_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SupportedFiltersResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_events_supported_filters_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[SupportedFiltersResponse]: + """Get available filters + + Events can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_events_supported_filters_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SupportedFiltersResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_events_supported_filters_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get available filters + + Events can be filtered by a set of attributes. This endpoint returns the list of those for which filtering is supported. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_events_supported_filters_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SupportedFiltersResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_events_supported_filters_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/events/v1/supported-filters", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_events_v1( + self, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + zones: Optional[ + Annotated[List[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]], Field(max_length=100)] + ] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Optional[Annotated[int, Field(le=200, strict=True, ge=1)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListEventsResponse: + """List events + + Retrieves the list of events matching the expressed search criteria. The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. The time criteria is required and can be specified in two different ways: - Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. - Using a `cursor` the events returned will be in the before, after or around the event, depending on the event the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. The event content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels. + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param zones: + :type zones: List[int] + :param filter: + :type filter: str + :param limit: + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_events_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + zones=zones, + filter=filter, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListEventsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_events_v1_with_http_info( + self, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + zones: Optional[ + Annotated[List[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]], Field(max_length=100)] + ] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Optional[Annotated[int, Field(le=200, strict=True, ge=1)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListEventsResponse]: + """List events + + Retrieves the list of events matching the expressed search criteria. The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. The time criteria is required and can be specified in two different ways: - Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. - Using a `cursor` the events returned will be in the before, after or around the event, depending on the event the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. The event content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels. + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param zones: + :type zones: List[int] + :param filter: + :type filter: str + :param limit: + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_events_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + zones=zones, + filter=filter, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListEventsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_events_v1_without_preload_content( + self, + var_from: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + to: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = None, + cursor: Optional[Annotated[str, Field(strict=True, max_length=512)]] = None, + zones: Optional[ + Annotated[List[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]], Field(max_length=100)] + ] = None, + filter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = None, + limit: Optional[Annotated[int, Field(le=200, strict=True, ge=1)]] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List events + + Retrieves the list of events matching the expressed search criteria. The pair `from` and `to` and the `cursor` parameter are mutually exclusive. If you supply a `from` and `to` you must not supply a `cursor` and vice-versa. The time criteria is required and can be specified in two different ways: - Using `from` and `to`, the list of events within the timeframe (max 2 weeks) will be returned, starting from the most recent ones. - Using a `cursor` the events returned will be in the before, after or around the event, depending on the event the cursor is taken from and the cursor type. More details are available in the `cursor` attribute in the response. The event content can be filtered using `zones`, to select one or more zones, or with the filter, directly expressing a condition on fields and labels. + + :param var_from: + :type var_from: int + :param to: + :type to: int + :param cursor: + :type cursor: str + :param zones: + :type zones: List[int] + :param filter: + :type filter: str + :param limit: + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_events_v1_serialize( + var_from=var_from, + to=to, + cursor=cursor, + zones=zones, + filter=filter, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListEventsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_events_v1_serialize( + self, + var_from, + to, + cursor, + zones, + filter, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "zones": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if var_from is not None: + _query_params.append(("from", var_from)) + + if to is not None: + _query_params.append(("to", to)) + + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if zones is not None: + _query_params.append(("zones", zones)) + + if filter is not None: + _query_params.append(("filter", filter)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/events/v1/events", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/service_accounts_api.py b/sysdig_client/api/service_accounts_api.py new file mode 100644 index 00000000..7eea427a --- /dev/null +++ b/sysdig_client/api/service_accounts_api.py @@ -0,0 +1,2254 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + + +from sysdig_client.models.create_global_service_account_request_v1 import CreateGlobalServiceAccountRequestV1 +from sysdig_client.models.create_team_service_account_request_v1 import CreateTeamServiceAccountRequestV1 +from sysdig_client.models.get_service_accounts_paginated_response_v1 import GetServiceAccountsPaginatedResponseV1 +from sysdig_client.models.service_account_response_v1 import ServiceAccountResponseV1 +from sysdig_client.models.service_account_with_key_response_v1 import ServiceAccountWithKeyResponseV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class ServiceAccountsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_global_service_account_v1( + self, + create_global_service_account_request_v1: Annotated[ + Optional[CreateGlobalServiceAccountRequestV1], + Field(description="The payload required to create a new global service account."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountWithKeyResponseV1: + """Create a Global Service Account + + Create a new global service account.\\ \\ **Required permissions:** _global-service-accounts.edit_ + + :param create_global_service_account_request_v1: The payload required to create a new global service account. + :type create_global_service_account_request_v1: CreateGlobalServiceAccountRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_global_service_account_v1_serialize( + create_global_service_account_request_v1=create_global_service_account_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountWithKeyResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_global_service_account_v1_with_http_info( + self, + create_global_service_account_request_v1: Annotated[ + Optional[CreateGlobalServiceAccountRequestV1], + Field(description="The payload required to create a new global service account."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountWithKeyResponseV1]: + """Create a Global Service Account + + Create a new global service account.\\ \\ **Required permissions:** _global-service-accounts.edit_ + + :param create_global_service_account_request_v1: The payload required to create a new global service account. + :type create_global_service_account_request_v1: CreateGlobalServiceAccountRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_global_service_account_v1_serialize( + create_global_service_account_request_v1=create_global_service_account_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountWithKeyResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_global_service_account_v1_without_preload_content( + self, + create_global_service_account_request_v1: Annotated[ + Optional[CreateGlobalServiceAccountRequestV1], + Field(description="The payload required to create a new global service account."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create a Global Service Account + + Create a new global service account.\\ \\ **Required permissions:** _global-service-accounts.edit_ + + :param create_global_service_account_request_v1: The payload required to create a new global service account. + :type create_global_service_account_request_v1: CreateGlobalServiceAccountRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_global_service_account_v1_serialize( + create_global_service_account_request_v1=create_global_service_account_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountWithKeyResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_global_service_account_v1_serialize( + self, + create_global_service_account_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_global_service_account_request_v1 is not None: + _body_params = create_global_service_account_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/service-accounts", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def create_team_service_account_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + create_team_service_account_request_v1: Annotated[ + Optional[CreateTeamServiceAccountRequestV1], + Field(description="The payload required to create a new team service account."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountWithKeyResponseV1: + """Create a Team Service Account + + Create a new team service account.\\ \\ **Required permissions:** _team-service-accounts.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param create_team_service_account_request_v1: The payload required to create a new team service account. + :type create_team_service_account_request_v1: CreateTeamServiceAccountRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_team_service_account_v1_serialize( + team_id=team_id, + create_team_service_account_request_v1=create_team_service_account_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountWithKeyResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_team_service_account_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + create_team_service_account_request_v1: Annotated[ + Optional[CreateTeamServiceAccountRequestV1], + Field(description="The payload required to create a new team service account."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountWithKeyResponseV1]: + """Create a Team Service Account + + Create a new team service account.\\ \\ **Required permissions:** _team-service-accounts.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param create_team_service_account_request_v1: The payload required to create a new team service account. + :type create_team_service_account_request_v1: CreateTeamServiceAccountRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_team_service_account_v1_serialize( + team_id=team_id, + create_team_service_account_request_v1=create_team_service_account_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountWithKeyResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_team_service_account_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + create_team_service_account_request_v1: Annotated[ + Optional[CreateTeamServiceAccountRequestV1], + Field(description="The payload required to create a new team service account."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create a Team Service Account + + Create a new team service account.\\ \\ **Required permissions:** _team-service-accounts.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param create_team_service_account_request_v1: The payload required to create a new team service account. + :type create_team_service_account_request_v1: CreateTeamServiceAccountRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_team_service_account_v1_serialize( + team_id=team_id, + create_team_service_account_request_v1=create_team_service_account_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountWithKeyResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_team_service_account_v1_serialize( + self, + team_id, + create_team_service_account_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_team_service_account_request_v1 is not None: + _body_params = create_team_service_account_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/teams/{teamId}/service-accounts", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_global_service_account_by_id_v1( + self, + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete a Global Service Account + + Delete a global service account by ID.\\ \\ **Required permissions:** _global-service-accounts.edit_ + + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_global_service_account_by_id_v1_serialize( + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_global_service_account_by_id_v1_with_http_info( + self, + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete a Global Service Account + + Delete a global service account by ID.\\ \\ **Required permissions:** _global-service-accounts.edit_ + + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_global_service_account_by_id_v1_serialize( + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_global_service_account_by_id_v1_without_preload_content( + self, + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete a Global Service Account + + Delete a global service account by ID.\\ \\ **Required permissions:** _global-service-accounts.edit_ + + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_global_service_account_by_id_v1_serialize( + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_global_service_account_by_id_v1_serialize( + self, + service_account_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if service_account_id is not None: + _path_params["serviceAccountId"] = service_account_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/service-accounts/{serviceAccountId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_team_service_account_by_id_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete a Team Service Account + + Delete a team service account by ID.\\ \\ **Required permissions:** _team-service-accounts.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_team_service_account_by_id_v1_serialize( + team_id=team_id, + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_team_service_account_by_id_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete a Team Service Account + + Delete a team service account by ID.\\ \\ **Required permissions:** _team-service-accounts.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_team_service_account_by_id_v1_serialize( + team_id=team_id, + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_team_service_account_by_id_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete a Team Service Account + + Delete a team service account by ID.\\ \\ **Required permissions:** _team-service-accounts.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_team_service_account_by_id_v1_serialize( + team_id=team_id, + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_team_service_account_by_id_v1_serialize( + self, + team_id, + service_account_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + if service_account_id is not None: + _path_params["serviceAccountId"] = service_account_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/teams/{teamId}/service-accounts/{serviceAccountId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_global_service_account_by_id_v1( + self, + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountResponseV1: + """Get a Global Service Account + + Return a global service account by ID.\\ \\ **Required permissions:** _global-service-accounts.read_ + + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_global_service_account_by_id_v1_serialize( + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_global_service_account_by_id_v1_with_http_info( + self, + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountResponseV1]: + """Get a Global Service Account + + Return a global service account by ID.\\ \\ **Required permissions:** _global-service-accounts.read_ + + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_global_service_account_by_id_v1_serialize( + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_global_service_account_by_id_v1_without_preload_content( + self, + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get a Global Service Account + + Return a global service account by ID.\\ \\ **Required permissions:** _global-service-accounts.read_ + + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_global_service_account_by_id_v1_serialize( + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_global_service_account_by_id_v1_serialize( + self, + service_account_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if service_account_id is not None: + _path_params["serviceAccountId"] = service_account_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/service-accounts/{serviceAccountId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_global_service_accounts_v1( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetServiceAccountsPaginatedResponseV1: + """List Global Service Accounts + + Retrieve a paginated list of all service accounts.\\ \\ **Required permissions:** _global-service-accounts.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_global_service_accounts_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetServiceAccountsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_global_service_accounts_v1_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetServiceAccountsPaginatedResponseV1]: + """List Global Service Accounts + + Retrieve a paginated list of all service accounts.\\ \\ **Required permissions:** _global-service-accounts.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_global_service_accounts_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetServiceAccountsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_global_service_accounts_v1_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Global Service Accounts + + Retrieve a paginated list of all service accounts.\\ \\ **Required permissions:** _global-service-accounts.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_global_service_accounts_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetServiceAccountsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_global_service_accounts_v1_serialize( + self, + offset, + limit, + orderby, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "filter": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if orderby is not None: + _query_params.append(("orderby", orderby)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/service-accounts", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_team_service_account_by_id_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountResponseV1: + """Get a Team Service Account + + Return a team service account by ID.\\ \\ **Required permissions:** _team-service-accounts.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_service_account_by_id_v1_serialize( + team_id=team_id, + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_team_service_account_by_id_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountResponseV1]: + """Get a Team Service Account + + Return a team service account by ID.\\ \\ **Required permissions:** _team-service-accounts.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_service_account_by_id_v1_serialize( + team_id=team_id, + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_team_service_account_by_id_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + service_account_id: Annotated[int, Field(strict=True, ge=0, description="The service account ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get a Team Service Account + + Return a team service account by ID.\\ \\ **Required permissions:** _team-service-accounts.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param service_account_id: The service account ID. (required) + :type service_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_service_account_by_id_v1_serialize( + team_id=team_id, + service_account_id=service_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_team_service_account_by_id_v1_serialize( + self, + team_id, + service_account_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + if service_account_id is not None: + _path_params["serviceAccountId"] = service_account_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/teams/{teamId}/service-accounts/{serviceAccountId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_team_service_accounts_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetServiceAccountsPaginatedResponseV1: + """List Team Service Accounts + + Retrieve a paginated list of team service accounts.\\ \\ **Required permissions:** _team-service-accounts.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_service_accounts_v1_serialize( + team_id=team_id, + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetServiceAccountsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_team_service_accounts_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetServiceAccountsPaginatedResponseV1]: + """List Team Service Accounts + + Retrieve a paginated list of team service accounts.\\ \\ **Required permissions:** _team-service-accounts.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_service_accounts_v1_serialize( + team_id=team_id, + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetServiceAccountsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_team_service_accounts_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Team Service Accounts + + Retrieve a paginated list of team service accounts.\\ \\ **Required permissions:** _team-service-accounts.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_service_accounts_v1_serialize( + team_id=team_id, + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetServiceAccountsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_team_service_accounts_v1_serialize( + self, + team_id, + offset, + limit, + orderby, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "filter": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if orderby is not None: + _query_params.append(("orderby", orderby)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/teams/{teamId}/service-accounts", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/service_accounts_notification_settings_api.py b/sysdig_client/api/service_accounts_notification_settings_api.py new file mode 100644 index 00000000..5e1d8d4c --- /dev/null +++ b/sysdig_client/api/service_accounts_notification_settings_api.py @@ -0,0 +1,2013 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.create_service_accounts_notification_settings_request_v1 import ( + CreateServiceAccountsNotificationSettingsRequestV1, +) +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 +from sysdig_client.models.update_service_accounts_notification_settings_request_v1 import ( + UpdateServiceAccountsNotificationSettingsRequestV1, +) + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class ServiceAccountsNotificationSettingsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_global_service_accounts_notification_settings_v1( + self, + create_service_accounts_notification_settings_request_v1: Annotated[ + Optional[CreateServiceAccountsNotificationSettingsRequestV1], + Field(description="The payload required to create Service Accounts Notification Settings."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountsNotificationSettingsResponseV1: + """Create Global Service Accounts Notification Settings + + Create a new Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.edit_ + + :param create_service_accounts_notification_settings_request_v1: The payload required to create Service Accounts Notification Settings. + :type create_service_accounts_notification_settings_request_v1: CreateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_global_service_accounts_notification_settings_v1_serialize( + create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_global_service_accounts_notification_settings_v1_with_http_info( + self, + create_service_accounts_notification_settings_request_v1: Annotated[ + Optional[CreateServiceAccountsNotificationSettingsRequestV1], + Field(description="The payload required to create Service Accounts Notification Settings."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountsNotificationSettingsResponseV1]: + """Create Global Service Accounts Notification Settings + + Create a new Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.edit_ + + :param create_service_accounts_notification_settings_request_v1: The payload required to create Service Accounts Notification Settings. + :type create_service_accounts_notification_settings_request_v1: CreateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_global_service_accounts_notification_settings_v1_serialize( + create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_global_service_accounts_notification_settings_v1_without_preload_content( + self, + create_service_accounts_notification_settings_request_v1: Annotated[ + Optional[CreateServiceAccountsNotificationSettingsRequestV1], + Field(description="The payload required to create Service Accounts Notification Settings."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Global Service Accounts Notification Settings + + Create a new Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.edit_ + + :param create_service_accounts_notification_settings_request_v1: The payload required to create Service Accounts Notification Settings. + :type create_service_accounts_notification_settings_request_v1: CreateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_global_service_accounts_notification_settings_v1_serialize( + create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_global_service_accounts_notification_settings_v1_serialize( + self, + create_service_accounts_notification_settings_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_service_accounts_notification_settings_request_v1 is not None: + _body_params = create_service_accounts_notification_settings_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/service-accounts/notification-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def create_service_accounts_notification_settings_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + create_service_accounts_notification_settings_request_v1: Annotated[ + Optional[CreateServiceAccountsNotificationSettingsRequestV1], + Field(description="The payload required to create Service Accounts Notification Settings."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountsNotificationSettingsResponseV1: + """Create Service Accounts Notification Settings + + Create a new Notification Settings for Service Accounts which belong to a specific team.\\ \\ **Required permissions:** _service-accounts-notification-settings.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param create_service_accounts_notification_settings_request_v1: The payload required to create Service Accounts Notification Settings. + :type create_service_accounts_notification_settings_request_v1: CreateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_service_accounts_notification_settings_v1_serialize( + team_id=team_id, + create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_service_accounts_notification_settings_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + create_service_accounts_notification_settings_request_v1: Annotated[ + Optional[CreateServiceAccountsNotificationSettingsRequestV1], + Field(description="The payload required to create Service Accounts Notification Settings."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountsNotificationSettingsResponseV1]: + """Create Service Accounts Notification Settings + + Create a new Notification Settings for Service Accounts which belong to a specific team.\\ \\ **Required permissions:** _service-accounts-notification-settings.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param create_service_accounts_notification_settings_request_v1: The payload required to create Service Accounts Notification Settings. + :type create_service_accounts_notification_settings_request_v1: CreateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_service_accounts_notification_settings_v1_serialize( + team_id=team_id, + create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_service_accounts_notification_settings_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + create_service_accounts_notification_settings_request_v1: Annotated[ + Optional[CreateServiceAccountsNotificationSettingsRequestV1], + Field(description="The payload required to create Service Accounts Notification Settings."), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Service Accounts Notification Settings + + Create a new Notification Settings for Service Accounts which belong to a specific team.\\ \\ **Required permissions:** _service-accounts-notification-settings.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param create_service_accounts_notification_settings_request_v1: The payload required to create Service Accounts Notification Settings. + :type create_service_accounts_notification_settings_request_v1: CreateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_service_accounts_notification_settings_v1_serialize( + team_id=team_id, + create_service_accounts_notification_settings_request_v1=create_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_service_accounts_notification_settings_v1_serialize( + self, + team_id, + create_service_accounts_notification_settings_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_service_accounts_notification_settings_request_v1 is not None: + _body_params = create_service_accounts_notification_settings_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/teams/{teamId}/service-accounts/notification-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_global_service_accounts_notification_settings_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Global Service Accounts Notification Settings + + Delete Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.edit_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_global_service_accounts_notification_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_global_service_accounts_notification_settings_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Global Service Accounts Notification Settings + + Delete Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.edit_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_global_service_accounts_notification_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_global_service_accounts_notification_settings_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Global Service Accounts Notification Settings + + Delete Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.edit_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_global_service_accounts_notification_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_global_service_accounts_notification_settings_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/service-accounts/notification-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_service_accounts_notification_settings_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Service Accounts Notification Settings + + Delete Service Accounts Notification Settings for a given team.\\ \\ **Required permissions:** _service-accounts-notification-settings.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_service_accounts_notification_settings_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_service_accounts_notification_settings_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Service Accounts Notification Settings + + Delete Service Accounts Notification Settings for a given team.\\ \\ **Required permissions:** _service-accounts-notification-settings.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_service_accounts_notification_settings_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_service_accounts_notification_settings_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Service Accounts Notification Settings + + Delete Service Accounts Notification Settings for a given team.\\ \\ **Required permissions:** _service-accounts-notification-settings.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_service_accounts_notification_settings_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_service_accounts_notification_settings_v1_serialize( + self, + team_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/teams/{teamId}/service-accounts/notification-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_global_service_accounts_notification_settings_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountsNotificationSettingsResponseV1: + """Get Global Service Accounts Notification Settings + + Return Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_global_service_accounts_notification_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_global_service_accounts_notification_settings_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountsNotificationSettingsResponseV1]: + """Get Global Service Accounts Notification Settings + + Return Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_global_service_accounts_notification_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_global_service_accounts_notification_settings_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Global Service Accounts Notification Settings + + Return Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_global_service_accounts_notification_settings_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_global_service_accounts_notification_settings_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/service-accounts/notification-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_service_accounts_notification_settings_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountsNotificationSettingsResponseV1: + """Get Service Accounts Notification Settings + + Return Service Accounts Notification Settings for a given team.\\ \\ **Required permissions:** _service-accounts-notification-settings.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_service_accounts_notification_settings_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_service_accounts_notification_settings_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountsNotificationSettingsResponseV1]: + """Get Service Accounts Notification Settings + + Return Service Accounts Notification Settings for a given team.\\ \\ **Required permissions:** _service-accounts-notification-settings.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_service_accounts_notification_settings_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_service_accounts_notification_settings_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Service Accounts Notification Settings + + Return Service Accounts Notification Settings for a given team.\\ \\ **Required permissions:** _service-accounts-notification-settings.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_service_accounts_notification_settings_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_service_accounts_notification_settings_v1_serialize( + self, + team_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/teams/{teamId}/service-accounts/notification-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_global_service_accounts_notification_settings_v1( + self, + update_service_accounts_notification_settings_request_v1: Optional[ + UpdateServiceAccountsNotificationSettingsRequestV1 + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountsNotificationSettingsResponseV1: + """Update Global Service Accounts Notification Settings + + Update Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.edit_ + + :param update_service_accounts_notification_settings_request_v1: + :type update_service_accounts_notification_settings_request_v1: UpdateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_global_service_accounts_notification_settings_v1_serialize( + update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_global_service_accounts_notification_settings_v1_with_http_info( + self, + update_service_accounts_notification_settings_request_v1: Optional[ + UpdateServiceAccountsNotificationSettingsRequestV1 + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountsNotificationSettingsResponseV1]: + """Update Global Service Accounts Notification Settings + + Update Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.edit_ + + :param update_service_accounts_notification_settings_request_v1: + :type update_service_accounts_notification_settings_request_v1: UpdateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_global_service_accounts_notification_settings_v1_serialize( + update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_global_service_accounts_notification_settings_v1_without_preload_content( + self, + update_service_accounts_notification_settings_request_v1: Optional[ + UpdateServiceAccountsNotificationSettingsRequestV1 + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Global Service Accounts Notification Settings + + Update Notification Settings for Global Service Accounts.\\ \\ **Required permissions:** _global-service-accounts-notification-settings.edit_ + + :param update_service_accounts_notification_settings_request_v1: + :type update_service_accounts_notification_settings_request_v1: UpdateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_global_service_accounts_notification_settings_v1_serialize( + update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_global_service_accounts_notification_settings_v1_serialize( + self, + update_service_accounts_notification_settings_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_service_accounts_notification_settings_request_v1 is not None: + _body_params = update_service_accounts_notification_settings_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/service-accounts/notification-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_service_accounts_notification_settings_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + update_service_accounts_notification_settings_request_v1: Optional[ + UpdateServiceAccountsNotificationSettingsRequestV1 + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ServiceAccountsNotificationSettingsResponseV1: + """Update Service Accounts Notification Settings + + Update Service Accounts Notification Settings for a given team.\\ \\ **Required permissions:** _service-accounts-notification-settings.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param update_service_accounts_notification_settings_request_v1: + :type update_service_accounts_notification_settings_request_v1: UpdateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_service_accounts_notification_settings_v1_serialize( + team_id=team_id, + update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_service_accounts_notification_settings_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + update_service_accounts_notification_settings_request_v1: Optional[ + UpdateServiceAccountsNotificationSettingsRequestV1 + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ServiceAccountsNotificationSettingsResponseV1]: + """Update Service Accounts Notification Settings + + Update Service Accounts Notification Settings for a given team.\\ \\ **Required permissions:** _service-accounts-notification-settings.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param update_service_accounts_notification_settings_request_v1: + :type update_service_accounts_notification_settings_request_v1: UpdateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_service_accounts_notification_settings_v1_serialize( + team_id=team_id, + update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_service_accounts_notification_settings_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + update_service_accounts_notification_settings_request_v1: Optional[ + UpdateServiceAccountsNotificationSettingsRequestV1 + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Service Accounts Notification Settings + + Update Service Accounts Notification Settings for a given team.\\ \\ **Required permissions:** _service-accounts-notification-settings.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param update_service_accounts_notification_settings_request_v1: + :type update_service_accounts_notification_settings_request_v1: UpdateServiceAccountsNotificationSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_service_accounts_notification_settings_v1_serialize( + team_id=team_id, + update_service_accounts_notification_settings_request_v1=update_service_accounts_notification_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ServiceAccountsNotificationSettingsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_service_accounts_notification_settings_v1_serialize( + self, + team_id, + update_service_accounts_notification_settings_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_service_accounts_notification_settings_request_v1 is not None: + _body_params = update_service_accounts_notification_settings_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/teams/{teamId}/service-accounts/notification-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/sso_settings_api.py b/sysdig_client/api/sso_settings_api.py new file mode 100644 index 00000000..aff3d1e7 --- /dev/null +++ b/sysdig_client/api/sso_settings_api.py @@ -0,0 +1,1790 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import field_validator +from sysdig_client.models.all_sso_settings_response_v1 import AllSsoSettingsResponseV1 +from sysdig_client.models.create_sso_settings_request_v1 import CreateSsoSettingsRequestV1 +from sysdig_client.models.global_sso_settings_request_v1 import GlobalSsoSettingsRequestV1 +from sysdig_client.models.global_sso_settings_response_v1 import GlobalSsoSettingsResponseV1 +from sysdig_client.models.sso_settings_response_v1 import SsoSettingsResponseV1 +from sysdig_client.models.update_sso_settings_request_v1 import UpdateSsoSettingsRequestV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class SSOSettingsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_sso_settings_v1( + self, + create_sso_settings_request_v1: Annotated[ + Optional[CreateSsoSettingsRequestV1], Field(description="The payload required to create SSO settings.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> SsoSettingsResponseV1: + """Create SSO Settings + + Create a new SSO settings.\\ \\ **Required permissions:** _sso-setting.edit_ + + :param create_sso_settings_request_v1: The payload required to create SSO settings. + :type create_sso_settings_request_v1: CreateSsoSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_sso_settings_v1_serialize( + create_sso_settings_request_v1=create_sso_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "SsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_sso_settings_v1_with_http_info( + self, + create_sso_settings_request_v1: Annotated[ + Optional[CreateSsoSettingsRequestV1], Field(description="The payload required to create SSO settings.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[SsoSettingsResponseV1]: + """Create SSO Settings + + Create a new SSO settings.\\ \\ **Required permissions:** _sso-setting.edit_ + + :param create_sso_settings_request_v1: The payload required to create SSO settings. + :type create_sso_settings_request_v1: CreateSsoSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_sso_settings_v1_serialize( + create_sso_settings_request_v1=create_sso_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "SsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_sso_settings_v1_without_preload_content( + self, + create_sso_settings_request_v1: Annotated[ + Optional[CreateSsoSettingsRequestV1], Field(description="The payload required to create SSO settings.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create SSO Settings + + Create a new SSO settings.\\ \\ **Required permissions:** _sso-setting.edit_ + + :param create_sso_settings_request_v1: The payload required to create SSO settings. + :type create_sso_settings_request_v1: CreateSsoSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_sso_settings_v1_serialize( + create_sso_settings_request_v1=create_sso_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "SsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_sso_settings_v1_serialize( + self, + create_sso_settings_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_sso_settings_request_v1 is not None: + _body_params = create_sso_settings_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/sso-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_sso_settings_by_id_v1( + self, + sso_settings_id: Annotated[int, Field(strict=True, ge=0, description="SSO settings ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete SSO Settings + + Delete SSO settings by its ID.\\ \\ **Required permissions:** _sso-settings.edit_ + + :param sso_settings_id: SSO settings ID. (required) + :type sso_settings_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_sso_settings_by_id_v1_serialize( + sso_settings_id=sso_settings_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_sso_settings_by_id_v1_with_http_info( + self, + sso_settings_id: Annotated[int, Field(strict=True, ge=0, description="SSO settings ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete SSO Settings + + Delete SSO settings by its ID.\\ \\ **Required permissions:** _sso-settings.edit_ + + :param sso_settings_id: SSO settings ID. (required) + :type sso_settings_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_sso_settings_by_id_v1_serialize( + sso_settings_id=sso_settings_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_sso_settings_by_id_v1_without_preload_content( + self, + sso_settings_id: Annotated[int, Field(strict=True, ge=0, description="SSO settings ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete SSO Settings + + Delete SSO settings by its ID.\\ \\ **Required permissions:** _sso-settings.edit_ + + :param sso_settings_id: SSO settings ID. (required) + :type sso_settings_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_sso_settings_by_id_v1_serialize( + sso_settings_id=sso_settings_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_sso_settings_by_id_v1_serialize( + self, + sso_settings_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if sso_settings_id is not None: + _path_params["ssoSettingsId"] = sso_settings_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/sso-settings/{ssoSettingsId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_globa_sso_settings_v1( + self, + sso_product_id: Annotated[StrictStr, Field(description="Sysdig Product.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GlobalSsoSettingsResponseV1: + """Get Global SSO Settings + + Get Global SSO Settings.\\ \\ **Required permissions:** _sso-settings.read_ + + :param sso_product_id: Sysdig Product. (required) + :type sso_product_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_globa_sso_settings_v1_serialize( + sso_product_id=sso_product_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GlobalSsoSettingsResponseV1", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_globa_sso_settings_v1_with_http_info( + self, + sso_product_id: Annotated[StrictStr, Field(description="Sysdig Product.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GlobalSsoSettingsResponseV1]: + """Get Global SSO Settings + + Get Global SSO Settings.\\ \\ **Required permissions:** _sso-settings.read_ + + :param sso_product_id: Sysdig Product. (required) + :type sso_product_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_globa_sso_settings_v1_serialize( + sso_product_id=sso_product_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GlobalSsoSettingsResponseV1", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_globa_sso_settings_v1_without_preload_content( + self, + sso_product_id: Annotated[StrictStr, Field(description="Sysdig Product.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Global SSO Settings + + Get Global SSO Settings.\\ \\ **Required permissions:** _sso-settings.read_ + + :param sso_product_id: Sysdig Product. (required) + :type sso_product_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_globa_sso_settings_v1_serialize( + sso_product_id=sso_product_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GlobalSsoSettingsResponseV1", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_globa_sso_settings_v1_serialize( + self, + sso_product_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if sso_product_id is not None: + _path_params["ssoProductId"] = sso_product_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/global-sso-settings/{ssoProductId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_sso_settings_by_id_v1( + self, + sso_settings_id: Annotated[int, Field(strict=True, ge=0, description="SSO settings ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> SsoSettingsResponseV1: + """Get SSO Settings + + Return SSO settings by ID.\\ \\ **Required permissions:** _sso-settings.read_ + + :param sso_settings_id: SSO settings ID. (required) + :type sso_settings_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sso_settings_by_id_v1_serialize( + sso_settings_id=sso_settings_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_sso_settings_by_id_v1_with_http_info( + self, + sso_settings_id: Annotated[int, Field(strict=True, ge=0, description="SSO settings ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[SsoSettingsResponseV1]: + """Get SSO Settings + + Return SSO settings by ID.\\ \\ **Required permissions:** _sso-settings.read_ + + :param sso_settings_id: SSO settings ID. (required) + :type sso_settings_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sso_settings_by_id_v1_serialize( + sso_settings_id=sso_settings_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_sso_settings_by_id_v1_without_preload_content( + self, + sso_settings_id: Annotated[int, Field(strict=True, ge=0, description="SSO settings ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get SSO Settings + + Return SSO settings by ID.\\ \\ **Required permissions:** _sso-settings.read_ + + :param sso_settings_id: SSO settings ID. (required) + :type sso_settings_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sso_settings_by_id_v1_serialize( + sso_settings_id=sso_settings_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_sso_settings_by_id_v1_serialize( + self, + sso_settings_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if sso_settings_id is not None: + _path_params["ssoSettingsId"] = sso_settings_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/sso-settings/{ssoSettingsId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_sso_settings_v1( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> AllSsoSettingsResponseV1: + """List SSO Settings + + Retrieve a paginated list of SSO settings.\\ \\ **Required permissions:** _sso-settings.read_ + + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sso_settings_v1_serialize( + filter=filter, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AllSsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_sso_settings_v1_with_http_info( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[AllSsoSettingsResponseV1]: + """List SSO Settings + + Retrieve a paginated list of SSO settings.\\ \\ **Required permissions:** _sso-settings.read_ + + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sso_settings_v1_serialize( + filter=filter, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AllSsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_sso_settings_v1_without_preload_content( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List SSO Settings + + Retrieve a paginated list of SSO settings.\\ \\ **Required permissions:** _sso-settings.read_ + + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sso_settings_v1_serialize( + filter=filter, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "AllSsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_sso_settings_v1_serialize( + self, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/sso-settings", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_global_sso_settings_v1( + self, + sso_product_id: Annotated[StrictStr, Field(description="Sysdig Product.")], + global_sso_settings_request_v1: Annotated[ + GlobalSsoSettingsRequestV1, Field(description="The payload required to update the Global SSO Settigs.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GlobalSsoSettingsResponseV1: + """Update Global SSO Settings + + Update Global SSO Settings.\\ \\ **Required permissions:** _sso-setting.edit_ + + :param sso_product_id: Sysdig Product. (required) + :type sso_product_id: str + :param global_sso_settings_request_v1: The payload required to update the Global SSO Settigs. (required) + :type global_sso_settings_request_v1: GlobalSsoSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_global_sso_settings_v1_serialize( + sso_product_id=sso_product_id, + global_sso_settings_request_v1=global_sso_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GlobalSsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_global_sso_settings_v1_with_http_info( + self, + sso_product_id: Annotated[StrictStr, Field(description="Sysdig Product.")], + global_sso_settings_request_v1: Annotated[ + GlobalSsoSettingsRequestV1, Field(description="The payload required to update the Global SSO Settigs.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GlobalSsoSettingsResponseV1]: + """Update Global SSO Settings + + Update Global SSO Settings.\\ \\ **Required permissions:** _sso-setting.edit_ + + :param sso_product_id: Sysdig Product. (required) + :type sso_product_id: str + :param global_sso_settings_request_v1: The payload required to update the Global SSO Settigs. (required) + :type global_sso_settings_request_v1: GlobalSsoSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_global_sso_settings_v1_serialize( + sso_product_id=sso_product_id, + global_sso_settings_request_v1=global_sso_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GlobalSsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_global_sso_settings_v1_without_preload_content( + self, + sso_product_id: Annotated[StrictStr, Field(description="Sysdig Product.")], + global_sso_settings_request_v1: Annotated[ + GlobalSsoSettingsRequestV1, Field(description="The payload required to update the Global SSO Settigs.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Global SSO Settings + + Update Global SSO Settings.\\ \\ **Required permissions:** _sso-setting.edit_ + + :param sso_product_id: Sysdig Product. (required) + :type sso_product_id: str + :param global_sso_settings_request_v1: The payload required to update the Global SSO Settigs. (required) + :type global_sso_settings_request_v1: GlobalSsoSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_global_sso_settings_v1_serialize( + sso_product_id=sso_product_id, + global_sso_settings_request_v1=global_sso_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GlobalSsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_global_sso_settings_v1_serialize( + self, + sso_product_id, + global_sso_settings_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if sso_product_id is not None: + _path_params["ssoProductId"] = sso_product_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if global_sso_settings_request_v1 is not None: + _body_params = global_sso_settings_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/global-sso-settings/{ssoProductId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_sso_settings_by_id_v1( + self, + sso_settings_id: Annotated[int, Field(strict=True, ge=0, description="SSO settings ID.")], + update_sso_settings_request_v1: Optional[UpdateSsoSettingsRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> SsoSettingsResponseV1: + """Update SSO Settings + + Update SSO settings by its ID.\\ \\ **Required permissions:** _sso-settings.edit_ + + :param sso_settings_id: SSO settings ID. (required) + :type sso_settings_id: int + :param update_sso_settings_request_v1: + :type update_sso_settings_request_v1: UpdateSsoSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_sso_settings_by_id_v1_serialize( + sso_settings_id=sso_settings_id, + update_sso_settings_request_v1=update_sso_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_sso_settings_by_id_v1_with_http_info( + self, + sso_settings_id: Annotated[int, Field(strict=True, ge=0, description="SSO settings ID.")], + update_sso_settings_request_v1: Optional[UpdateSsoSettingsRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[SsoSettingsResponseV1]: + """Update SSO Settings + + Update SSO settings by its ID.\\ \\ **Required permissions:** _sso-settings.edit_ + + :param sso_settings_id: SSO settings ID. (required) + :type sso_settings_id: int + :param update_sso_settings_request_v1: + :type update_sso_settings_request_v1: UpdateSsoSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_sso_settings_by_id_v1_serialize( + sso_settings_id=sso_settings_id, + update_sso_settings_request_v1=update_sso_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_sso_settings_by_id_v1_without_preload_content( + self, + sso_settings_id: Annotated[int, Field(strict=True, ge=0, description="SSO settings ID.")], + update_sso_settings_request_v1: Optional[UpdateSsoSettingsRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update SSO Settings + + Update SSO settings by its ID.\\ \\ **Required permissions:** _sso-settings.edit_ + + :param sso_settings_id: SSO settings ID. (required) + :type sso_settings_id: int + :param update_sso_settings_request_v1: + :type update_sso_settings_request_v1: UpdateSsoSettingsRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_sso_settings_by_id_v1_serialize( + sso_settings_id=sso_settings_id, + update_sso_settings_request_v1=update_sso_settings_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "SsoSettingsResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_sso_settings_by_id_v1_serialize( + self, + sso_settings_id, + update_sso_settings_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if sso_settings_id is not None: + _path_params["ssoSettingsId"] = sso_settings_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_sso_settings_request_v1 is not None: + _body_params = update_sso_settings_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/sso-settings/{ssoSettingsId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/sys_ql_api.py b/sysdig_client/api/sys_ql_api.py new file mode 100644 index 00000000..d8d55228 --- /dev/null +++ b/sysdig_client/api/sys_ql_api.py @@ -0,0 +1,795 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import StrictBool +from sysdig_client.models.query_response import QueryResponse +from sysdig_client.models.query_sysql_post_request import QuerySysqlPostRequest + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class SysQLApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_sysql_schema( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> str: + """Get SysQL Schema + + Retrieve the schema information for all entities and their relationships in YAML format. This endpoint returns the graph schema definition that describes available entities, their fields, and relationships. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sysql_schema_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_sysql_schema_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[str]: + """Get SysQL Schema + + Retrieve the schema information for all entities and their relationships in YAML format. This endpoint returns the graph schema definition that describes available entities, their fields, and relationships. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sysql_schema_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_sysql_schema_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get SysQL Schema + + Retrieve the schema information for all entities and their relationships in YAML format. This endpoint returns the graph schema definition that describes available entities, their fields, and relationships. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_sysql_schema_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "str", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_sysql_schema_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/api/sysql/v2/schema", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def query_sysql_get( + self, + q: Annotated[StrictStr, Field(description="The SysQL statement.")], + limit: Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]] = None, + offset: Optional[Annotated[int, Field(le=10000, strict=True, ge=0)]] = None, + deterministic_order: Optional[StrictBool] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> QueryResponse: + """(Deprecated) Execute SysQL query via GET + + [DEPRECATED] Retrieve resources from the graph datastore using the GET method. > The GET method for this endpoint is deprecated and will be removed in future versions. > Please use the POST method instead, which provides better support for complex queries. + + :param q: The SysQL statement. (required) + :type q: str + :param limit: + :type limit: int + :param offset: + :type offset: int + :param deterministic_order: + :type deterministic_order: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + warnings.warn("GET /api/sysql/v2/query is deprecated.", DeprecationWarning) + + _param = self._query_sysql_get_serialize( + q=q, + limit=limit, + offset=offset, + deterministic_order=deterministic_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def query_sysql_get_with_http_info( + self, + q: Annotated[StrictStr, Field(description="The SysQL statement.")], + limit: Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]] = None, + offset: Optional[Annotated[int, Field(le=10000, strict=True, ge=0)]] = None, + deterministic_order: Optional[StrictBool] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[QueryResponse]: + """(Deprecated) Execute SysQL query via GET + + [DEPRECATED] Retrieve resources from the graph datastore using the GET method. > The GET method for this endpoint is deprecated and will be removed in future versions. > Please use the POST method instead, which provides better support for complex queries. + + :param q: The SysQL statement. (required) + :type q: str + :param limit: + :type limit: int + :param offset: + :type offset: int + :param deterministic_order: + :type deterministic_order: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + warnings.warn("GET /api/sysql/v2/query is deprecated.", DeprecationWarning) + + _param = self._query_sysql_get_serialize( + q=q, + limit=limit, + offset=offset, + deterministic_order=deterministic_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def query_sysql_get_without_preload_content( + self, + q: Annotated[StrictStr, Field(description="The SysQL statement.")], + limit: Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]] = None, + offset: Optional[Annotated[int, Field(le=10000, strict=True, ge=0)]] = None, + deterministic_order: Optional[StrictBool] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """(Deprecated) Execute SysQL query via GET + + [DEPRECATED] Retrieve resources from the graph datastore using the GET method. > The GET method for this endpoint is deprecated and will be removed in future versions. > Please use the POST method instead, which provides better support for complex queries. + + :param q: The SysQL statement. (required) + :type q: str + :param limit: + :type limit: int + :param offset: + :type offset: int + :param deterministic_order: + :type deterministic_order: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + warnings.warn("GET /api/sysql/v2/query is deprecated.", DeprecationWarning) + + _param = self._query_sysql_get_serialize( + q=q, + limit=limit, + offset=offset, + deterministic_order=deterministic_order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _query_sysql_get_serialize( + self, + q, + limit, + offset, + deterministic_order, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if q is not None: + _query_params.append(("q", q)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if offset is not None: + _query_params.append(("offset", offset)) + + if deterministic_order is not None: + _query_params.append(("deterministic_order", deterministic_order)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/api/sysql/v2/query", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def query_sysql_post( + self, + query_sysql_post_request: QuerySysqlPostRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> QueryResponse: + """Execute SysQL query via POST + + Retrieve resources from the graph datastore using the POST method. + + :param query_sysql_post_request: (required) + :type query_sysql_post_request: QuerySysqlPostRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._query_sysql_post_serialize( + query_sysql_post_request=query_sysql_post_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def query_sysql_post_with_http_info( + self, + query_sysql_post_request: QuerySysqlPostRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[QueryResponse]: + """Execute SysQL query via POST + + Retrieve resources from the graph datastore using the POST method. + + :param query_sysql_post_request: (required) + :type query_sysql_post_request: QuerySysqlPostRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._query_sysql_post_serialize( + query_sysql_post_request=query_sysql_post_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def query_sysql_post_without_preload_content( + self, + query_sysql_post_request: QuerySysqlPostRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Execute SysQL query via POST + + Retrieve resources from the graph datastore using the POST method. + + :param query_sysql_post_request: (required) + :type query_sysql_post_request: QuerySysqlPostRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._query_sysql_post_serialize( + query_sysql_post_request=query_sysql_post_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "QueryResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _query_sysql_post_serialize( + self, + query_sysql_post_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if query_sysql_post_request is not None: + _body_params = query_sysql_post_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/api/sysql/v2/query", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/teams_api.py b/sysdig_client/api/teams_api.py new file mode 100644 index 00000000..b6a778f8 --- /dev/null +++ b/sysdig_client/api/teams_api.py @@ -0,0 +1,2463 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import StrictBool +from sysdig_client.models.create_team_request_v1 import CreateTeamRequestV1 +from sysdig_client.models.get_team_users_paginated_response_v1 import GetTeamUsersPaginatedResponseV1 +from sysdig_client.models.get_teams_paginated_response_v1 import GetTeamsPaginatedResponseV1 +from sysdig_client.models.save_team_user_request_v1 import SaveTeamUserRequestV1 +from sysdig_client.models.team_response_v1 import TeamResponseV1 +from sysdig_client.models.team_user_response_v1 import TeamUserResponseV1 +from sysdig_client.models.update_team_request_v1 import UpdateTeamRequestV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class TeamsApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_team_v1( + self, + create_team_request_v1: Annotated[ + Optional[CreateTeamRequestV1], Field(description="The payload required to create a new team.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> TeamResponseV1: + """Create Team + + Create a new team.\\ \\ **Required permissions:** _teams.create_ + + :param create_team_request_v1: The payload required to create a new team. + :type create_team_request_v1: CreateTeamRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_team_v1_serialize( + create_team_request_v1=create_team_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "TeamResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_team_v1_with_http_info( + self, + create_team_request_v1: Annotated[ + Optional[CreateTeamRequestV1], Field(description="The payload required to create a new team.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[TeamResponseV1]: + """Create Team + + Create a new team.\\ \\ **Required permissions:** _teams.create_ + + :param create_team_request_v1: The payload required to create a new team. + :type create_team_request_v1: CreateTeamRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_team_v1_serialize( + create_team_request_v1=create_team_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "TeamResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_team_v1_without_preload_content( + self, + create_team_request_v1: Annotated[ + Optional[CreateTeamRequestV1], Field(description="The payload required to create a new team.") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Team + + Create a new team.\\ \\ **Required permissions:** _teams.create_ + + :param create_team_request_v1: The payload required to create a new team. + :type create_team_request_v1: CreateTeamRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_team_v1_serialize( + create_team_request_v1=create_team_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "TeamResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_team_v1_serialize( + self, + create_team_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_team_request_v1 is not None: + _body_params = create_team_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/teams", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_team_by_id_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Team + + Delete a team by its ID.\\ \\ **Required permissions:** _teams.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_team_by_id_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_team_by_id_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Team + + Delete a team by its ID.\\ \\ **Required permissions:** _teams.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_team_by_id_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_team_by_id_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Team + + Delete a team by its ID.\\ \\ **Required permissions:** _teams.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_team_by_id_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_team_by_id_v1_serialize( + self, + team_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/teams/{teamId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_team_user_by_id_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Membership + + Delete a membership defined by its ID.\\ \\ **Required permissions:** _memberships.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_team_user_by_id_v1_serialize( + team_id=team_id, + user_id=user_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_team_user_by_id_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Membership + + Delete a membership defined by its ID.\\ \\ **Required permissions:** _memberships.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_team_user_by_id_v1_serialize( + team_id=team_id, + user_id=user_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_team_user_by_id_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Membership + + Delete a membership defined by its ID.\\ \\ **Required permissions:** _memberships.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_team_user_by_id_v1_serialize( + team_id=team_id, + user_id=user_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_team_user_by_id_v1_serialize( + self, + team_id, + user_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + if user_id is not None: + _path_params["userId"] = user_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/teams/{teamId}/users/{userId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_team_by_id_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> TeamResponseV1: + """Get Team + + Return a team by ID.\\ \\ **Required permissions:** _customer-teams.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_by_id_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_team_by_id_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[TeamResponseV1]: + """Get Team + + Return a team by ID.\\ \\ **Required permissions:** _customer-teams.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_by_id_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_team_by_id_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Team + + Return a team by ID.\\ \\ **Required permissions:** _customer-teams.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_by_id_v1_serialize( + team_id=team_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_team_by_id_v1_serialize( + self, + team_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/teams/{teamId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_team_user_by_id_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> TeamUserResponseV1: + """Get Membership + + Return a membership by its ID.\\ \\ **Required permissions:** _memberships.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_user_by_id_v1_serialize( + team_id=team_id, + user_id=user_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamUserResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_team_user_by_id_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[TeamUserResponseV1]: + """Get Membership + + Return a membership by its ID.\\ \\ **Required permissions:** _memberships.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_user_by_id_v1_serialize( + team_id=team_id, + user_id=user_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamUserResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_team_user_by_id_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Membership + + Return a membership by its ID.\\ \\ **Required permissions:** _memberships.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_user_by_id_v1_serialize( + team_id=team_id, + user_id=user_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamUserResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_team_user_by_id_v1_serialize( + self, + team_id, + user_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + if user_id is not None: + _path_params["userId"] = user_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/teams/{teamId}/users/{userId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_team_users_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + with_admin_users: Annotated[Optional[StrictBool], Field(description="Include admin users in the response.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetTeamUsersPaginatedResponseV1: + """List Memberships + + Retrieve a paginated list of memberships in a given team ID.\\ \\ **Required permissions:** _memberships.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param with_admin_users: Include admin users in the response. + :type with_admin_users: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_users_v1_serialize( + team_id=team_id, + offset=offset, + limit=limit, + with_admin_users=with_admin_users, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetTeamUsersPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_team_users_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + with_admin_users: Annotated[Optional[StrictBool], Field(description="Include admin users in the response.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetTeamUsersPaginatedResponseV1]: + """List Memberships + + Retrieve a paginated list of memberships in a given team ID.\\ \\ **Required permissions:** _memberships.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param with_admin_users: Include admin users in the response. + :type with_admin_users: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_users_v1_serialize( + team_id=team_id, + offset=offset, + limit=limit, + with_admin_users=with_admin_users, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetTeamUsersPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_team_users_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + with_admin_users: Annotated[Optional[StrictBool], Field(description="Include admin users in the response.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Memberships + + Retrieve a paginated list of memberships in a given team ID.\\ \\ **Required permissions:** _memberships.read_ + + :param team_id: The team ID. (required) + :type team_id: int + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param with_admin_users: Include admin users in the response. + :type with_admin_users: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_team_users_v1_serialize( + team_id=team_id, + offset=offset, + limit=limit, + with_admin_users=with_admin_users, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetTeamUsersPaginatedResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_team_users_v1_serialize( + self, + team_id, + offset, + limit, + with_admin_users, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if with_admin_users is not None: + _query_params.append(("withAdminUsers", with_admin_users)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/teams/{teamId}/users", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_teams_v1( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetTeamsPaginatedResponseV1: + """List Teams + + Retrieve a paginated list of teams.\\ \\ **Required permissions:** _customer-teams.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_teams_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetTeamsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_teams_v1_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetTeamsPaginatedResponseV1]: + """List Teams + + Retrieve a paginated list of teams.\\ \\ **Required permissions:** _customer-teams.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_teams_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetTeamsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_teams_v1_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Teams + + Retrieve a paginated list of teams.\\ \\ **Required permissions:** _customer-teams.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_teams_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetTeamsPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_teams_v1_serialize( + self, + offset, + limit, + orderby, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if orderby is not None: + _query_params.append(("orderby", orderby)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/teams", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def save_team_user_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + save_team_user_request_v1: Optional[SaveTeamUserRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> TeamUserResponseV1: + """Save Membership + + Add or update a membership. | Permission | Description | | -----------------------| --------------------------------------------------------------------------------------------------------| | memberships.edit | Required to create a new membership. | | memberships-roles.edit | Required to change roles of an existing membership or to create a new membership with a specific role. | + + :param team_id: The team ID. (required) + :type team_id: int + :param user_id: The user ID. (required) + :type user_id: int + :param save_team_user_request_v1: + :type save_team_user_request_v1: SaveTeamUserRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._save_team_user_v1_serialize( + team_id=team_id, + user_id=user_id, + save_team_user_request_v1=save_team_user_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamUserResponseV1", + "201": "TeamUserResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def save_team_user_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + save_team_user_request_v1: Optional[SaveTeamUserRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[TeamUserResponseV1]: + """Save Membership + + Add or update a membership. | Permission | Description | | -----------------------| --------------------------------------------------------------------------------------------------------| | memberships.edit | Required to create a new membership. | | memberships-roles.edit | Required to change roles of an existing membership or to create a new membership with a specific role. | + + :param team_id: The team ID. (required) + :type team_id: int + :param user_id: The user ID. (required) + :type user_id: int + :param save_team_user_request_v1: + :type save_team_user_request_v1: SaveTeamUserRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._save_team_user_v1_serialize( + team_id=team_id, + user_id=user_id, + save_team_user_request_v1=save_team_user_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamUserResponseV1", + "201": "TeamUserResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def save_team_user_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + save_team_user_request_v1: Optional[SaveTeamUserRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Save Membership + + Add or update a membership. | Permission | Description | | -----------------------| --------------------------------------------------------------------------------------------------------| | memberships.edit | Required to create a new membership. | | memberships-roles.edit | Required to change roles of an existing membership or to create a new membership with a specific role. | + + :param team_id: The team ID. (required) + :type team_id: int + :param user_id: The user ID. (required) + :type user_id: int + :param save_team_user_request_v1: + :type save_team_user_request_v1: SaveTeamUserRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._save_team_user_v1_serialize( + team_id=team_id, + user_id=user_id, + save_team_user_request_v1=save_team_user_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamUserResponseV1", + "201": "TeamUserResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _save_team_user_v1_serialize( + self, + team_id, + user_id, + save_team_user_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + if user_id is not None: + _path_params["userId"] = user_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if save_team_user_request_v1 is not None: + _body_params = save_team_user_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/teams/{teamId}/users/{userId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_team_by_id_v1( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + update_team_request_v1: Optional[UpdateTeamRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> TeamResponseV1: + """Update Team + + Update a team by its ID.\\ \\ **Required permissions:** _teams.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param update_team_request_v1: + :type update_team_request_v1: UpdateTeamRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_team_by_id_v1_serialize( + team_id=team_id, + update_team_request_v1=update_team_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_team_by_id_v1_with_http_info( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + update_team_request_v1: Optional[UpdateTeamRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[TeamResponseV1]: + """Update Team + + Update a team by its ID.\\ \\ **Required permissions:** _teams.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param update_team_request_v1: + :type update_team_request_v1: UpdateTeamRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_team_by_id_v1_serialize( + team_id=team_id, + update_team_request_v1=update_team_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_team_by_id_v1_without_preload_content( + self, + team_id: Annotated[int, Field(strict=True, ge=0, description="The team ID.")], + update_team_request_v1: Optional[UpdateTeamRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Team + + Update a team by its ID.\\ \\ **Required permissions:** _teams.edit_ + + :param team_id: The team ID. (required) + :type team_id: int + :param update_team_request_v1: + :type update_team_request_v1: UpdateTeamRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_team_by_id_v1_serialize( + team_id=team_id, + update_team_request_v1=update_team_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "TeamResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "415": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_team_by_id_v1_serialize( + self, + team_id, + update_team_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if team_id is not None: + _path_params["teamId"] = team_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_team_request_v1 is not None: + _body_params = update_team_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/teams/{teamId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/user_deactivation_api.py b/sysdig_client/api/user_deactivation_api.py new file mode 100644 index 00000000..211df6e6 --- /dev/null +++ b/sysdig_client/api/user_deactivation_api.py @@ -0,0 +1,505 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from sysdig_client.models.update_user_deactivation_configuration_request_v1 import UpdateUserDeactivationConfigurationRequestV1 +from sysdig_client.models.user_deactivation_configuration_response_v1 import UserDeactivationConfigurationResponseV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class UserDeactivationApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def get_user_deactivation_configuration_v1( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> UserDeactivationConfigurationResponseV1: + """Get User Deactivation Configuration + + Retrieve the user deactivation configuration.\\ \\ **Required permissions:** _customer-user-deactivation-configuration.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_user_deactivation_configuration_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserDeactivationConfigurationResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_user_deactivation_configuration_v1_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[UserDeactivationConfigurationResponseV1]: + """Get User Deactivation Configuration + + Retrieve the user deactivation configuration.\\ \\ **Required permissions:** _customer-user-deactivation-configuration.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_user_deactivation_configuration_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserDeactivationConfigurationResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_user_deactivation_configuration_v1_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get User Deactivation Configuration + + Retrieve the user deactivation configuration.\\ \\ **Required permissions:** _customer-user-deactivation-configuration.read_ + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_user_deactivation_configuration_v1_serialize( + _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserDeactivationConfigurationResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_user_deactivation_configuration_v1_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/configuration/user-deactivation", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_user_deactivation_configuration_by_id_v1( + self, + update_user_deactivation_configuration_request_v1: Optional[UpdateUserDeactivationConfigurationRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> UserDeactivationConfigurationResponseV1: + """Update or Create User Deactivation Configuration + + Update or Create User deactivation configuration.\\ \\ **Required permissions:** _customer-user-deactivation-configuration.edit_ + + :param update_user_deactivation_configuration_request_v1: + :type update_user_deactivation_configuration_request_v1: UpdateUserDeactivationConfigurationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_user_deactivation_configuration_by_id_v1_serialize( + update_user_deactivation_configuration_request_v1=update_user_deactivation_configuration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserDeactivationConfigurationResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_user_deactivation_configuration_by_id_v1_with_http_info( + self, + update_user_deactivation_configuration_request_v1: Optional[UpdateUserDeactivationConfigurationRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[UserDeactivationConfigurationResponseV1]: + """Update or Create User Deactivation Configuration + + Update or Create User deactivation configuration.\\ \\ **Required permissions:** _customer-user-deactivation-configuration.edit_ + + :param update_user_deactivation_configuration_request_v1: + :type update_user_deactivation_configuration_request_v1: UpdateUserDeactivationConfigurationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_user_deactivation_configuration_by_id_v1_serialize( + update_user_deactivation_configuration_request_v1=update_user_deactivation_configuration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserDeactivationConfigurationResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_user_deactivation_configuration_by_id_v1_without_preload_content( + self, + update_user_deactivation_configuration_request_v1: Optional[UpdateUserDeactivationConfigurationRequestV1] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update or Create User Deactivation Configuration + + Update or Create User deactivation configuration.\\ \\ **Required permissions:** _customer-user-deactivation-configuration.edit_ + + :param update_user_deactivation_configuration_request_v1: + :type update_user_deactivation_configuration_request_v1: UpdateUserDeactivationConfigurationRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_user_deactivation_configuration_by_id_v1_serialize( + update_user_deactivation_configuration_request_v1=update_user_deactivation_configuration_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserDeactivationConfigurationResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "415": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_user_deactivation_configuration_by_id_v1_serialize( + self, + update_user_deactivation_configuration_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_user_deactivation_configuration_request_v1 is not None: + _body_params = update_user_deactivation_configuration_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/configuration/user-deactivation", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/users_api.py b/sysdig_client/api/users_api.py new file mode 100644 index 00000000..bb7eebb0 --- /dev/null +++ b/sysdig_client/api/users_api.py @@ -0,0 +1,1370 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import StrictBool +from sysdig_client.models.create_user_request_v1 import CreateUserRequestV1 +from sysdig_client.models.get_users_paginated_response_v1 import GetUsersPaginatedResponseV1 +from sysdig_client.models.update_user_request_v1 import UpdateUserRequestV1 +from sysdig_client.models.user_response_v1 import UserResponseV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class UsersApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_user_v1( + self, + create_user_request_v1: Annotated[CreateUserRequestV1, Field(description="The payload required to create a new user.")], + activation_flow: Annotated[ + Optional[StrictBool], + Field( + description="The activation flow is used to send an invitation email to the user that is being created.\\ \\ **NOTE: it is required to set at least one product in the payload in order to send the appropriate email.** " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> UserResponseV1: + """Create User + + Create a new user.\\ \\ **Required permissions:** _users.create_ + + :param create_user_request_v1: The payload required to create a new user. (required) + :type create_user_request_v1: CreateUserRequestV1 + :param activation_flow: The activation flow is used to send an invitation email to the user that is being created.\\ \\ **NOTE: it is required to set at least one product in the payload in order to send the appropriate email.** + :type activation_flow: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_user_v1_serialize( + create_user_request_v1=create_user_request_v1, + activation_flow=activation_flow, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "UserResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_user_v1_with_http_info( + self, + create_user_request_v1: Annotated[CreateUserRequestV1, Field(description="The payload required to create a new user.")], + activation_flow: Annotated[ + Optional[StrictBool], + Field( + description="The activation flow is used to send an invitation email to the user that is being created.\\ \\ **NOTE: it is required to set at least one product in the payload in order to send the appropriate email.** " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[UserResponseV1]: + """Create User + + Create a new user.\\ \\ **Required permissions:** _users.create_ + + :param create_user_request_v1: The payload required to create a new user. (required) + :type create_user_request_v1: CreateUserRequestV1 + :param activation_flow: The activation flow is used to send an invitation email to the user that is being created.\\ \\ **NOTE: it is required to set at least one product in the payload in order to send the appropriate email.** + :type activation_flow: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_user_v1_serialize( + create_user_request_v1=create_user_request_v1, + activation_flow=activation_flow, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "UserResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_user_v1_without_preload_content( + self, + create_user_request_v1: Annotated[CreateUserRequestV1, Field(description="The payload required to create a new user.")], + activation_flow: Annotated[ + Optional[StrictBool], + Field( + description="The activation flow is used to send an invitation email to the user that is being created.\\ \\ **NOTE: it is required to set at least one product in the payload in order to send the appropriate email.** " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create User + + Create a new user.\\ \\ **Required permissions:** _users.create_ + + :param create_user_request_v1: The payload required to create a new user. (required) + :type create_user_request_v1: CreateUserRequestV1 + :param activation_flow: The activation flow is used to send an invitation email to the user that is being created.\\ \\ **NOTE: it is required to set at least one product in the payload in order to send the appropriate email.** + :type activation_flow: bool + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_user_v1_serialize( + create_user_request_v1=create_user_request_v1, + activation_flow=activation_flow, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "UserResponseV1", + "400": "Error", + "401": "Error", + "409": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_user_v1_serialize( + self, + create_user_request_v1, + activation_flow, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if activation_flow is not None: + _query_params.append(("activationFlow", activation_flow)) + + # process the header parameters + # process the form parameters + # process the body parameter + if create_user_request_v1 is not None: + _body_params = create_user_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/users", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_user_by_id_v1( + self, + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete User + + Delete a user by its ID.\\ \\ **Required permissions:** _users.edit_ + + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_user_by_id_v1_serialize( + user_id=user_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_user_by_id_v1_with_http_info( + self, + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete User + + Delete a user by its ID.\\ \\ **Required permissions:** _users.edit_ + + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_user_by_id_v1_serialize( + user_id=user_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_user_by_id_v1_without_preload_content( + self, + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete User + + Delete a user by its ID.\\ \\ **Required permissions:** _users.edit_ + + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_user_by_id_v1_serialize( + user_id=user_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_user_by_id_v1_serialize( + self, + user_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if user_id is not None: + _path_params["userId"] = user_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/users/{userId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_user_by_id_v1( + self, + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> UserResponseV1: + """Get User + + Display a user by ID.\\ \\ **Required permissions:** _users.read_ + + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_user_by_id_v1_serialize( + user_id=user_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_user_by_id_v1_with_http_info( + self, + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[UserResponseV1]: + """Get User + + Display a user by ID.\\ \\ **Required permissions:** _users.read_ + + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_user_by_id_v1_serialize( + user_id=user_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_user_by_id_v1_without_preload_content( + self, + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get User + + Display a user by ID.\\ \\ **Required permissions:** _users.read_ + + :param user_id: The user ID. (required) + :type user_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_user_by_id_v1_serialize( + user_id=user_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserResponseV1", + "400": "Error", + "401": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_user_by_id_v1_serialize( + self, + user_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if user_id is not None: + _path_params["userId"] = user_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/users/{userId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_users_v1( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetUsersPaginatedResponseV1: + """List Users + + Retrieve a paginated list of users.\\ \\ **Required permissions:** _users.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_users_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetUsersPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_users_v1_with_http_info( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetUsersPaginatedResponseV1]: + """List Users + + Retrieve a paginated list of users.\\ \\ **Required permissions:** _users.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_users_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetUsersPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_users_v1_without_preload_content( + self, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + orderby: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=256)]], + Field(description="The order by field separated by a colon for the direction"), + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=8192)]], + Field(description="The filter by field separated by a colon for the filter value"), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Users + + Retrieve a paginated list of users.\\ \\ **Required permissions:** _users.read_ + + :param offset: The offset number of items to start with + :type offset: int + :param limit: The number of items to return + :type limit: int + :param orderby: The order by field separated by a colon for the direction + :type orderby: str + :param filter: The filter by field separated by a colon for the filter value + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_users_v1_serialize( + offset=offset, + limit=limit, + orderby=orderby, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetUsersPaginatedResponseV1", + "400": "Error", + "401": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_users_v1_serialize( + self, + offset, + limit, + orderby, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if offset is not None: + _query_params.append(("offset", offset)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if orderby is not None: + _query_params.append(("orderby", orderby)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/users", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_user_v1( + self, + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + update_user_request_v1: UpdateUserRequestV1, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> UserResponseV1: + """Update User + + Update a user by its ID. \\ \\ **Required permissions:** _users.edit_ + + :param user_id: The user ID. (required) + :type user_id: int + :param update_user_request_v1: (required) + :type update_user_request_v1: UpdateUserRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_user_v1_serialize( + user_id=user_id, + update_user_request_v1=update_user_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_user_v1_with_http_info( + self, + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + update_user_request_v1: UpdateUserRequestV1, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[UserResponseV1]: + """Update User + + Update a user by its ID. \\ \\ **Required permissions:** _users.edit_ + + :param user_id: The user ID. (required) + :type user_id: int + :param update_user_request_v1: (required) + :type update_user_request_v1: UpdateUserRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_user_v1_serialize( + user_id=user_id, + update_user_request_v1=update_user_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_user_v1_without_preload_content( + self, + user_id: Annotated[int, Field(strict=True, ge=0, description="The user ID.")], + update_user_request_v1: UpdateUserRequestV1, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update User + + Update a user by its ID. \\ \\ **Required permissions:** _users.edit_ + + :param user_id: The user ID. (required) + :type user_id: int + :param update_user_request_v1: (required) + :type update_user_request_v1: UpdateUserRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_user_v1_serialize( + user_id=user_id, + update_user_request_v1=update_user_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "UserResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_user_v1_serialize( + self, + user_id, + update_user_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if user_id is not None: + _path_params["userId"] = user_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_user_request_v1 is not None: + _body_params = update_user_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/users/{userId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/vulnerability_management_api.py b/sysdig_client/api/vulnerability_management_api.py new file mode 100644 index 00000000..593c7c1c --- /dev/null +++ b/sysdig_client/api/vulnerability_management_api.py @@ -0,0 +1,5244 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import field_validator +from sysdig_client.models.create_bundle_request import CreateBundleRequest +from sysdig_client.models.create_policy_request import CreatePolicyRequest +from sysdig_client.models.create_risk_accepted_request import CreateRiskAcceptedRequest +from sysdig_client.models.get_bundle_response import GetBundleResponse +from sysdig_client.models.get_policy_response import GetPolicyResponse +from sysdig_client.models.list_bundles_response import ListBundlesResponse +from sysdig_client.models.list_policies_response import ListPoliciesResponse +from sysdig_client.models.list_risk_accepted_response import ListRiskAcceptedResponse +from sysdig_client.models.pipeline_results_response import PipelineResultsResponse +from sysdig_client.models.registry_results_response import RegistryResultsResponse +from sysdig_client.models.risk_accepted_response import RiskAcceptedResponse +from sysdig_client.models.runtime_results_response import RuntimeResultsResponse +from sysdig_client.models.scan_result_response import ScanResultResponse +from sysdig_client.models.update_risk_accepted import UpdateRiskAccepted + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class VulnerabilityManagementApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def delete_accepted_risk_v1( + self, + accepted_risk_id: Annotated[str, Field(strict=True, max_length=32, description="The Accepted Risk ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete an Accepted Risk + + Delete an Accepted Risk + + :param accepted_risk_id: The Accepted Risk ID (required) + :type accepted_risk_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_accepted_risk_v1_serialize( + accepted_risk_id=accepted_risk_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_accepted_risk_v1_with_http_info( + self, + accepted_risk_id: Annotated[str, Field(strict=True, max_length=32, description="The Accepted Risk ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete an Accepted Risk + + Delete an Accepted Risk + + :param accepted_risk_id: The Accepted Risk ID (required) + :type accepted_risk_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_accepted_risk_v1_serialize( + accepted_risk_id=accepted_risk_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_accepted_risk_v1_without_preload_content( + self, + accepted_risk_id: Annotated[str, Field(strict=True, max_length=32, description="The Accepted Risk ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete an Accepted Risk + + Delete an Accepted Risk + + :param accepted_risk_id: The Accepted Risk ID (required) + :type accepted_risk_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_accepted_risk_v1_serialize( + accepted_risk_id=accepted_risk_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_accepted_risk_v1_serialize( + self, + accepted_risk_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if accepted_risk_id is not None: + _path_params["acceptedRiskID"] = accepted_risk_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_accepted_risk_v1( + self, + accepted_risk_id: Annotated[str, Field(strict=True, max_length=32, description="The Accepted Risk ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RiskAcceptedResponse: + """Get Accepted Risk + + Get the Accepted Risk given the ID + + :param accepted_risk_id: The Accepted Risk ID (required) + :type accepted_risk_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_accepted_risk_v1_serialize( + accepted_risk_id=accepted_risk_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_accepted_risk_v1_with_http_info( + self, + accepted_risk_id: Annotated[str, Field(strict=True, max_length=32, description="The Accepted Risk ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[RiskAcceptedResponse]: + """Get Accepted Risk + + Get the Accepted Risk given the ID + + :param accepted_risk_id: The Accepted Risk ID (required) + :type accepted_risk_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_accepted_risk_v1_serialize( + accepted_risk_id=accepted_risk_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_accepted_risk_v1_without_preload_content( + self, + accepted_risk_id: Annotated[str, Field(strict=True, max_length=32, description="The Accepted Risk ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Accepted Risk + + Get the Accepted Risk given the ID + + :param accepted_risk_id: The Accepted Risk ID (required) + :type accepted_risk_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_accepted_risk_v1_serialize( + accepted_risk_id=accepted_risk_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_accepted_risk_v1_serialize( + self, + accepted_risk_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if accepted_risk_id is not None: + _path_params["acceptedRiskID"] = accepted_risk_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_accepted_risks_v1( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=200)]], + Field(description="The filtering string in secure-querylang syntax."), + ] = None, + order: Annotated[Optional[StrictStr], Field(description="The sorting order")] = None, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + sort: Annotated[Optional[StrictStr], Field(description="The sorting string")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListRiskAcceptedResponse: + """List all Accepted Risks + + List all Accepted Risks for a given account + + :param filter: The filtering string in secure-querylang syntax. + :type filter: str + :param order: The sorting order + :type order: str + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: The number of items to return + :type limit: int + :param sort: The sorting string + :type sort: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_accepted_risks_v1_serialize( + filter=filter, + order=order, + cursor=cursor, + limit=limit, + sort=sort, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListRiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_accepted_risks_v1_with_http_info( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=200)]], + Field(description="The filtering string in secure-querylang syntax."), + ] = None, + order: Annotated[Optional[StrictStr], Field(description="The sorting order")] = None, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + sort: Annotated[Optional[StrictStr], Field(description="The sorting string")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListRiskAcceptedResponse]: + """List all Accepted Risks + + List all Accepted Risks for a given account + + :param filter: The filtering string in secure-querylang syntax. + :type filter: str + :param order: The sorting order + :type order: str + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: The number of items to return + :type limit: int + :param sort: The sorting string + :type sort: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_accepted_risks_v1_serialize( + filter=filter, + order=order, + cursor=cursor, + limit=limit, + sort=sort, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListRiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_accepted_risks_v1_without_preload_content( + self, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=200)]], + Field(description="The filtering string in secure-querylang syntax."), + ] = None, + order: Annotated[Optional[StrictStr], Field(description="The sorting order")] = None, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + sort: Annotated[Optional[StrictStr], Field(description="The sorting string")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List all Accepted Risks + + List all Accepted Risks for a given account + + :param filter: The filtering string in secure-querylang syntax. + :type filter: str + :param order: The sorting order + :type order: str + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: The number of items to return + :type limit: int + :param sort: The sorting string + :type sort: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_accepted_risks_v1_serialize( + filter=filter, + order=order, + cursor=cursor, + limit=limit, + sort=sort, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListRiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_accepted_risks_v1_serialize( + self, + filter, + order, + cursor, + limit, + sort, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if filter is not None: + _query_params.append(("filter", filter)) + + if order is not None: + _query_params.append(("order", order)) + + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if sort is not None: + _query_params.append(("sort", sort)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1beta1/accepted-risks", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def post_accepted_risk_v1( + self, + create_risk_accepted_request: Annotated[CreateRiskAcceptedRequest, Field(description="The Accepted Risk definition")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RiskAcceptedResponse: + """Create Accepted Risk + + Creates an Accepted Risk + + :param create_risk_accepted_request: The Accepted Risk definition (required) + :type create_risk_accepted_request: CreateRiskAcceptedRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_accepted_risk_v1_serialize( + create_risk_accepted_request=create_risk_accepted_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "RiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def post_accepted_risk_v1_with_http_info( + self, + create_risk_accepted_request: Annotated[CreateRiskAcceptedRequest, Field(description="The Accepted Risk definition")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[RiskAcceptedResponse]: + """Create Accepted Risk + + Creates an Accepted Risk + + :param create_risk_accepted_request: The Accepted Risk definition (required) + :type create_risk_accepted_request: CreateRiskAcceptedRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_accepted_risk_v1_serialize( + create_risk_accepted_request=create_risk_accepted_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "RiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def post_accepted_risk_v1_without_preload_content( + self, + create_risk_accepted_request: Annotated[CreateRiskAcceptedRequest, Field(description="The Accepted Risk definition")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Accepted Risk + + Creates an Accepted Risk + + :param create_risk_accepted_request: The Accepted Risk definition (required) + :type create_risk_accepted_request: CreateRiskAcceptedRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._post_accepted_risk_v1_serialize( + create_risk_accepted_request=create_risk_accepted_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "RiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _post_accepted_risk_v1_serialize( + self, + create_risk_accepted_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_risk_accepted_request is not None: + _body_params = create_risk_accepted_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/secure/vulnerability/v1beta1/accepted-risks", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def scanner_api_service_list_registry_results( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], + Field( + description='Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `freeText = "alpine:latest" and vendor = "docker"`) - `=` and `!=` comparison operators (i.e. `vendor = "ecr"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are: `freeText`, `vendor`. - `vendor` as string value - `freeText` as string value (note that it will search on the full image name)' + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RegistryResultsResponse: + """Get a list of registry scan results + + Retrieves a list of registry scan results discovered by the registry scanner that match a filter given a specified cursor. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param filter: Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `freeText = \"alpine:latest\" and vendor = \"docker\"`) - `=` and `!=` comparison operators (i.e. `vendor = \"ecr\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are: `freeText`, `vendor`. - `vendor` as string value - `freeText` as string value (note that it will search on the full image name) + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._scanner_api_service_list_registry_results_serialize( + cursor=cursor, + limit=limit, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RegistryResultsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def scanner_api_service_list_registry_results_with_http_info( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], + Field( + description='Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `freeText = "alpine:latest" and vendor = "docker"`) - `=` and `!=` comparison operators (i.e. `vendor = "ecr"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are: `freeText`, `vendor`. - `vendor` as string value - `freeText` as string value (note that it will search on the full image name)' + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[RegistryResultsResponse]: + """Get a list of registry scan results + + Retrieves a list of registry scan results discovered by the registry scanner that match a filter given a specified cursor. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param filter: Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `freeText = \"alpine:latest\" and vendor = \"docker\"`) - `=` and `!=` comparison operators (i.e. `vendor = \"ecr\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are: `freeText`, `vendor`. - `vendor` as string value - `freeText` as string value (note that it will search on the full image name) + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._scanner_api_service_list_registry_results_serialize( + cursor=cursor, + limit=limit, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RegistryResultsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def scanner_api_service_list_registry_results_without_preload_content( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], + Field( + description='Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `freeText = "alpine:latest" and vendor = "docker"`) - `=` and `!=` comparison operators (i.e. `vendor = "ecr"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are: `freeText`, `vendor`. - `vendor` as string value - `freeText` as string value (note that it will search on the full image name)' + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get a list of registry scan results + + Retrieves a list of registry scan results discovered by the registry scanner that match a filter given a specified cursor. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param filter: Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `freeText = \"alpine:latest\" and vendor = \"docker\"`) - `=` and `!=` comparison operators (i.e. `vendor = \"ecr\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are: `freeText`, `vendor`. - `vendor` as string value - `freeText` as string value (note that it will search on the full image name) + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._scanner_api_service_list_registry_results_serialize( + cursor=cursor, + limit=limit, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RegistryResultsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _scanner_api_service_list_registry_results_serialize( + self, + cursor, + limit, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1/registry-results", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def scanner_api_service_list_runtime_results( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], + Field( + description='Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `kubernetes.cluster.name="production" and kubernetes.pod.container.name = "docker.internal.sysdig.tools"`) - `=` and `!=` comparison operators (i.e. `kubernetes.cluster.name="staging"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are the all the fields of the `Scope`, plus: `freeText`, `hasRunningVulns` and `hasRunningVulns`.' + ), + ] = None, + sort: Annotated[ + Optional[StrictStr], + Field( + description="Field used to sort the results vulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity runningVulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity for running assets" + ), + ] = None, + order: Annotated[Optional[StrictStr], Field(description="Ordering of the results for the sort field")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RuntimeResultsResponse: + """Get a list of runtime scan results + + Retrieves a list of runtime scan results discovered by the runtime scanner that match a filter given a specified cursor. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param filter: Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `kubernetes.cluster.name=\"production\" and kubernetes.pod.container.name = \"docker.internal.sysdig.tools\"`) - `=` and `!=` comparison operators (i.e. `kubernetes.cluster.name=\"staging\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are the all the fields of the `Scope`, plus: `freeText`, `hasRunningVulns` and `hasRunningVulns`. + :type filter: str + :param sort: Field used to sort the results vulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity runningVulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity for running assets + :type sort: str + :param order: Ordering of the results for the sort field + :type order: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._scanner_api_service_list_runtime_results_serialize( + cursor=cursor, + limit=limit, + filter=filter, + sort=sort, + order=order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RuntimeResultsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def scanner_api_service_list_runtime_results_with_http_info( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], + Field( + description='Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `kubernetes.cluster.name="production" and kubernetes.pod.container.name = "docker.internal.sysdig.tools"`) - `=` and `!=` comparison operators (i.e. `kubernetes.cluster.name="staging"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are the all the fields of the `Scope`, plus: `freeText`, `hasRunningVulns` and `hasRunningVulns`.' + ), + ] = None, + sort: Annotated[ + Optional[StrictStr], + Field( + description="Field used to sort the results vulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity runningVulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity for running assets" + ), + ] = None, + order: Annotated[Optional[StrictStr], Field(description="Ordering of the results for the sort field")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[RuntimeResultsResponse]: + """Get a list of runtime scan results + + Retrieves a list of runtime scan results discovered by the runtime scanner that match a filter given a specified cursor. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param filter: Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `kubernetes.cluster.name=\"production\" and kubernetes.pod.container.name = \"docker.internal.sysdig.tools\"`) - `=` and `!=` comparison operators (i.e. `kubernetes.cluster.name=\"staging\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are the all the fields of the `Scope`, plus: `freeText`, `hasRunningVulns` and `hasRunningVulns`. + :type filter: str + :param sort: Field used to sort the results vulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity runningVulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity for running assets + :type sort: str + :param order: Ordering of the results for the sort field + :type order: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._scanner_api_service_list_runtime_results_serialize( + cursor=cursor, + limit=limit, + filter=filter, + sort=sort, + order=order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RuntimeResultsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def scanner_api_service_list_runtime_results_without_preload_content( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], + Field( + description='Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `kubernetes.cluster.name="production" and kubernetes.pod.container.name = "docker.internal.sysdig.tools"`) - `=` and `!=` comparison operators (i.e. `kubernetes.cluster.name="staging"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are the all the fields of the `Scope`, plus: `freeText`, `hasRunningVulns` and `hasRunningVulns`.' + ), + ] = None, + sort: Annotated[ + Optional[StrictStr], + Field( + description="Field used to sort the results vulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity runningVulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity for running assets" + ), + ] = None, + order: Annotated[Optional[StrictStr], Field(description="Ordering of the results for the sort field")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get a list of runtime scan results + + Retrieves a list of runtime scan results discovered by the runtime scanner that match a filter given a specified cursor. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param filter: Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Operators: - `and`, `or` logical operators (i.e. `kubernetes.cluster.name=\"production\" and kubernetes.pod.container.name = \"docker.internal.sysdig.tools\"`) - `=` and `!=` comparison operators (i.e. `kubernetes.cluster.name=\"staging\"`) This query language does not support the full set of metrics supported in the monitor query language, but instead supports a set of fields proper to each Scan Result type. The supported fields are the all the fields of the `Scope`, plus: `freeText`, `hasRunningVulns` and `hasRunningVulns`. + :type filter: str + :param sort: Field used to sort the results vulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity runningVulnTotalBySeverity: sort by total number of running vulnerabilities weighted by severity for running assets + :type sort: str + :param order: Ordering of the results for the sort field + :type order: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._scanner_api_service_list_runtime_results_serialize( + cursor=cursor, + limit=limit, + filter=filter, + sort=sort, + order=order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RuntimeResultsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _scanner_api_service_list_runtime_results_serialize( + self, + cursor, + limit, + filter, + sort, + order, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if filter is not None: + _query_params.append(("filter", filter)) + + if sort is not None: + _query_params.append(("sort", sort)) + + if order is not None: + _query_params.append(("order", order)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1/runtime-results", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_bundles_bundle_id_delete( + self, + bundle_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy Bundle ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Bundle + + Deletes an existing Rule Bundle only if it is not used by any Policy. An HTTP error is returned if the Bundle being deleted is the only one currently attached to any Policy. Once deleted, subsequent calls to the Service will not return that Bundle anymore. However, some instances of the Inline Scanner might be running concurrently and may have already downloaded a Policy containing that Bundle. + + :param bundle_id: The Policy Bundle ID (required) + :type bundle_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_bundle_id_delete_serialize( + bundle_id=bundle_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": None, + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_bundles_bundle_id_delete_with_http_info( + self, + bundle_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy Bundle ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Bundle + + Deletes an existing Rule Bundle only if it is not used by any Policy. An HTTP error is returned if the Bundle being deleted is the only one currently attached to any Policy. Once deleted, subsequent calls to the Service will not return that Bundle anymore. However, some instances of the Inline Scanner might be running concurrently and may have already downloaded a Policy containing that Bundle. + + :param bundle_id: The Policy Bundle ID (required) + :type bundle_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_bundle_id_delete_serialize( + bundle_id=bundle_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": None, + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_bundles_bundle_id_delete_without_preload_content( + self, + bundle_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy Bundle ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Bundle + + Deletes an existing Rule Bundle only if it is not used by any Policy. An HTTP error is returned if the Bundle being deleted is the only one currently attached to any Policy. Once deleted, subsequent calls to the Service will not return that Bundle anymore. However, some instances of the Inline Scanner might be running concurrently and may have already downloaded a Policy containing that Bundle. + + :param bundle_id: The Policy Bundle ID (required) + :type bundle_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_bundle_id_delete_serialize( + bundle_id=bundle_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": None, + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_bundles_bundle_id_delete_serialize( + self, + bundle_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if bundle_id is not None: + _path_params["bundleId"] = bundle_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/secure/vulnerability/v1/bundles/{bundleId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_bundles_bundle_id_get( + self, + bundle_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy Bundle ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetBundleResponse: + """Get a Bundle + + Retrieves a specific rule bundle. + + :param bundle_id: The Policy Bundle ID (required) + :type bundle_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_bundle_id_get_serialize( + bundle_id=bundle_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetBundleResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_bundles_bundle_id_get_with_http_info( + self, + bundle_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy Bundle ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetBundleResponse]: + """Get a Bundle + + Retrieves a specific rule bundle. + + :param bundle_id: The Policy Bundle ID (required) + :type bundle_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_bundle_id_get_serialize( + bundle_id=bundle_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetBundleResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_bundles_bundle_id_get_without_preload_content( + self, + bundle_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy Bundle ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get a Bundle + + Retrieves a specific rule bundle. + + :param bundle_id: The Policy Bundle ID (required) + :type bundle_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_bundle_id_get_serialize( + bundle_id=bundle_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetBundleResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_bundles_bundle_id_get_serialize( + self, + bundle_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if bundle_id is not None: + _path_params["bundleId"] = bundle_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1/bundles/{bundleId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_bundles_bundle_id_put( + self, + bundle_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy Bundle ID")], + create_bundle_request: Optional[CreateBundleRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetBundleResponse: + """Edit Bundle + + Edits a specific Rule Bundle definition. The Bundle definition is tested for structural correctness. If the Bundle being edited is a Sysdig predefined one, no modifications are applied, and an HTTP error is returned. + + :param bundle_id: The Policy Bundle ID (required) + :type bundle_id: int + :param create_bundle_request: + :type create_bundle_request: CreateBundleRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_bundle_id_put_serialize( + bundle_id=bundle_id, + create_bundle_request=create_bundle_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetBundleResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_bundles_bundle_id_put_with_http_info( + self, + bundle_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy Bundle ID")], + create_bundle_request: Optional[CreateBundleRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetBundleResponse]: + """Edit Bundle + + Edits a specific Rule Bundle definition. The Bundle definition is tested for structural correctness. If the Bundle being edited is a Sysdig predefined one, no modifications are applied, and an HTTP error is returned. + + :param bundle_id: The Policy Bundle ID (required) + :type bundle_id: int + :param create_bundle_request: + :type create_bundle_request: CreateBundleRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_bundle_id_put_serialize( + bundle_id=bundle_id, + create_bundle_request=create_bundle_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetBundleResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_bundles_bundle_id_put_without_preload_content( + self, + bundle_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy Bundle ID")], + create_bundle_request: Optional[CreateBundleRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Edit Bundle + + Edits a specific Rule Bundle definition. The Bundle definition is tested for structural correctness. If the Bundle being edited is a Sysdig predefined one, no modifications are applied, and an HTTP error is returned. + + :param bundle_id: The Policy Bundle ID (required) + :type bundle_id: int + :param create_bundle_request: + :type create_bundle_request: CreateBundleRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_bundle_id_put_serialize( + bundle_id=bundle_id, + create_bundle_request=create_bundle_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetBundleResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_bundles_bundle_id_put_serialize( + self, + bundle_id, + create_bundle_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if bundle_id is not None: + _path_params["bundleId"] = bundle_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_bundle_request is not None: + _body_params = create_bundle_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/secure/vulnerability/v1/bundles/{bundleId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_bundles_get( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListBundlesResponse: + """List Bundles + + Retrieves all bundles, including those defined by users and those defined by Sysdig. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_get_serialize( + cursor=cursor, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListBundlesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_bundles_get_with_http_info( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListBundlesResponse]: + """List Bundles + + Retrieves all bundles, including those defined by users and those defined by Sysdig. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_get_serialize( + cursor=cursor, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListBundlesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_bundles_get_without_preload_content( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Bundles + + Retrieves all bundles, including those defined by users and those defined by Sysdig. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_get_serialize( + cursor=cursor, + limit=limit, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListBundlesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_bundles_get_serialize( + self, + cursor, + limit, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if limit is not None: + _query_params.append(("limit", limit)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1/bundles", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_bundles_post( + self, + create_bundle_request: Optional[CreateBundleRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetBundleResponse: + """Create a new Bundle + + Creates a new Bundle definition. The Bundle definition is tested for structural correctness. + + :param create_bundle_request: + :type create_bundle_request: CreateBundleRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_post_serialize( + create_bundle_request=create_bundle_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "GetBundleResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_bundles_post_with_http_info( + self, + create_bundle_request: Optional[CreateBundleRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetBundleResponse]: + """Create a new Bundle + + Creates a new Bundle definition. The Bundle definition is tested for structural correctness. + + :param create_bundle_request: + :type create_bundle_request: CreateBundleRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_post_serialize( + create_bundle_request=create_bundle_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "GetBundleResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_bundles_post_without_preload_content( + self, + create_bundle_request: Optional[CreateBundleRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create a new Bundle + + Creates a new Bundle definition. The Bundle definition is tested for structural correctness. + + :param create_bundle_request: + :type create_bundle_request: CreateBundleRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_bundles_post_serialize( + create_bundle_request=create_bundle_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "GetBundleResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_bundles_post_serialize( + self, + create_bundle_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_bundle_request is not None: + _body_params = create_bundle_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/secure/vulnerability/v1/bundles", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_pipeline_results_get( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], + Field( + description="Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Only the freeText parameter is supported: - `freeText` as string value (note that it will search on the full image name)" + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> PipelineResultsResponse: + """Get a list of pipeline scan results + + Retrieves a list of scan results produced by pipelines that match a filter given a specified cursor. No sorting is supported, the items are sorted in a stable way by their ID. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param filter: Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Only the freeText parameter is supported: - `freeText` as string value (note that it will search on the full image name) + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_pipeline_results_get_serialize( + cursor=cursor, + limit=limit, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PipelineResultsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_pipeline_results_get_with_http_info( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], + Field( + description="Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Only the freeText parameter is supported: - `freeText` as string value (note that it will search on the full image name)" + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[PipelineResultsResponse]: + """Get a list of pipeline scan results + + Retrieves a list of scan results produced by pipelines that match a filter given a specified cursor. No sorting is supported, the items are sorted in a stable way by their ID. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param filter: Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Only the freeText parameter is supported: - `freeText` as string value (note that it will search on the full image name) + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_pipeline_results_get_serialize( + cursor=cursor, + limit=limit, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PipelineResultsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_pipeline_results_get_without_preload_content( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + filter: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], + Field( + description="Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Only the freeText parameter is supported: - `freeText` as string value (note that it will search on the full image name)" + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get a list of pipeline scan results + + Retrieves a list of scan results produced by pipelines that match a filter given a specified cursor. No sorting is supported, the items are sorted in a stable way by their ID. + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param filter: Query language expression for filtering results. It is a subset of the full metrics query language used in monitoring. Only the freeText parameter is supported: - `freeText` as string value (note that it will search on the full image name) + :type filter: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_pipeline_results_get_serialize( + cursor=cursor, + limit=limit, + filter=filter, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "PipelineResultsResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_pipeline_results_get_serialize( + self, + cursor, + limit, + filter, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if filter is not None: + _query_params.append(("filter", filter)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1/pipeline-results", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_policies_get( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], Field(description="Filter policies by name") + ] = None, + stages: Annotated[ + Optional[Annotated[List[StrictStr], Field(max_length=4)]], Field(description="Filter policies by applied stages") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListPoliciesResponse: + """List Policies + + Retrieves all Policy definitions + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param name: Filter policies by name + :type name: str + :param stages: Filter policies by applied stages + :type stages: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_get_serialize( + cursor=cursor, + limit=limit, + name=name, + stages=stages, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListPoliciesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_policies_get_with_http_info( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], Field(description="Filter policies by name") + ] = None, + stages: Annotated[ + Optional[Annotated[List[StrictStr], Field(max_length=4)]], Field(description="Filter policies by applied stages") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListPoliciesResponse]: + """List Policies + + Retrieves all Policy definitions + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param name: Filter policies by name + :type name: str + :param stages: Filter policies by applied stages + :type stages: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_get_serialize( + cursor=cursor, + limit=limit, + name=name, + stages=stages, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListPoliciesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_policies_get_without_preload_content( + self, + cursor: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=300)]], + Field( + description="Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page." + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Limit for pagination") + ] = None, + name: Annotated[ + Optional[Annotated[str, Field(strict=True, max_length=1024)]], Field(description="Filter policies by name") + ] = None, + stages: Annotated[ + Optional[Annotated[List[StrictStr], Field(max_length=4)]], Field(description="Filter policies by applied stages") + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Policies + + Retrieves all Policy definitions + + :param cursor: Cursor is a string used to retrieve a particular page of data. It is an opaque structure, and should not be mangled. It could be retrieved in the body of each request. If a response does not contain a cursor, it means that it's the last page. + :type cursor: str + :param limit: Limit for pagination + :type limit: int + :param name: Filter policies by name + :type name: str + :param stages: Filter policies by applied stages + :type stages: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_get_serialize( + cursor=cursor, + limit=limit, + name=name, + stages=stages, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListPoliciesResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_policies_get_serialize( + self, + cursor, + limit, + name, + stages, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "stages": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if cursor is not None: + _query_params.append(("cursor", cursor)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if name is not None: + _query_params.append(("name", name)) + + if stages is not None: + _query_params.append(("stages", stages)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1/policies", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_policies_policy_id_delete( + self, + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete a Policy + + Deletes an existing Policy definition. Subsequent calls to the service will not return that Policy anymore. However, some instances of the Inline Scanner might be running concurrently and may have already downloaded the Policy. + + :param policy_id: The Policy ID (required) + :type policy_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_policy_id_delete_serialize( + policy_id=policy_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": None, + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_policies_policy_id_delete_with_http_info( + self, + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete a Policy + + Deletes an existing Policy definition. Subsequent calls to the service will not return that Policy anymore. However, some instances of the Inline Scanner might be running concurrently and may have already downloaded the Policy. + + :param policy_id: The Policy ID (required) + :type policy_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_policy_id_delete_serialize( + policy_id=policy_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": None, + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_policies_policy_id_delete_without_preload_content( + self, + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete a Policy + + Deletes an existing Policy definition. Subsequent calls to the service will not return that Policy anymore. However, some instances of the Inline Scanner might be running concurrently and may have already downloaded the Policy. + + :param policy_id: The Policy ID (required) + :type policy_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_policy_id_delete_serialize( + policy_id=policy_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": None, + "400": "Error", + "401": "Error", + "403": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_policies_policy_id_delete_serialize( + self, + policy_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if policy_id is not None: + _path_params["policyId"] = policy_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/secure/vulnerability/v1/policies/{policyId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_policies_policy_id_get( + self, + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetPolicyResponse: + """Get a Policy + + Retrieves a specific Policy definition + + :param policy_id: The Policy ID (required) + :type policy_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_policy_id_get_serialize( + policy_id=policy_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPolicyResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_policies_policy_id_get_with_http_info( + self, + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetPolicyResponse]: + """Get a Policy + + Retrieves a specific Policy definition + + :param policy_id: The Policy ID (required) + :type policy_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_policy_id_get_serialize( + policy_id=policy_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPolicyResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_policies_policy_id_get_without_preload_content( + self, + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy ID")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get a Policy + + Retrieves a specific Policy definition + + :param policy_id: The Policy ID (required) + :type policy_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_policy_id_get_serialize( + policy_id=policy_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPolicyResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_policies_policy_id_get_serialize( + self, + policy_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if policy_id is not None: + _path_params["policyId"] = policy_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1/policies/{policyId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_policies_policy_id_put( + self, + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy ID")], + create_policy_request: Optional[CreatePolicyRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetPolicyResponse: + """Edit a Policy + + Edits a specific Policy definition. The Policy definition is validated for both structural and partial semantic correctness. However, semantic correctness cannot be fully guaranteed, and checks will be performed on a best-effort basis. + + :param policy_id: The Policy ID (required) + :type policy_id: int + :param create_policy_request: + :type create_policy_request: CreatePolicyRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_policy_id_put_serialize( + policy_id=policy_id, + create_policy_request=create_policy_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPolicyResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_policies_policy_id_put_with_http_info( + self, + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy ID")], + create_policy_request: Optional[CreatePolicyRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetPolicyResponse]: + """Edit a Policy + + Edits a specific Policy definition. The Policy definition is validated for both structural and partial semantic correctness. However, semantic correctness cannot be fully guaranteed, and checks will be performed on a best-effort basis. + + :param policy_id: The Policy ID (required) + :type policy_id: int + :param create_policy_request: + :type create_policy_request: CreatePolicyRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_policy_id_put_serialize( + policy_id=policy_id, + create_policy_request=create_policy_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPolicyResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_policies_policy_id_put_without_preload_content( + self, + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0, description="The Policy ID")], + create_policy_request: Optional[CreatePolicyRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Edit a Policy + + Edits a specific Policy definition. The Policy definition is validated for both structural and partial semantic correctness. However, semantic correctness cannot be fully guaranteed, and checks will be performed on a best-effort basis. + + :param policy_id: The Policy ID (required) + :type policy_id: int + :param create_policy_request: + :type create_policy_request: CreatePolicyRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_policy_id_put_serialize( + policy_id=policy_id, + create_policy_request=create_policy_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "GetPolicyResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_policies_policy_id_put_serialize( + self, + policy_id, + create_policy_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if policy_id is not None: + _path_params["policyId"] = policy_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_policy_request is not None: + _body_params = create_policy_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/secure/vulnerability/v1/policies/{policyId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_policies_post( + self, + create_policy_request: Optional[CreatePolicyRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> GetPolicyResponse: + """Create a new Policy + + Creates a Policy definition. The Policy definition is validated for structural correctness and partially for semantic correctness. However, semantic correctness cannot be fully guaranteed, and checks will be performed on a best-effort basis. + + :param create_policy_request: + :type create_policy_request: CreatePolicyRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_post_serialize( + create_policy_request=create_policy_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "GetPolicyResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_policies_post_with_http_info( + self, + create_policy_request: Optional[CreatePolicyRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[GetPolicyResponse]: + """Create a new Policy + + Creates a Policy definition. The Policy definition is validated for structural correctness and partially for semantic correctness. However, semantic correctness cannot be fully guaranteed, and checks will be performed on a best-effort basis. + + :param create_policy_request: + :type create_policy_request: CreatePolicyRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_post_serialize( + create_policy_request=create_policy_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "GetPolicyResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_policies_post_without_preload_content( + self, + create_policy_request: Optional[CreatePolicyRequest] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create a new Policy + + Creates a Policy definition. The Policy definition is validated for structural correctness and partially for semantic correctness. However, semantic correctness cannot be fully guaranteed, and checks will be performed on a best-effort basis. + + :param create_policy_request: + :type create_policy_request: CreatePolicyRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_policies_post_serialize( + create_policy_request=create_policy_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "201": "GetPolicyResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_policies_post_serialize( + self, + create_policy_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_policy_request is not None: + _body_params = create_policy_request + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/secure/vulnerability/v1/policies", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def secure_vulnerability_v1_results_result_id_get( + self, + result_id: Annotated[ + str, + Field( + strict=True, + max_length=255, + description="The ID of a single scan result. Could be retrieved by one of the listing endpoints.", + ), + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ScanResultResponse: + """Get full scan result + + Retrieve a full scan result produced by any scanner that match a given ID + + :param result_id: The ID of a single scan result. Could be retrieved by one of the listing endpoints. (required) + :type result_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_results_result_id_get_serialize( + result_id=result_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ScanResultResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def secure_vulnerability_v1_results_result_id_get_with_http_info( + self, + result_id: Annotated[ + str, + Field( + strict=True, + max_length=255, + description="The ID of a single scan result. Could be retrieved by one of the listing endpoints.", + ), + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ScanResultResponse]: + """Get full scan result + + Retrieve a full scan result produced by any scanner that match a given ID + + :param result_id: The ID of a single scan result. Could be retrieved by one of the listing endpoints. (required) + :type result_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_results_result_id_get_serialize( + result_id=result_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ScanResultResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def secure_vulnerability_v1_results_result_id_get_without_preload_content( + self, + result_id: Annotated[ + str, + Field( + strict=True, + max_length=255, + description="The ID of a single scan result. Could be retrieved by one of the listing endpoints.", + ), + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get full scan result + + Retrieve a full scan result produced by any scanner that match a given ID + + :param result_id: The ID of a single scan result. Could be retrieved by one of the listing endpoints. (required) + :type result_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._secure_vulnerability_v1_results_result_id_get_serialize( + result_id=result_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ScanResultResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _secure_vulnerability_v1_results_result_id_get_serialize( + self, + result_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if result_id is not None: + _path_params["resultId"] = result_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/secure/vulnerability/v1/results/{resultId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def update_accepted_risk_v1( + self, + accepted_risk_id: Annotated[str, Field(strict=True, max_length=32, description="The Accepted Risk ID")], + update_risk_accepted: Annotated[ + UpdateRiskAccepted, Field(description="Update an Accepted Risk expirationDate, reason, or description.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RiskAcceptedResponse: + """Update an Accepted Risk + + Update an Accepted Risk by changing the expirationDate, reason, or description. + + :param accepted_risk_id: The Accepted Risk ID (required) + :type accepted_risk_id: str + :param update_risk_accepted: Update an Accepted Risk expirationDate, reason, or description. (required) + :type update_risk_accepted: UpdateRiskAccepted + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_accepted_risk_v1_serialize( + accepted_risk_id=accepted_risk_id, + update_risk_accepted=update_risk_accepted, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def update_accepted_risk_v1_with_http_info( + self, + accepted_risk_id: Annotated[str, Field(strict=True, max_length=32, description="The Accepted Risk ID")], + update_risk_accepted: Annotated[ + UpdateRiskAccepted, Field(description="Update an Accepted Risk expirationDate, reason, or description.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[RiskAcceptedResponse]: + """Update an Accepted Risk + + Update an Accepted Risk by changing the expirationDate, reason, or description. + + :param accepted_risk_id: The Accepted Risk ID (required) + :type accepted_risk_id: str + :param update_risk_accepted: Update an Accepted Risk expirationDate, reason, or description. (required) + :type update_risk_accepted: UpdateRiskAccepted + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_accepted_risk_v1_serialize( + accepted_risk_id=accepted_risk_id, + update_risk_accepted=update_risk_accepted, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def update_accepted_risk_v1_without_preload_content( + self, + accepted_risk_id: Annotated[str, Field(strict=True, max_length=32, description="The Accepted Risk ID")], + update_risk_accepted: Annotated[ + UpdateRiskAccepted, Field(description="Update an Accepted Risk expirationDate, reason, or description.") + ], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update an Accepted Risk + + Update an Accepted Risk by changing the expirationDate, reason, or description. + + :param accepted_risk_id: The Accepted Risk ID (required) + :type accepted_risk_id: str + :param update_risk_accepted: Update an Accepted Risk expirationDate, reason, or description. (required) + :type update_risk_accepted: UpdateRiskAccepted + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_accepted_risk_v1_serialize( + accepted_risk_id=accepted_risk_id, + update_risk_accepted=update_risk_accepted, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "RiskAcceptedResponse", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _update_accepted_risk_v1_serialize( + self, + accepted_risk_id, + update_risk_accepted, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if accepted_risk_id is not None: + _path_params["acceptedRiskID"] = accepted_risk_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if update_risk_accepted is not None: + _body_params = update_risk_accepted + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/secure/vulnerability/v1beta1/accepted-risks/{acceptedRiskID}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api/zones_api.py b/sysdig_client/api/zones_api.py new file mode 100644 index 00000000..0eee4208 --- /dev/null +++ b/sysdig_client/api/zones_api.py @@ -0,0 +1,1374 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + + +from sysdig_client.models.create_zone_request_v1 import CreateZoneRequestV1 +from sysdig_client.models.list_zones_response_v1 import ListZonesResponseV1 +from sysdig_client.models.zone_response_v1 import ZoneResponseV1 + +from sysdig_client.api_client import ApiClient, RequestSerialized +from sysdig_client.api_response import ApiResponse +from sysdig_client.rest import RESTResponseType + + +class ZonesApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + @validate_call + def create_zone_v1( + self, + create_zone_request_v1: Annotated[CreateZoneRequestV1, Field(description="Request body for creating a new Zone")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ZoneResponseV1: + """Create Zone + + Create a new Zone.\\ \\ **Required permissions:** zones.edit + + :param create_zone_request_v1: Request body for creating a new Zone (required) + :type create_zone_request_v1: CreateZoneRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_zone_v1_serialize( + create_zone_request_v1=create_zone_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ZoneResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def create_zone_v1_with_http_info( + self, + create_zone_request_v1: Annotated[CreateZoneRequestV1, Field(description="Request body for creating a new Zone")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ZoneResponseV1]: + """Create Zone + + Create a new Zone.\\ \\ **Required permissions:** zones.edit + + :param create_zone_request_v1: Request body for creating a new Zone (required) + :type create_zone_request_v1: CreateZoneRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_zone_v1_serialize( + create_zone_request_v1=create_zone_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ZoneResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def create_zone_v1_without_preload_content( + self, + create_zone_request_v1: Annotated[CreateZoneRequestV1, Field(description="Request body for creating a new Zone")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create Zone + + Create a new Zone.\\ \\ **Required permissions:** zones.edit + + :param create_zone_request_v1: Request body for creating a new Zone (required) + :type create_zone_request_v1: CreateZoneRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_zone_v1_serialize( + create_zone_request_v1=create_zone_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ZoneResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "409": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _create_zone_v1_serialize( + self, + create_zone_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_zone_request_v1 is not None: + _body_params = create_zone_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="POST", + resource_path="/platform/v1/zones", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def delete_zone_v1( + self, + zone_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete Zone + + Delete a Zone by its ID.\\ \\ **Required permissions:** zones.edit + + :param zone_id: (required) + :type zone_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_zone_v1_serialize( + zone_id=zone_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def delete_zone_v1_with_http_info( + self, + zone_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete Zone + + Delete a Zone by its ID.\\ \\ **Required permissions:** zones.edit + + :param zone_id: (required) + :type zone_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_zone_v1_serialize( + zone_id=zone_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def delete_zone_v1_without_preload_content( + self, + zone_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete Zone + + Delete a Zone by its ID.\\ \\ **Required permissions:** zones.edit + + :param zone_id: (required) + :type zone_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_zone_v1_serialize( + zone_id=zone_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "204": None, + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "409": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _delete_zone_v1_serialize( + self, + zone_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if zone_id is not None: + _path_params["zoneId"] = zone_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="DELETE", + resource_path="/platform/v1/zones/{zoneId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def edit_zone_v1( + self, + zone_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)], + create_zone_request_v1: Annotated[CreateZoneRequestV1, Field(description="Request body for editing an existing zone")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ZoneResponseV1: + """Update Zone + + Update an existing Zone by its ID.\\ \\ **Required permissions:** zones.edit + + :param zone_id: (required) + :type zone_id: int + :param create_zone_request_v1: Request body for editing an existing zone (required) + :type create_zone_request_v1: CreateZoneRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._edit_zone_v1_serialize( + zone_id=zone_id, + create_zone_request_v1=create_zone_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ZoneResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def edit_zone_v1_with_http_info( + self, + zone_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)], + create_zone_request_v1: Annotated[CreateZoneRequestV1, Field(description="Request body for editing an existing zone")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ZoneResponseV1]: + """Update Zone + + Update an existing Zone by its ID.\\ \\ **Required permissions:** zones.edit + + :param zone_id: (required) + :type zone_id: int + :param create_zone_request_v1: Request body for editing an existing zone (required) + :type create_zone_request_v1: CreateZoneRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._edit_zone_v1_serialize( + zone_id=zone_id, + create_zone_request_v1=create_zone_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ZoneResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def edit_zone_v1_without_preload_content( + self, + zone_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)], + create_zone_request_v1: Annotated[CreateZoneRequestV1, Field(description="Request body for editing an existing zone")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update Zone + + Update an existing Zone by its ID.\\ \\ **Required permissions:** zones.edit + + :param zone_id: (required) + :type zone_id: int + :param create_zone_request_v1: Request body for editing an existing zone (required) + :type create_zone_request_v1: CreateZoneRequestV1 + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._edit_zone_v1_serialize( + zone_id=zone_id, + create_zone_request_v1=create_zone_request_v1, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ZoneResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _edit_zone_v1_serialize( + self, + zone_id, + create_zone_request_v1, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if zone_id is not None: + _path_params["zoneId"] = zone_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_zone_request_v1 is not None: + _body_params = create_zone_request_v1 + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params["Content-Type"] = _content_type + else: + _default_content_type = self.api_client.select_header_content_type(["application/json"]) + if _default_content_type is not None: + _header_params["Content-Type"] = _default_content_type + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="PUT", + resource_path="/platform/v1/zones/{zoneId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def get_zone_by_id_v1( + self, + zone_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ZoneResponseV1: + """Get Zone + + Retrieve a single Zone by ID.\\ \\ **Required permissions:** zones.read + + :param zone_id: (required) + :type zone_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_zone_by_id_v1_serialize( + zone_id=zone_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ZoneResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def get_zone_by_id_v1_with_http_info( + self, + zone_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ZoneResponseV1]: + """Get Zone + + Retrieve a single Zone by ID.\\ \\ **Required permissions:** zones.read + + :param zone_id: (required) + :type zone_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_zone_by_id_v1_serialize( + zone_id=zone_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ZoneResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def get_zone_by_id_v1_without_preload_content( + self, + zone_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get Zone + + Retrieve a single Zone by ID.\\ \\ **Required permissions:** zones.read + + :param zone_id: (required) + :type zone_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_zone_by_id_v1_serialize( + zone_id=zone_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ZoneResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "404": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _get_zone_by_id_v1_serialize( + self, + zone_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = {} + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if zone_id is not None: + _path_params["zoneId"] = zone_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/zones/{zoneId}", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) + + @validate_call + def list_zones_v1( + self, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + orderby: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=256)]], Field(max_length=4)]], + Field( + description="Ordering to apply in the form of `field:direction` where `direction` can either be `asc` or `desc`.\\ Multiple orderings can be applied by repeating the `orderby` parameter:\\ `&orderby=key1:direction1&orderby=key2:direction2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ListZonesResponseV1: + """List Zones + + Retrieve a paginated list of Zones.\\ \\ **Required permissions:** zones.read or teams.edit + + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param limit: The number of items to return + :type limit: int + :param offset: The offset number of items to start with + :type offset: int + :param orderby: Ordering to apply in the form of `field:direction` where `direction` can either be `asc` or `desc`.\\ Multiple orderings can be applied by repeating the `orderby` parameter:\\ `&orderby=key1:direction1&orderby=key2:direction2` + :type orderby: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_zones_v1_serialize( + filter=filter, + limit=limit, + offset=offset, + orderby=orderby, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListZonesResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + @validate_call + def list_zones_v1_with_http_info( + self, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + orderby: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=256)]], Field(max_length=4)]], + Field( + description="Ordering to apply in the form of `field:direction` where `direction` can either be `asc` or `desc`.\\ Multiple orderings can be applied by repeating the `orderby` parameter:\\ `&orderby=key1:direction1&orderby=key2:direction2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[ListZonesResponseV1]: + """List Zones + + Retrieve a paginated list of Zones.\\ \\ **Required permissions:** zones.read or teams.edit + + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param limit: The number of items to return + :type limit: int + :param offset: The offset number of items to start with + :type offset: int + :param orderby: Ordering to apply in the form of `field:direction` where `direction` can either be `asc` or `desc`.\\ Multiple orderings can be applied by repeating the `orderby` parameter:\\ `&orderby=key1:direction1&orderby=key2:direction2` + :type orderby: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_zones_v1_serialize( + filter=filter, + limit=limit, + offset=offset, + orderby=orderby, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListZonesResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + @validate_call + def list_zones_v1_without_preload_content( + self, + filter: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=4)]], + Field( + description="Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` " + ), + ] = None, + limit: Annotated[ + Optional[Annotated[int, Field(le=200, strict=True, ge=1)]], Field(description="The number of items to return") + ] = None, + offset: Annotated[ + Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], + Field(description="The offset number of items to start with"), + ] = None, + orderby: Annotated[ + Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=256)]], Field(max_length=4)]], + Field( + description="Ordering to apply in the form of `field:direction` where `direction` can either be `asc` or `desc`.\\ Multiple orderings can be applied by repeating the `orderby` parameter:\\ `&orderby=key1:direction1&orderby=key2:direction2` " + ), + ] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """List Zones + + Retrieve a paginated list of Zones.\\ \\ **Required permissions:** zones.read or teams.edit + + :param filter: Filters to apply in the form of `key:value`.\\ Multiple filters can be applied by repeating the `filter` parameter:\\ `&filter=key1:value1&filter=key2:value2` + :type filter: List[str] + :param limit: The number of items to return + :type limit: int + :param offset: The offset number of items to start with + :type offset: int + :param orderby: Ordering to apply in the form of `field:direction` where `direction` can either be `asc` or `desc`.\\ Multiple orderings can be applied by repeating the `orderby` parameter:\\ `&orderby=key1:direction1&orderby=key2:direction2` + :type orderby: List[str] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_zones_v1_serialize( + filter=filter, + limit=limit, + offset=offset, + orderby=orderby, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index, + ) + + _response_types_map: Dict[str, Optional[str]] = { + "200": "ListZonesResponseV1", + "400": "Error", + "401": "Error", + "403": "Error", + "422": "Error", + "429": "Error", + "500": "Error", + } + response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) + return response_data.response + + def _list_zones_v1_serialize( + self, + filter, + limit, + offset, + orderby, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + _host = None + + _collection_formats: Dict[str, str] = { + "filter": "multi", + "orderby": "multi", + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if filter is not None: + _query_params.append(("filter", filter)) + + if limit is not None: + _query_params.append(("limit", limit)) + + if offset is not None: + _query_params.append(("offset", offset)) + + if orderby is not None: + _query_params.append(("orderby", orderby)) + + # process the header parameters + # process the form parameters + # process the body parameter + + # set the HTTP header `Accept` + if "Accept" not in _header_params: + _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) + + # authentication setting + _auth_settings: List[str] = ["bearerAuth"] + + return self.api_client.param_serialize( + method="GET", + resource_path="/platform/v1/zones", + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth, + ) diff --git a/sysdig_client/api_client.py b/sysdig_client/api_client.py new file mode 100644 index 00000000..22e67b46 --- /dev/null +++ b/sysdig_client/api_client.py @@ -0,0 +1,683 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import datetime +from dateutil.parser import parse +from enum import Enum +import decimal +import json +import mimetypes +import os +import re +import tempfile + +from urllib.parse import quote +from typing import Tuple, Optional, List, Dict, Union +from pydantic import SecretStr + +from sysdig_client.configuration import Configuration +from sysdig_client.api_response import ApiResponse, T as ApiResponseT +import sysdig_client.models +from sysdig_client import rest +from sysdig_client.exceptions import ( + ApiValueError, + ApiException, + BadRequestException, + UnauthorizedException, + ForbiddenException, + NotFoundException, + ServiceException, +) + +RequestSerialized = Tuple[str, str, Dict[str, str], Optional[str], List[str]] + + +class ApiClient: + """Generic API client for OpenAPI client library builds. + + OpenAPI generic API client. This client handles the client- + server communication, and is invariant across implementations. Specifics of + the methods and models for each application are generated from the OpenAPI + templates. + + :param configuration: .Configuration object for this client + :param header_name: a header to pass when making calls to the API. + :param header_value: a header value to pass when making calls to + the API. + :param cookie: a cookie to include in the header when making calls + to the API + """ + + PRIMITIVE_TYPES = (float, bool, bytes, str, int) + NATIVE_TYPES_MAPPING = { + "int": int, + "long": int, # TODO remove as only py3 is supported? + "float": float, + "str": str, + "bool": bool, + "date": datetime.date, + "datetime": datetime.datetime, + "decimal": decimal.Decimal, + "object": object, + } + _pool = None + + def __init__(self, configuration=None, header_name=None, header_value=None, cookie=None) -> None: + # use default configuration if none is provided + if configuration is None: + configuration = Configuration.get_default() + self.configuration = configuration + + self.rest_client = rest.RESTClientObject(configuration) + self.default_headers = {} + if header_name is not None: + self.default_headers[header_name] = header_value + self.cookie = cookie + # Set default User-Agent. + self.user_agent = "OpenAPI-Generator/1.0.0/python" + self.client_side_validation = configuration.client_side_validation + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + pass + + @property + def user_agent(self): + """User agent for this API client""" + return self.default_headers["User-Agent"] + + @user_agent.setter + def user_agent(self, value): + self.default_headers["User-Agent"] = value + + def set_default_header(self, header_name, header_value): + self.default_headers[header_name] = header_value + + _default = None + + @classmethod + def get_default(cls): + """Return new instance of ApiClient. + + This method returns newly created, based on default constructor, + object of ApiClient class or returns a copy of default + ApiClient. + + :return: The ApiClient object. + """ + if cls._default is None: + cls._default = ApiClient() + return cls._default + + @classmethod + def set_default(cls, default): + """Set default instance of ApiClient. + + It stores default ApiClient. + + :param default: object of ApiClient. + """ + cls._default = default + + def param_serialize( + self, + method, + resource_path, + path_params=None, + query_params=None, + header_params=None, + body=None, + post_params=None, + files=None, + auth_settings=None, + collection_formats=None, + _host=None, + _request_auth=None, + ) -> RequestSerialized: + """Builds the HTTP request params needed by the request. + :param method: Method to call. + :param resource_path: Path to method endpoint. + :param path_params: Path parameters in the url. + :param query_params: Query parameters in the url. + :param header_params: Header parameters to be + placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, + for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param auth_settings list: Auth Settings names for the request. + :param files dict: key -> filename, value -> filepath, + for `multipart/form-data`. + :param collection_formats: dict of collection formats for path, query, + header, and post parameters. + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + :return: tuple of form (path, http_method, query_params, header_params, + body, post_params, files) + """ + + config = self.configuration + + # header parameters + header_params = header_params or {} + header_params.update(self.default_headers) + if self.cookie: + header_params["Cookie"] = self.cookie + if header_params: + header_params = self.sanitize_for_serialization(header_params) + header_params = dict(self.parameters_to_tuples(header_params, collection_formats)) + + # path parameters + if path_params: + path_params = self.sanitize_for_serialization(path_params) + path_params = self.parameters_to_tuples(path_params, collection_formats) + for k, v in path_params: + # specified safe chars, encode everything + resource_path = resource_path.replace("{%s}" % k, quote(str(v), safe=config.safe_chars_for_path_param)) + + # post parameters + if post_params or files: + post_params = post_params if post_params else [] + post_params = self.sanitize_for_serialization(post_params) + post_params = self.parameters_to_tuples(post_params, collection_formats) + if files: + post_params.extend(self.files_parameters(files)) + + # auth setting + self.update_params_for_auth( + header_params, query_params, auth_settings, resource_path, method, body, request_auth=_request_auth + ) + + # body + if body: + body = self.sanitize_for_serialization(body) + + # request url + if _host is None or self.configuration.ignore_operation_servers: + url = self.configuration.host + resource_path + else: + # use server/host defined in path or operation instead + url = _host + resource_path + + # query parameters + if query_params: + query_params = self.sanitize_for_serialization(query_params) + url_query = self.parameters_to_url_query(query_params, collection_formats) + url += "?" + url_query + + return method, url, header_params, body, post_params + + def call_api(self, method, url, header_params=None, body=None, post_params=None, _request_timeout=None) -> rest.RESTResponse: + """Makes the HTTP request (synchronous) + :param method: Method to call. + :param url: Path to method endpoint. + :param header_params: Header parameters to be + placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, + for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param _request_timeout: timeout setting for this request. + :return: RESTResponse + """ + + try: + # perform request and return response + response_data = self.rest_client.request( + method, url, headers=header_params, body=body, post_params=post_params, _request_timeout=_request_timeout + ) + + except ApiException as e: + raise e + + return response_data + + def response_deserialize( + self, response_data: rest.RESTResponse, response_types_map: Optional[Dict[str, ApiResponseT]] = None + ) -> ApiResponse[ApiResponseT]: + """Deserializes response into an object. + :param response_data: RESTResponse object to be deserialized. + :param response_types_map: dict of response types. + :return: ApiResponse + """ + + msg = "RESTResponse.read() must be called before passing it to response_deserialize()" + assert response_data.data is not None, msg + + response_type = response_types_map.get(str(response_data.status), None) + if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599: + # if not found, look for '1XX', '2XX', etc. + response_type = response_types_map.get(str(response_data.status)[0] + "XX", None) + + # deserialize response data + response_text = None + return_data = None + try: + if response_type == "bytearray": + return_data = response_data.data + elif response_type == "file": + return_data = self.__deserialize_file(response_data) + elif response_type is not None: + match = None + content_type = response_data.getheader("content-type") + if content_type is not None: + match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type) + encoding = match.group(1) if match else "utf-8" + response_text = response_data.data.decode(encoding) + return_data = self.deserialize(response_text, response_type, content_type) + finally: + if not 200 <= response_data.status <= 299: + raise ApiException.from_response( + http_resp=response_data, + body=response_text, + data=return_data, + ) + + return ApiResponse( + status_code=response_data.status, data=return_data, headers=response_data.getheaders(), raw_data=response_data.data + ) + + def sanitize_for_serialization(self, obj): + """Builds a JSON POST object. + + If obj is None, return None. + If obj is SecretStr, return obj.get_secret_value() + If obj is str, int, long, float, bool, return directly. + If obj is datetime.datetime, datetime.date + convert to string in iso8601 format. + If obj is decimal.Decimal return string representation. + If obj is list, sanitize each element in the list. + If obj is dict, return the dict. + If obj is OpenAPI model, return the properties dict. + + :param obj: The data to serialize. + :return: The serialized form of data. + """ + if obj is None: + return None + elif isinstance(obj, Enum): + return obj.value + elif isinstance(obj, SecretStr): + return obj.get_secret_value() + elif isinstance(obj, self.PRIMITIVE_TYPES): + return obj + elif isinstance(obj, list): + return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj] + elif isinstance(obj, tuple): + return tuple(self.sanitize_for_serialization(sub_obj) for sub_obj in obj) + elif isinstance(obj, (datetime.datetime, datetime.date)): + return obj.isoformat() + elif isinstance(obj, decimal.Decimal): + return str(obj) + + elif isinstance(obj, dict): + obj_dict = obj + else: + # Convert model obj to dict except + # attributes `openapi_types`, `attribute_map` + # and attributes which value is not None. + # Convert attribute name to json key in + # model definition for request. + if hasattr(obj, "to_dict") and callable(getattr(obj, "to_dict")): + obj_dict = obj.to_dict() + else: + obj_dict = obj.__dict__ + + return {key: self.sanitize_for_serialization(val) for key, val in obj_dict.items()} + + def deserialize(self, response_text: str, response_type: str, content_type: Optional[str]): + """Deserializes response into an object. + + :param response: RESTResponse object to be deserialized. + :param response_type: class literal for + deserialized object, or string of class name. + :param content_type: content type of response. + + :return: deserialized object. + """ + + # fetch data from response object + if content_type is None: + try: + data = json.loads(response_text) + except ValueError: + data = response_text + elif re.match(r"^application/(json|[\w!#$&.+-^_]+\+json)\s*(;|$)", content_type, re.IGNORECASE): + if response_text == "": + data = "" + else: + data = json.loads(response_text) + elif re.match(r"^text\/[a-z.+-]+\s*(;|$)", content_type, re.IGNORECASE): + data = response_text + else: + raise ApiException(status=0, reason="Unsupported content type: {0}".format(content_type)) + + return self.__deserialize(data, response_type) + + def __deserialize(self, data, klass): + """Deserializes dict, list, str into an object. + + :param data: dict, list or str. + :param klass: class literal, or string of class name. + + :return: object. + """ + if data is None: + return None + + if isinstance(klass, str): + if klass.startswith("List["): + m = re.match(r"List\[(.*)]", klass) + assert m is not None, "Malformed List type definition" + sub_kls = m.group(1) + return [self.__deserialize(sub_data, sub_kls) for sub_data in data] + + if klass.startswith("Dict["): + m = re.match(r"Dict\[([^,]*), (.*)]", klass) + assert m is not None, "Malformed Dict type definition" + sub_kls = m.group(2) + return {k: self.__deserialize(v, sub_kls) for k, v in data.items()} + + # convert str to class + if klass in self.NATIVE_TYPES_MAPPING: + klass = self.NATIVE_TYPES_MAPPING[klass] + else: + klass = getattr(sysdig_client.models, klass) + + if klass in self.PRIMITIVE_TYPES: + return self.__deserialize_primitive(data, klass) + elif klass == object: + return self.__deserialize_object(data) + elif klass == datetime.date: + return self.__deserialize_date(data) + elif klass == datetime.datetime: + return self.__deserialize_datetime(data) + elif klass == decimal.Decimal: + return decimal.Decimal(data) + elif issubclass(klass, Enum): + return self.__deserialize_enum(data, klass) + else: + return self.__deserialize_model(data, klass) + + def parameters_to_tuples(self, params, collection_formats): + """Get parameters as list of tuples, formatting collections. + + :param params: Parameters as dict or list of two-tuples + :param dict collection_formats: Parameter collection formats + :return: Parameters as list of tuples, collections formatted + """ + new_params: List[Tuple[str, str]] = [] + if collection_formats is None: + collection_formats = {} + for k, v in params.items() if isinstance(params, dict) else params: + if k in collection_formats: + collection_format = collection_formats[k] + if collection_format == "multi": + new_params.extend((k, value) for value in v) + else: + if collection_format == "ssv": + delimiter = " " + elif collection_format == "tsv": + delimiter = "\t" + elif collection_format == "pipes": + delimiter = "|" + else: # csv is the default + delimiter = "," + new_params.append((k, delimiter.join(str(value) for value in v))) + else: + new_params.append((k, v)) + return new_params + + def parameters_to_url_query(self, params, collection_formats): + """Get parameters as list of tuples, formatting collections. + + :param params: Parameters as dict or list of two-tuples + :param dict collection_formats: Parameter collection formats + :return: URL query string (e.g. a=Hello%20World&b=123) + """ + new_params: List[Tuple[str, str]] = [] + if collection_formats is None: + collection_formats = {} + for k, v in params.items() if isinstance(params, dict) else params: + if isinstance(v, bool): + v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) + if isinstance(v, dict): + v = json.dumps(v) + + if k in collection_formats: + collection_format = collection_formats[k] + if collection_format == "multi": + new_params.extend((k, quote(str(value))) for value in v) + else: + if collection_format == "ssv": + delimiter = " " + elif collection_format == "tsv": + delimiter = "\t" + elif collection_format == "pipes": + delimiter = "|" + else: # csv is the default + delimiter = "," + new_params.append((k, delimiter.join(quote(str(value)) for value in v))) + else: + new_params.append((k, quote(str(v)))) + + return "&".join(["=".join(map(str, item)) for item in new_params]) + + def files_parameters( + self, + files: Dict[str, Union[str, bytes, List[str], List[bytes], Tuple[str, bytes]]], + ): + """Builds form parameters. + + :param files: File parameters. + :return: Form parameters with files. + """ + params = [] + for k, v in files.items(): + if isinstance(v, str): + with open(v, "rb") as f: + filename = os.path.basename(f.name) + filedata = f.read() + elif isinstance(v, bytes): + filename = k + filedata = v + elif isinstance(v, tuple): + filename, filedata = v + elif isinstance(v, list): + for file_param in v: + params.extend(self.files_parameters({k: file_param})) + continue + else: + raise ValueError("Unsupported file value") + mimetype = mimetypes.guess_type(filename)[0] or "application/octet-stream" + params.append(tuple([k, tuple([filename, filedata, mimetype])])) + return params + + def select_header_accept(self, accepts: List[str]) -> Optional[str]: + """Returns `Accept` based on an array of accepts provided. + + :param accepts: List of headers. + :return: Accept (e.g. application/json). + """ + if not accepts: + return None + + for accept in accepts: + if re.search("json", accept, re.IGNORECASE): + return accept + + return accepts[0] + + def select_header_content_type(self, content_types): + """Returns `Content-Type` based on an array of content_types provided. + + :param content_types: List of content-types. + :return: Content-Type (e.g. application/json). + """ + if not content_types: + return None + + for content_type in content_types: + if re.search("json", content_type, re.IGNORECASE): + return content_type + + return content_types[0] + + def update_params_for_auth(self, headers, queries, auth_settings, resource_path, method, body, request_auth=None) -> None: + """Updates header and query params based on authentication setting. + + :param headers: Header parameters dict to be updated. + :param queries: Query parameters tuple list to be updated. + :param auth_settings: Authentication setting identifiers list. + :resource_path: A string representation of the HTTP request resource path. + :method: A string representation of the HTTP request method. + :body: A object representing the body of the HTTP request. + The object type is the return value of sanitize_for_serialization(). + :param request_auth: if set, the provided settings will + override the token in the configuration. + """ + if not auth_settings: + return + + if request_auth: + self._apply_auth_params(headers, queries, resource_path, method, body, request_auth) + else: + for auth in auth_settings: + auth_setting = self.configuration.auth_settings().get(auth) + if auth_setting: + self._apply_auth_params(headers, queries, resource_path, method, body, auth_setting) + + def _apply_auth_params(self, headers, queries, resource_path, method, body, auth_setting) -> None: + """Updates the request parameters based on a single auth_setting + + :param headers: Header parameters dict to be updated. + :param queries: Query parameters tuple list to be updated. + :resource_path: A string representation of the HTTP request resource path. + :method: A string representation of the HTTP request method. + :body: A object representing the body of the HTTP request. + The object type is the return value of sanitize_for_serialization(). + :param auth_setting: auth settings for the endpoint + """ + if auth_setting["in"] == "cookie": + headers["Cookie"] = auth_setting["value"] + elif auth_setting["in"] == "header": + if auth_setting["type"] != "http-signature": + headers[auth_setting["key"]] = auth_setting["value"] + elif auth_setting["in"] == "query": + queries.append((auth_setting["key"], auth_setting["value"])) + else: + raise ApiValueError("Authentication token must be in `query` or `header`") + + def __deserialize_file(self, response): + """Deserializes body to file + + Saves response body into a file in a temporary folder, + using the filename from the `Content-Disposition` header if provided. + + handle file downloading + save response body into a tmp file and return the instance + + :param response: RESTResponse. + :return: file path. + """ + fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path) + os.close(fd) + os.remove(path) + + content_disposition = response.getheader("Content-Disposition") + if content_disposition: + m = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?', content_disposition) + assert m is not None, "Unexpected 'content-disposition' header value" + filename = m.group(1) + path = os.path.join(os.path.dirname(path), filename) + + with open(path, "wb") as f: + f.write(response.data) + + return path + + def __deserialize_primitive(self, data, klass): + """Deserializes string to primitive type. + + :param data: str. + :param klass: class literal. + + :return: int, long, float, str, bool. + """ + try: + return klass(data) + except UnicodeEncodeError: + return str(data) + except TypeError: + return data + + def __deserialize_object(self, value): + """Return an original value. + + :return: object. + """ + return value + + def __deserialize_date(self, string): + """Deserializes string to date. + + :param string: str. + :return: date. + """ + try: + return parse(string).date() + except ImportError: + return string + except ValueError: + raise rest.ApiException(status=0, reason="Failed to parse `{0}` as date object".format(string)) + + def __deserialize_datetime(self, string): + """Deserializes string to datetime. + + The string should be in iso8601 datetime format. + + :param string: str. + :return: datetime. + """ + try: + return parse(string) + except ImportError: + return string + except ValueError: + raise rest.ApiException(status=0, reason=("Failed to parse `{0}` as datetime object".format(string))) + + def __deserialize_enum(self, data, klass): + """Deserializes primitive type to enum. + + :param data: primitive type. + :param klass: class literal. + :return: enum value. + """ + try: + return klass(data) + except ValueError: + raise rest.ApiException(status=0, reason=("Failed to parse `{0}` as `{1}`".format(data, klass))) + + def __deserialize_model(self, data, klass): + """Deserializes list or dict to model. + + :param data: dict, list. + :param klass: class literal. + :return: model object. + """ + + return klass.from_dict(data) diff --git a/sysdig_client/api_response.py b/sysdig_client/api_response.py new file mode 100644 index 00000000..1ce13729 --- /dev/null +++ b/sysdig_client/api_response.py @@ -0,0 +1,20 @@ +"""API response object.""" + +from __future__ import annotations +from typing import Optional, Generic, Mapping, TypeVar +from pydantic import Field, StrictInt, StrictBytes, BaseModel + +T = TypeVar("T") + + +class ApiResponse(BaseModel, Generic[T]): + """ + API response object + """ + + status_code: StrictInt = Field(description="HTTP status code") + headers: Optional[Mapping[str, str]] = Field(None, description="HTTP headers") + data: T = Field(description="Deserialized data given the data type") + raw_data: StrictBytes = Field(description="Raw data (HTTP response body)") + + model_config = {"arbitrary_types_allowed": True} diff --git a/sysdig_client/configuration.py b/sysdig_client/configuration.py new file mode 100644 index 00000000..53b948d8 --- /dev/null +++ b/sysdig_client/configuration.py @@ -0,0 +1,579 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import copy +import http.client as httplib +import logging +from logging import FileHandler +import multiprocessing +import sys +from typing import Any, ClassVar, Dict, List, Literal, Optional, TypedDict, Union +from typing_extensions import NotRequired, Self + +import urllib3 + + +JSON_SCHEMA_VALIDATION_KEYWORDS = { + "multipleOf", + "maximum", + "exclusiveMaximum", + "minimum", + "exclusiveMinimum", + "maxLength", + "minLength", + "pattern", + "maxItems", + "minItems", +} + +ServerVariablesT = Dict[str, str] + +GenericAuthSetting = TypedDict( + "GenericAuthSetting", + { + "type": str, + "in": str, + "key": str, + "value": str, + }, +) + + +OAuth2AuthSetting = TypedDict( + "OAuth2AuthSetting", + { + "type": Literal["oauth2"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": str, + }, +) + + +APIKeyAuthSetting = TypedDict( + "APIKeyAuthSetting", + { + "type": Literal["api_key"], + "in": str, + "key": str, + "value": Optional[str], + }, +) + + +BasicAuthSetting = TypedDict( + "BasicAuthSetting", + { + "type": Literal["basic"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": Optional[str], + }, +) + + +BearerFormatAuthSetting = TypedDict( + "BearerFormatAuthSetting", + { + "type": Literal["bearer"], + "in": Literal["header"], + "format": Literal["JWT"], + "key": Literal["Authorization"], + "value": str, + }, +) + + +BearerAuthSetting = TypedDict( + "BearerAuthSetting", + { + "type": Literal["bearer"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": str, + }, +) + + +HTTPSignatureAuthSetting = TypedDict( + "HTTPSignatureAuthSetting", + { + "type": Literal["http-signature"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": None, + }, +) + + +class AuthSettings(TypedDict, total=False): + bearerAuth: BearerAuthSetting + + +class HostSettingVariable(TypedDict): + description: str + default_value: str + enum_values: List[str] + + +class HostSetting(TypedDict): + url: str + description: str + variables: NotRequired[Dict[str, HostSettingVariable]] + + +class Configuration: + """This class contains various settings of the API client. + + :param host: Base url. + :param ignore_operation_servers + Boolean to ignore operation servers for the API client. + Config will use `host` as the base url regardless of the operation servers. + :param api_key: Dict to store API key(s). + Each entry in the dict specifies an API key. + The dict key is the name of the security scheme in the OAS specification. + The dict value is the API key secret. + :param api_key_prefix: Dict to store API prefix (e.g. Bearer). + The dict key is the name of the security scheme in the OAS specification. + The dict value is an API key prefix when generating the auth data. + :param username: Username for HTTP basic authentication. + :param password: Password for HTTP basic authentication. + :param access_token: Access token. + :param server_index: Index to servers configuration. + :param server_variables: Mapping with string values to replace variables in + templated server configuration. The validation of enums is performed for + variables with defined enum values before. + :param server_operation_index: Mapping from operation ID to an index to server + configuration. + :param server_operation_variables: Mapping from operation ID to a mapping with + string values to replace variables in templated server configuration. + The validation of enums is performed for variables with defined enum + values before. + :param ssl_ca_cert: str - the path to a file of concatenated CA certificates + in PEM format. + :param retries: Number of retries for API requests. + :param ca_cert_data: verify the peer using concatenated CA certificate data + in PEM (str) or DER (bytes) format. + + :Example: + """ + + _default: ClassVar[Optional[Self]] = None + + def __init__( + self, + host: Optional[str] = None, + api_key: Optional[Dict[str, str]] = None, + api_key_prefix: Optional[Dict[str, str]] = None, + username: Optional[str] = None, + password: Optional[str] = None, + access_token: Optional[str] = None, + server_index: Optional[int] = None, + server_variables: Optional[ServerVariablesT] = None, + server_operation_index: Optional[Dict[int, int]] = None, + server_operation_variables: Optional[Dict[int, ServerVariablesT]] = None, + ignore_operation_servers: bool = False, + ssl_ca_cert: Optional[str] = None, + retries: Optional[int] = None, + ca_cert_data: Optional[Union[str, bytes]] = None, + *, + debug: Optional[bool] = None, + ) -> None: + """Constructor""" + self._base_path = "http://localhost" if host is None else host + """Default Base url + """ + self.server_index = 0 if server_index is None and host is None else server_index + self.server_operation_index = server_operation_index or {} + """Default server index + """ + self.server_variables = server_variables or {} + self.server_operation_variables = server_operation_variables or {} + """Default server variables + """ + self.ignore_operation_servers = ignore_operation_servers + """Ignore operation servers + """ + self.temp_folder_path = None + """Temp file folder for downloading files + """ + # Authentication Settings + self.api_key = {} + if api_key: + self.api_key = api_key + """dict to store API key(s) + """ + self.api_key_prefix = {} + if api_key_prefix: + self.api_key_prefix = api_key_prefix + """dict to store API prefix (e.g. Bearer) + """ + self.refresh_api_key_hook = None + """function hook to refresh API key if expired + """ + self.username = username + """Username for HTTP basic authentication + """ + self.password = password + """Password for HTTP basic authentication + """ + self.access_token = access_token + """Access token + """ + self.logger = {} + """Logging Settings + """ + self.logger["package_logger"] = logging.getLogger("sysdig_client") + self.logger["urllib3_logger"] = logging.getLogger("urllib3") + self.logger_format = "%(asctime)s %(levelname)s %(message)s" + """Log format + """ + self.logger_stream_handler = None + """Log stream handler + """ + self.logger_file_handler: Optional[FileHandler] = None + """Log file handler + """ + self.logger_file = None + """Debug file location + """ + if debug is not None: + self.debug = debug + else: + self.__debug = False + """Debug switch + """ + + self.verify_ssl = True + """SSL/TLS verification + Set this to false to skip verifying SSL certificate when calling API + from https server. + """ + self.ssl_ca_cert = ssl_ca_cert + """Set this to customize the certificate file to verify the peer. + """ + self.ca_cert_data = ca_cert_data + """Set this to verify the peer using PEM (str) or DER (bytes) + certificate data. + """ + self.cert_file = None + """client certificate file + """ + self.key_file = None + """client key file + """ + self.assert_hostname = None + """Set this to True/False to enable/disable SSL hostname verification. + """ + self.tls_server_name = None + """SSL/TLS Server Name Indication (SNI) + Set this to the SNI value expected by the server. + """ + + self.connection_pool_maxsize = multiprocessing.cpu_count() * 5 + """urllib3 connection pool's maximum number of connections saved + per pool. urllib3 uses 1 connection as default value, but this is + not the best value when you are making a lot of possibly parallel + requests to the same host, which is often the case here. + cpu_count * 5 is used as default value to increase performance. + """ + + self.proxy: Optional[str] = None + """Proxy URL + """ + self.proxy_headers = None + """Proxy headers + """ + self.safe_chars_for_path_param = "" + """Safe chars for path_param + """ + self.retries = retries + """Adding retries to override urllib3 default value 3 + """ + # Enable client side validation + self.client_side_validation = True + + self.socket_options = None + """Options to pass down to the underlying urllib3 socket + """ + + self.datetime_format = "%Y-%m-%dT%H:%M:%S.%f%z" + """datetime format + """ + + self.date_format = "%Y-%m-%d" + """date format + """ + + def __deepcopy__(self, memo: Dict[int, Any]) -> Self: + cls = self.__class__ + result = cls.__new__(cls) + memo[id(self)] = result + for k, v in self.__dict__.items(): + if k not in ("logger", "logger_file_handler"): + setattr(result, k, copy.deepcopy(v, memo)) + # shallow copy of loggers + result.logger = copy.copy(self.logger) + # use setters to configure loggers + result.logger_file = self.logger_file + result.debug = self.debug + return result + + def __setattr__(self, name: str, value: Any) -> None: + object.__setattr__(self, name, value) + + @classmethod + def set_default(cls, default: Optional[Self]) -> None: + """Set default instance of configuration. + + It stores default configuration, which can be + returned by get_default_copy method. + + :param default: object of Configuration + """ + cls._default = default + + @classmethod + def get_default_copy(cls) -> Self: + """Deprecated. Please use `get_default` instead. + + Deprecated. Please use `get_default` instead. + + :return: The configuration object. + """ + return cls.get_default() + + @classmethod + def get_default(cls) -> Self: + """Return the default configuration. + + This method returns newly created, based on default constructor, + object of Configuration class or returns a copy of default + configuration. + + :return: The configuration object. + """ + if cls._default is None: + cls._default = cls() + return cls._default + + @property + def logger_file(self) -> Optional[str]: + """The logger file. + + If the logger_file is None, then add stream handler and remove file + handler. Otherwise, add file handler and remove stream handler. + + :param value: The logger_file path. + :type: str + """ + return self.__logger_file + + @logger_file.setter + def logger_file(self, value: Optional[str]) -> None: + """The logger file. + + If the logger_file is None, then add stream handler and remove file + handler. Otherwise, add file handler and remove stream handler. + + :param value: The logger_file path. + :type: str + """ + self.__logger_file = value + if self.__logger_file: + # If set logging file, + # then add file handler and remove stream handler. + self.logger_file_handler = logging.FileHandler(self.__logger_file) + self.logger_file_handler.setFormatter(self.logger_formatter) + for _, logger in self.logger.items(): + logger.addHandler(self.logger_file_handler) + + @property + def debug(self) -> bool: + """Debug status + + :param value: The debug status, True or False. + :type: bool + """ + return self.__debug + + @debug.setter + def debug(self, value: bool) -> None: + """Debug status + + :param value: The debug status, True or False. + :type: bool + """ + self.__debug = value + if self.__debug: + # if debug status is True, turn on debug logging + for _, logger in self.logger.items(): + logger.setLevel(logging.DEBUG) + # turn on httplib debug + httplib.HTTPConnection.debuglevel = 1 + else: + # if debug status is False, turn off debug logging, + # setting log level to default `logging.WARNING` + for _, logger in self.logger.items(): + logger.setLevel(logging.WARNING) + # turn off httplib debug + httplib.HTTPConnection.debuglevel = 0 + + @property + def logger_format(self) -> str: + """The logger format. + + The logger_formatter will be updated when sets logger_format. + + :param value: The format string. + :type: str + """ + return self.__logger_format + + @logger_format.setter + def logger_format(self, value: str) -> None: + """The logger format. + + The logger_formatter will be updated when sets logger_format. + + :param value: The format string. + :type: str + """ + self.__logger_format = value + self.logger_formatter = logging.Formatter(self.__logger_format) + + def get_api_key_with_prefix(self, identifier: str, alias: Optional[str] = None) -> Optional[str]: + """Gets API key (with prefix if set). + + :param identifier: The identifier of apiKey. + :param alias: The alternative identifier of apiKey. + :return: The token for api key authentication. + """ + if self.refresh_api_key_hook is not None: + self.refresh_api_key_hook(self) + key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None) + if key: + prefix = self.api_key_prefix.get(identifier) + if prefix: + return "%s %s" % (prefix, key) + else: + return key + + return None + + def get_basic_auth_token(self) -> Optional[str]: + """Gets HTTP basic authentication header (string). + + :return: The token for basic HTTP authentication. + """ + username = "" + if self.username is not None: + username = self.username + password = "" + if self.password is not None: + password = self.password + return urllib3.util.make_headers(basic_auth=username + ":" + password).get("authorization") + + def auth_settings(self) -> AuthSettings: + """Gets Auth Settings dict for api client. + + :return: The Auth Settings information dict. + """ + auth: AuthSettings = {} + if self.access_token is not None: + auth["bearerAuth"] = { + "type": "bearer", + "in": "header", + "key": "Authorization", + "value": "Bearer " + self.access_token, + } + return auth + + def to_debug_report(self) -> str: + """Gets the essential information for debugging. + + :return: The report for debugging. + """ + return ( + "Python SDK Debug Report:\n" + "OS: {env}\n" + "Python Version: {pyversion}\n" + "Version of the API: 1.1.1\n" + "SDK Package Version: 1.0.0".format(env=sys.platform, pyversion=sys.version) + ) + + def get_host_settings(self) -> List[HostSetting]: + """Gets an array of host settings + + :return: An array of host settings + """ + return [ + { + "url": "", + "description": "No description provided", + } + ] + + def get_host_from_settings( + self, + index: Optional[int], + variables: Optional[ServerVariablesT] = None, + servers: Optional[List[HostSetting]] = None, + ) -> str: + """Gets host URL based on the index and variables + :param index: array index of the host settings + :param variables: hash of variable and the corresponding value + :param servers: an array of host settings or None + :return: URL based on host settings + """ + if index is None: + return self._base_path + + variables = {} if variables is None else variables + servers = self.get_host_settings() if servers is None else servers + + try: + server = servers[index] + except IndexError: + raise ValueError( + "Invalid index {0} when selecting the host settings. Must be less than {1}".format(index, len(servers)) + ) + + url = server["url"] + + # go through variables and replace placeholders + for variable_name, variable in server.get("variables", {}).items(): + used_value = variables.get(variable_name, variable["default_value"]) + + if "enum_values" in variable and used_value not in variable["enum_values"]: + raise ValueError( + "The variable `{0}` in the host URL has invalid value {1}. Must be {2}.".format( + variable_name, variables[variable_name], variable["enum_values"] + ) + ) + + url = url.replace("{" + variable_name + "}", used_value) + + return url + + @property + def host(self) -> str: + """Return generated host.""" + return self.get_host_from_settings(self.server_index, variables=self.server_variables) + + @host.setter + def host(self, value: str) -> None: + """Fix base path.""" + self._base_path = value + self.server_index = None diff --git a/sysdig_client/exceptions.py b/sysdig_client/exceptions.py new file mode 100644 index 00000000..5cf029d9 --- /dev/null +++ b/sysdig_client/exceptions.py @@ -0,0 +1,216 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from typing import Any, Optional +from typing_extensions import Self + + +class OpenApiException(Exception): + """The base exception class for all OpenAPIExceptions""" + + +class ApiTypeError(OpenApiException, TypeError): + def __init__(self, msg, path_to_item=None, valid_classes=None, key_type=None) -> None: + """Raises an exception for TypeErrors + + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (list): a list of keys an indices to get to the + current_item + None if unset + valid_classes (tuple): the primitive classes that current item + should be an instance of + None if unset + key_type (bool): False if our value is a value in a dict + True if it is a key in a dict + False if our item is an item in a list + None if unset + """ + self.path_to_item = path_to_item + self.valid_classes = valid_classes + self.key_type = key_type + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiTypeError, self).__init__(full_msg) + + +class ApiValueError(OpenApiException, ValueError): + def __init__(self, msg, path_to_item=None) -> None: + """ + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (list) the path to the exception in the + received_data dict. None if unset + """ + + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiValueError, self).__init__(full_msg) + + +class ApiAttributeError(OpenApiException, AttributeError): + def __init__(self, msg, path_to_item=None) -> None: + """ + Raised when an attribute reference or assignment fails. + + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (None/list) the path to the exception in the + received_data dict + """ + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiAttributeError, self).__init__(full_msg) + + +class ApiKeyError(OpenApiException, KeyError): + def __init__(self, msg, path_to_item=None) -> None: + """ + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (None/list) the path to the exception in the + received_data dict + """ + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiKeyError, self).__init__(full_msg) + + +class ApiException(OpenApiException): + def __init__( + self, + status=None, + reason=None, + http_resp=None, + *, + body: Optional[str] = None, + data: Optional[Any] = None, + ) -> None: + self.status = status + self.reason = reason + self.body = body + self.data = data + self.headers = None + + if http_resp: + if self.status is None: + self.status = http_resp.status + if self.reason is None: + self.reason = http_resp.reason + if self.body is None: + try: + self.body = http_resp.data.decode("utf-8") + except Exception: + pass + self.headers = http_resp.getheaders() + + @classmethod + def from_response( + cls, + *, + http_resp, + body: Optional[str], + data: Optional[Any], + ) -> Self: + if http_resp.status == 400: + raise BadRequestException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 401: + raise UnauthorizedException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 403: + raise ForbiddenException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 404: + raise NotFoundException(http_resp=http_resp, body=body, data=data) + + # Added new conditions for 409 and 422 + if http_resp.status == 409: + raise ConflictException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 422: + raise UnprocessableEntityException(http_resp=http_resp, body=body, data=data) + + if 500 <= http_resp.status <= 599: + raise ServiceException(http_resp=http_resp, body=body, data=data) + raise ApiException(http_resp=http_resp, body=body, data=data) + + def __str__(self): + """Custom error messages for exception""" + error_message = "({0})\nReason: {1}\n".format(self.status, self.reason) + if self.headers: + error_message += "HTTP response headers: {0}\n".format(self.headers) + + if self.data or self.body: + error_message += "HTTP response body: {0}\n".format(self.data or self.body) + + return error_message + + +class BadRequestException(ApiException): + pass + + +class NotFoundException(ApiException): + pass + + +class UnauthorizedException(ApiException): + pass + + +class ForbiddenException(ApiException): + pass + + +class ServiceException(ApiException): + pass + + +class ConflictException(ApiException): + """Exception for HTTP 409 Conflict.""" + + pass + + +class UnprocessableEntityException(ApiException): + """Exception for HTTP 422 Unprocessable Entity.""" + + pass + + +def render_path(path_to_item): + """Returns a string representation of a path""" + result = "" + for pth in path_to_item: + if isinstance(pth, int): + result += "[{0}]".format(pth) + else: + result += "['{0}']".format(pth) + return result diff --git a/sysdig_client/models/__init__.py b/sysdig_client/models/__init__.py new file mode 100644 index 00000000..c9cce3c0 --- /dev/null +++ b/sysdig_client/models/__init__.py @@ -0,0 +1,617 @@ +# coding: utf-8 + +# flake8: noqa +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +# import models into model package +from sysdig_client.models.access_key_response_v1 import AccessKeyResponseV1 +from sysdig_client.models.action import Action +from sysdig_client.models.action_execution import ActionExecution +from sysdig_client.models.action_execution_parameter_value import ActionExecutionParameterValue +from sysdig_client.models.action_execution_status import ActionExecutionStatus +from sysdig_client.models.action_executions import ActionExecutions +from sysdig_client.models.action_outputs_metadata import ActionOutputsMetadata +from sysdig_client.models.action_parameter_metadata import ActionParameterMetadata +from sysdig_client.models.action_type import ActionType +from sysdig_client.models.actions import Actions +from sysdig_client.models.additional_team_permissions_v1 import AdditionalTeamPermissionsV1 +from sysdig_client.models.agentless_ml_runtime_detection_content import AgentlessMlRuntimeDetectionContent +from sysdig_client.models.agentless_ml_runtime_detection_content_all_of_fields import ( + AgentlessMlRuntimeDetectionContentAllOfFields, +) +from sysdig_client.models.agentless_runtime_detection_content import AgentlessRuntimeDetectionContent +from sysdig_client.models.agentless_runtime_detection_content_all_of_fields import AgentlessRuntimeDetectionContentAllOfFields +from sysdig_client.models.alert_monitor_event import AlertMonitorEvent +from sysdig_client.models.alerts_response_v1 import AlertsResponseV1 +from sysdig_client.models.alerts_response_v1_data import AlertsResponseV1Data +from sysdig_client.models.alerts_response_v1_data_alerts_inner import AlertsResponseV1DataAlertsInner +from sysdig_client.models.all_sso_settings_response_v1 import AllSsoSettingsResponseV1 +from sysdig_client.models.amazon_sqs_create_connection_info import AmazonSQSCreateConnectionInfo +from sysdig_client.models.amazon_sqs_update_connection_info import AmazonSQSUpdateConnectionInfo +from sysdig_client.models.audit_event import AuditEvent +from sysdig_client.models.audit_page import AuditPage +from sysdig_client.models.audit_supported_filter import AuditSupportedFilter +from sysdig_client.models.audit_supported_filters_response import AuditSupportedFiltersResponse +from sysdig_client.models.audit_trail_content import AuditTrailContent +from sysdig_client.models.authenticated_connection_info_elasticsearch import AuthenticatedConnectionInfoElasticsearch +from sysdig_client.models.authenticated_connection_info_kafka import AuthenticatedConnectionInfoKafka +from sysdig_client.models.authenticated_connection_info_webhook import AuthenticatedConnectionInfoWebhook +from sysdig_client.models.bom_metadata import BOMMetadata +from sysdig_client.models.base_action import BaseAction +from sysdig_client.models.base_connection_info_amazon_sqs import BaseConnectionInfoAmazonSqs +from sysdig_client.models.base_connection_info_chronicle import BaseConnectionInfoChronicle +from sysdig_client.models.base_connection_info_chronicle_v2 import BaseConnectionInfoChronicleV2 +from sysdig_client.models.base_connection_info_elasticsearch import BaseConnectionInfoElasticsearch +from sysdig_client.models.base_connection_info_google_pub_sub import BaseConnectionInfoGooglePubSub +from sysdig_client.models.base_connection_info_google_scc import BaseConnectionInfoGoogleScc +from sysdig_client.models.base_connection_info_kafka import BaseConnectionInfoKafka +from sysdig_client.models.base_connection_info_mcm import BaseConnectionInfoMcm +from sysdig_client.models.base_connection_info_microsoft_sentinel import BaseConnectionInfoMicrosoftSentinel +from sysdig_client.models.base_connection_info_qradar import BaseConnectionInfoQradar +from sysdig_client.models.base_connection_info_splunk import BaseConnectionInfoSplunk +from sysdig_client.models.base_connection_info_syslog import BaseConnectionInfoSyslog +from sysdig_client.models.base_connection_info_webhook import BaseConnectionInfoWebhook +from sysdig_client.models.base_content import BaseContent +from sysdig_client.models.base_image import BaseImage +from sysdig_client.models.base_integration_payload import BaseIntegrationPayload +from sysdig_client.models.base_monitor_event import BaseMonitorEvent +from sysdig_client.models.base_risk_accepted_payload import BaseRiskAcceptedPayload +from sysdig_client.models.base_risk_accepted_response_payload import BaseRiskAcceptedResponsePayload +from sysdig_client.models.bucket_configuration_v1 import BucketConfigurationV1 +from sysdig_client.models.bundle import Bundle +from sysdig_client.models.bundle_ref import BundleRef +from sysdig_client.models.bundle_rule import BundleRule +from sysdig_client.models.bundle_rule_predicates_inner import BundleRulePredicatesInner +from sysdig_client.models.capture_action import CaptureAction +from sysdig_client.models.capture_storage_configuration_response_v1 import CaptureStorageConfigurationResponseV1 +from sysdig_client.models.category import Category +from sysdig_client.models.certificate import Certificate +from sysdig_client.models.certificate_validity import CertificateValidity +from sysdig_client.models.certificates_response import CertificatesResponse +from sysdig_client.models.checkbox_field_value_v1 import CheckboxFieldValueV1 +from sysdig_client.models.chronicle_create_connection_info import ChronicleCreateConnectionInfo +from sysdig_client.models.chronicle_update_connection_info import ChronicleUpdateConnectionInfo +from sysdig_client.models.cisa_kev_available_since import CisaKevAvailableSince +from sysdig_client.models.cisa_kev_known_ransomware_campaign_use import CisaKevKnownRansomwareCampaignUse +from sysdig_client.models.cisa_kev_publish_date import CisaKevPublishDate +from sysdig_client.models.cisa_kev_publish_date_extra import CisaKevPublishDateExtra +from sysdig_client.models.command import Command +from sysdig_client.models.compositions_inner import CompositionsInner +from sysdig_client.models.connection import Connection +from sysdig_client.models.container_info import ContainerInfo +from sysdig_client.models.container_killed_action import ContainerKilledAction +from sysdig_client.models.container_paused_action import ContainerPausedAction +from sysdig_client.models.container_stopped_action import ContainerStoppedAction +from sysdig_client.models.context import Context +from sysdig_client.models.create_access_key_request_v1 import CreateAccessKeyRequestV1 +from sysdig_client.models.create_amazon_sqs_integration_request import CreateAmazonSqsIntegrationRequest +from sysdig_client.models.create_bundle_request import CreateBundleRequest +from sysdig_client.models.create_chronicle_integration_conn_info import CreateChronicleIntegrationConnInfo +from sysdig_client.models.create_chronicle_integration_conn_info_v2 import CreateChronicleIntegrationConnInfoV2 +from sysdig_client.models.create_chronicle_integration_request import CreateChronicleIntegrationRequest +from sysdig_client.models.create_custom_webhook_notification_channel_request_v1 import ( + CreateCustomWebhookNotificationChannelRequestV1, +) +from sysdig_client.models.create_elasticsearch_integration_request import CreateElasticsearchIntegrationRequest +from sysdig_client.models.create_elasticsearch_integration_request_all_of_connection_info import ( + CreateElasticsearchIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.create_email_notification_channel_request_v1 import CreateEmailNotificationChannelRequestV1 +from sysdig_client.models.create_gchat_notification_channel_request_v1 import CreateGchatNotificationChannelRequestV1 +from sysdig_client.models.create_global_service_account_request_v1 import CreateGlobalServiceAccountRequestV1 +from sysdig_client.models.create_google_pub_sub_integration_request import CreateGooglePubSubIntegrationRequest +from sysdig_client.models.create_google_scc_integration_request import CreateGoogleSccIntegrationRequest +from sysdig_client.models.create_group_mapping_request_v1 import CreateGroupMappingRequestV1 +from sysdig_client.models.create_ibm_event_notifications_notification_channel_request_v1 import ( + CreateIbmEventNotificationsNotificationChannelRequestV1, +) +from sysdig_client.models.create_inhibition_rule_request_v1 import CreateInhibitionRuleRequestV1 +from sysdig_client.models.create_integration_request import CreateIntegrationRequest +from sysdig_client.models.create_integration_request_v1 import CreateIntegrationRequestV1 +from sysdig_client.models.create_ip_filter_v1 import CreateIpFilterV1 +from sysdig_client.models.create_issue_type_request_v1 import CreateIssueTypeRequestV1 +from sysdig_client.models.create_kafka_integration_request import CreateKafkaIntegrationRequest +from sysdig_client.models.create_kafka_integration_request_all_of_connection_info import ( + CreateKafkaIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.create_mcm_integration_request import CreateMcmIntegrationRequest +from sysdig_client.models.create_microsoft_sentinel_integration_request import CreateMicrosoftSentinelIntegrationRequest +from sysdig_client.models.create_ms_teams_notification_channel_request_v1 import CreateMsTeamsNotificationChannelRequestV1 +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.create_opsgenie_notification_channel_request_v1 import CreateOpsgenieNotificationChannelRequestV1 +from sysdig_client.models.create_pager_duty_notification_channel_request_v1 import CreatePagerDutyNotificationChannelRequestV1 +from sysdig_client.models.create_policy_request import CreatePolicyRequest +from sysdig_client.models.create_pricing_request_v1 import CreatePricingRequestV1 +from sysdig_client.models.create_prometheus_alert_manager_notification_channel_request_v1 import ( + CreatePrometheusAlertManagerNotificationChannelRequestV1, +) +from sysdig_client.models.create_qradar_integration_request import CreateQradarIntegrationRequest +from sysdig_client.models.create_risk_accepted_request import CreateRiskAcceptedRequest +from sysdig_client.models.create_risk_accepted_request_all_of_context import CreateRiskAcceptedRequestAllOfContext +from sysdig_client.models.create_service_account_request_v1 import CreateServiceAccountRequestV1 +from sysdig_client.models.create_service_accounts_notification_settings_request_v1 import ( + CreateServiceAccountsNotificationSettingsRequestV1, +) +from sysdig_client.models.create_slack_notification_channel_request_v1 import CreateSlackNotificationChannelRequestV1 +from sysdig_client.models.create_sns_notification_channel_request_v1 import CreateSnsNotificationChannelRequestV1 +from sysdig_client.models.create_splunk_integration_request import CreateSplunkIntegrationRequest +from sysdig_client.models.create_sso_settings_request_v1 import CreateSsoSettingsRequestV1 +from sysdig_client.models.create_syslog_integration_request import CreateSyslogIntegrationRequest +from sysdig_client.models.create_team_email_notification_channel_request_v1 import CreateTeamEmailNotificationChannelRequestV1 +from sysdig_client.models.create_team_request_v1 import CreateTeamRequestV1 +from sysdig_client.models.create_team_service_account_request_v1 import CreateTeamServiceAccountRequestV1 +from sysdig_client.models.create_user_request_v1 import CreateUserRequestV1 +from sysdig_client.models.create_victor_ops_notification_channel_request_v1 import CreateVictorOpsNotificationChannelRequestV1 +from sysdig_client.models.create_webhook_integration_request import CreateWebhookIntegrationRequest +from sysdig_client.models.create_webhook_integration_request_all_of_connection_info import ( + CreateWebhookIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.create_webhook_notification_channel_request_v1 import CreateWebhookNotificationChannelRequestV1 +from sysdig_client.models.create_zone_request_v1 import CreateZoneRequestV1 +from sysdig_client.models.create_zone_scope_request_v1 import CreateZoneScopeRequestV1 +from sysdig_client.models.custom_job_v1 import CustomJobV1 +from sysdig_client.models.custom_jobs_enablement_v1 import CustomJobsEnablementV1 +from sysdig_client.models.custom_monitor_event import CustomMonitorEvent +from sysdig_client.models.custom_webhook_notification_channel_options_v1 import CustomWebhookNotificationChannelOptionsV1 +from sysdig_client.models.custom_webhook_notification_channel_response_v1 import CustomWebhookNotificationChannelResponseV1 +from sysdig_client.models.cvss_score import CvssScore +from sysdig_client.models.date_range import DateRange +from sysdig_client.models.deny_cve import DenyCve +from sysdig_client.models.deny_cve_extra import DenyCveExtra +from sysdig_client.models.deny_pkg import DenyPkg +from sysdig_client.models.deny_pkg_extra import DenyPkgExtra +from sysdig_client.models.deny_pkg_extra_packages_inner import DenyPkgExtraPackagesInner +from sysdig_client.models.dependency import Dependency +from sysdig_client.models.disable_jobs_and_metrics_v1 import DisableJobsAndMetricsV1 +from sysdig_client.models.disable_metric_v1 import DisableMetricV1 +from sysdig_client.models.drift_prevented_action import DriftPreventedAction +from sysdig_client.models.email_notification_channel_options_v1 import EmailNotificationChannelOptionsV1 +from sysdig_client.models.email_notification_channel_response_v1 import EmailNotificationChannelResponseV1 +from sysdig_client.models.entity_definition import EntityDefinition +from sysdig_client.models.entity_definition_definition import EntityDefinitionDefinition +from sysdig_client.models.entries_response import EntriesResponse +from sysdig_client.models.entries_response_data_inner import EntriesResponseDataInner +from sysdig_client.models.entry import Entry +from sysdig_client.models.entry_point_module_v1 import EntryPointModuleV1 +from sysdig_client.models.entry_point_v1 import EntryPointV1 +from sysdig_client.models.entry_response import EntryResponse +from sysdig_client.models.error import Error +from sysdig_client.models.event import Event +from sysdig_client.models.event_content import EventContent +from sysdig_client.models.event_content_type import EventContentType +from sysdig_client.models.events_feed_page import EventsFeedPage +from sysdig_client.models.exploit import Exploit +from sysdig_client.models.failure import Failure +from sysdig_client.models.fileaccess import Fileaccess +from sysdig_client.models.gchat_notification_channel_options_v1 import GchatNotificationChannelOptionsV1 +from sysdig_client.models.gchat_notification_channel_response_v1 import GchatNotificationChannelResponseV1 +from sysdig_client.models.get_access_keys_paginated_response_v1 import GetAccessKeysPaginatedResponseV1 +from sysdig_client.models.get_amazon_sqs_integration_response import GetAmazonSqsIntegrationResponse +from sysdig_client.models.get_bundle_response import GetBundleResponse +from sysdig_client.models.get_chronicle_integration_response import GetChronicleIntegrationResponse +from sysdig_client.models.get_chronicle_integration_response_all_of_connection_info import ( + GetChronicleIntegrationResponseAllOfConnectionInfo, +) +from sysdig_client.models.get_custom_jobs_paginated_response_v1 import GetCustomJobsPaginatedResponseV1 +from sysdig_client.models.get_elasticsearch_integration_response import GetElasticsearchIntegrationResponse +from sysdig_client.models.get_google_pub_sub_integration_response import GetGooglePubSubIntegrationResponse +from sysdig_client.models.get_google_scc_integration_response import GetGoogleSccIntegrationResponse +from sysdig_client.models.get_inhibition_rules_paginated_response_v1 import GetInhibitionRulesPaginatedResponseV1 +from sysdig_client.models.get_kafka_integration_response import GetKafkaIntegrationResponse +from sysdig_client.models.get_kafka_integration_response_all_of_connection_info import ( + GetKafkaIntegrationResponseAllOfConnectionInfo, +) +from sysdig_client.models.get_mcm_integration_response import GetMcmIntegrationResponse +from sysdig_client.models.get_microsoft_sentinel_integration_response import GetMicrosoftSentinelIntegrationResponse +from sysdig_client.models.get_notification_channels_paginated_response_v1 import GetNotificationChannelsPaginatedResponseV1 +from sysdig_client.models.get_permissions_response_v1 import GetPermissionsResponseV1 +from sysdig_client.models.get_policy_response import GetPolicyResponse +from sysdig_client.models.get_pricing_paginated_response_v1 import GetPricingPaginatedResponseV1 +from sysdig_client.models.get_pricing_projected_paginated_response_v1 import GetPricingProjectedPaginatedResponseV1 +from sysdig_client.models.get_qradar_integration_response import GetQradarIntegrationResponse +from sysdig_client.models.get_query_range_v1_step_parameter import GetQueryRangeV1StepParameter +from sysdig_client.models.get_query_v1401_response import GetQueryV1401Response +from sysdig_client.models.get_roles_paginated_response_v1 import GetRolesPaginatedResponseV1 +from sysdig_client.models.get_service_accounts_paginated_response_v1 import GetServiceAccountsPaginatedResponseV1 +from sysdig_client.models.get_splunk_integration_response import GetSplunkIntegrationResponse +from sysdig_client.models.get_syslog_integration_response import GetSyslogIntegrationResponse +from sysdig_client.models.get_team_users_paginated_response_v1 import GetTeamUsersPaginatedResponseV1 +from sysdig_client.models.get_teams_paginated_response_v1 import GetTeamsPaginatedResponseV1 +from sysdig_client.models.get_users_paginated_response_v1 import GetUsersPaginatedResponseV1 +from sysdig_client.models.get_webhook_integration_response import GetWebhookIntegrationResponse +from sysdig_client.models.global_sso_settings_request_v1 import GlobalSsoSettingsRequestV1 +from sysdig_client.models.global_sso_settings_response_v1 import GlobalSsoSettingsResponseV1 +from sysdig_client.models.google_pub_sub_create_connection_info import GooglePubSubCreateConnectionInfo +from sysdig_client.models.google_pub_sub_create_connection_info1 import GooglePubSubCreateConnectionInfo1 +from sysdig_client.models.google_scc_create_connection_info import GoogleSCCCreateConnectionInfo +from sysdig_client.models.google_scc_create_connection_info1 import GoogleSCCCreateConnectionInfo1 +from sysdig_client.models.group_mapping_response_v1 import GroupMappingResponseV1 +from sysdig_client.models.group_mapping_settings_v1 import GroupMappingSettingsV1 +from sysdig_client.models.group_mappings_paginated_response_v1 import GroupMappingsPaginatedResponseV1 +from sysdig_client.models.gssapi_connection_info_kafka import GssapiConnectionInfoKafka +from sysdig_client.models.host_metadata import HostMetadata +from sysdig_client.models.host_name import HostName +from sysdig_client.models.host_name_contains import HostNameContains +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info import IBMMulticloudCloudCreateConnectionInfo +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info1 import IBMMulticloudCloudCreateConnectionInfo1 +from sysdig_client.models.ibm_event_notifications_notification_channel_options_v1 import ( + IbmEventNotificationsNotificationChannelOptionsV1, +) +from sysdig_client.models.ibm_event_notifications_notification_channel_response_v1 import ( + IbmEventNotificationsNotificationChannelResponseV1, +) +from sysdig_client.models.image import Image +from sysdig_client.models.image_config_creation_date_with_age import ImageConfigCreationDateWithAge +from sysdig_client.models.image_config_creation_date_with_age_extra import ImageConfigCreationDateWithAgeExtra +from sysdig_client.models.image_config_default_user_is_not import ImageConfigDefaultUserIsNot +from sysdig_client.models.image_config_default_user_is_not_extra import ImageConfigDefaultUserIsNotExtra +from sysdig_client.models.image_config_default_user_is_root import ImageConfigDefaultUserIsRoot +from sysdig_client.models.image_config_default_user_list import ImageConfigDefaultUserList +from sysdig_client.models.image_config_default_user_list_extra import ImageConfigDefaultUserListExtra +from sysdig_client.models.image_config_env_variable_contains import ImageConfigEnvVariableContains +from sysdig_client.models.image_config_env_variable_contains_extra import ImageConfigEnvVariableContainsExtra +from sysdig_client.models.image_config_env_variable_exists import ImageConfigEnvVariableExists +from sysdig_client.models.image_config_env_variable_exists_extra import ImageConfigEnvVariableExistsExtra +from sysdig_client.models.image_config_env_variable_not_exists import ImageConfigEnvVariableNotExists +from sysdig_client.models.image_config_failure import ImageConfigFailure +from sysdig_client.models.image_config_instruction_is_pkg_manager import ImageConfigInstructionIsPkgManager +from sysdig_client.models.image_config_instruction_not_recommended import ImageConfigInstructionNotRecommended +from sysdig_client.models.image_config_label_exists import ImageConfigLabelExists +from sysdig_client.models.image_config_label_exists_extra import ImageConfigLabelExistsExtra +from sysdig_client.models.image_config_label_not_contains import ImageConfigLabelNotContains +from sysdig_client.models.image_config_label_not_contains_extra import ImageConfigLabelNotContainsExtra +from sysdig_client.models.image_config_label_not_exists import ImageConfigLabelNotExists +from sysdig_client.models.image_config_label_not_exists_extra import ImageConfigLabelNotExistsExtra +from sysdig_client.models.image_config_sensitive_information_and_secrets import ImageConfigSensitiveInformationAndSecrets +from sysdig_client.models.image_metadata import ImageMetadata +from sysdig_client.models.image_name import ImageName +from sysdig_client.models.image_name_contains import ImageNameContains +from sysdig_client.models.image_prefix import ImagePrefix +from sysdig_client.models.image_suffix import ImageSuffix +from sysdig_client.models.inhibition_rule_response_v1 import InhibitionRuleResponseV1 +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_channels_response import IntegrationChannelsResponse +from sysdig_client.models.integration_response import IntegrationResponse +from sysdig_client.models.integration_response_v1 import IntegrationResponseV1 +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.integration_types_response import IntegrationTypesResponse +from sysdig_client.models.invalid_certificate import InvalidCertificate +from sysdig_client.models.invalid_request import InvalidRequest +from sysdig_client.models.invalid_request1 import InvalidRequest1 +from sysdig_client.models.inventory_page import InventoryPage +from sysdig_client.models.inventory_resource import InventoryResource +from sysdig_client.models.inventory_resource_extended import InventoryResourceExtended +from sysdig_client.models.inventory_resource_response import InventoryResourceResponse +from sysdig_client.models.inventory_zone import InventoryZone +from sysdig_client.models.ip_filter_response_v1 import IpFilterResponseV1 +from sysdig_client.models.ip_filters_paginated_response_v1 import IpFiltersPaginatedResponseV1 +from sysdig_client.models.ip_filters_settings_v1 import IpFiltersSettingsV1 +from sysdig_client.models.issue_type_field_response_v1 import IssueTypeFieldResponseV1 +from sysdig_client.models.issue_type_field_response_v1_allowed_values_inner import IssueTypeFieldResponseV1AllowedValuesInner +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 +from sysdig_client.models.issue_types_response_v1 import IssueTypesResponseV1 +from sysdig_client.models.job_response import JobResponse +from sysdig_client.models.k8s_admission_review_content import K8sAdmissionReviewContent +from sysdig_client.models.k8s_admission_review_content_all_of_scan_result import K8sAdmissionReviewContentAllOfScanResult +from sysdig_client.models.kafka_plaintext import KafkaPlaintext +from sysdig_client.models.kafka_tls_encrypted import KafkaTlsEncrypted +from sysdig_client.models.key_value_object import KeyValueObject +from sysdig_client.models.kubernetes import Kubernetes +from sysdig_client.models.label_matcher_v1 import LabelMatcherV1 +from sysdig_client.models.label_values_response_v1 import LabelValuesResponseV1 +from sysdig_client.models.labels_response_v1 import LabelsResponseV1 +from sysdig_client.models.layer import Layer +from sysdig_client.models.list_audit_events_response import ListAuditEventsResponse +from sysdig_client.models.list_bundles_response import ListBundlesResponse +from sysdig_client.models.list_events_response import ListEventsResponse +from sysdig_client.models.list_integrations_response import ListIntegrationsResponse +from sysdig_client.models.list_job_and_disabled_metrics_v1 import ListJobAndDisabledMetricsV1 +from sysdig_client.models.list_jobs import ListJobs +from sysdig_client.models.list_monitor_events_response import ListMonitorEventsResponse +from sysdig_client.models.list_policies_response import ListPoliciesResponse +from sysdig_client.models.list_risk_accepted_response import ListRiskAcceptedResponse +from sysdig_client.models.list_risk_accepted_response_all_of_data import ListRiskAcceptedResponseAllOfData +from sysdig_client.models.list_schedules import ListSchedules +from sysdig_client.models.list_zones_response_v1 import ListZonesResponseV1 +from sysdig_client.models.list_zones_response_v1_all_of_data import ListZonesResponseV1AllOfData +from sysdig_client.models.malware_prevented_action import MalwarePreventedAction +from sysdig_client.models.metadata_response_v1 import MetadataResponseV1 +from sysdig_client.models.metadata_response_v1_data_value_inner import MetadataResponseV1DataValueInner +from sysdig_client.models.metric_error_v1 import MetricErrorV1 +from sysdig_client.models.metric_v1 import MetricV1 +from sysdig_client.models.microsoft_sentinel_create_connection_info import MicrosoftSentinelCreateConnectionInfo +from sysdig_client.models.microsoft_sentinel_update_connection_info import MicrosoftSentinelUpdateConnectionInfo +from sysdig_client.models.monitor_event import MonitorEvent +from sysdig_client.models.monitor_events_page import MonitorEventsPage +from sysdig_client.models.monitor_scope_label import MonitorScopeLabel +from sysdig_client.models.ms_teams_notification_channel_options_v1 import MsTeamsNotificationChannelOptionsV1 +from sysdig_client.models.ms_teams_notification_channel_response_v1 import MsTeamsNotificationChannelResponseV1 +from sysdig_client.models.new_rule import NewRule +from sysdig_client.models.new_stage import NewStage +from sysdig_client.models.notification_channel import NotificationChannel +from sysdig_client.models.notification_channel_options_v1 import NotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.notification_channel_v1 import NotificationChannelV1 +from sysdig_client.models.offset_paginated_response import OffsetPaginatedResponse +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from sysdig_client.models.open_id_base_v1 import OpenIdBaseV1 +from sysdig_client.models.open_id_config_response_v1 import OpenIdConfigResponseV1 +from sysdig_client.models.open_id_create_request_v1 import OpenIdCreateRequestV1 +from sysdig_client.models.open_id_metadata_v1 import OpenIdMetadataV1 +from sysdig_client.models.open_id_request_base_v1 import OpenIdRequestBaseV1 +from sysdig_client.models.open_id_update_request_v1 import OpenIdUpdateRequestV1 +from sysdig_client.models.operand import Operand +from sysdig_client.models.opsgenie_notification_channel_options_v1 import OpsgenieNotificationChannelOptionsV1 +from sysdig_client.models.opsgenie_notification_channel_response_v1 import OpsgenieNotificationChannelResponseV1 +from sysdig_client.models.originator import Originator +from sysdig_client.models.package import Package +from sysdig_client.models.package_name import PackageName +from sysdig_client.models.package_name_version import PackageNameVersion +from sysdig_client.models.package_path import PackagePath +from sysdig_client.models.package_path_version import PackagePathVersion +from sysdig_client.models.package_version import PackageVersion +from sysdig_client.models.page import Page +from sysdig_client.models.pager_duty_notification_channel_options_v1 import PagerDutyNotificationChannelOptionsV1 +from sysdig_client.models.pager_duty_notification_channel_response_v1 import PagerDutyNotificationChannelResponseV1 +from sysdig_client.models.paginated_integrations_response_v1 import PaginatedIntegrationsResponseV1 +from sysdig_client.models.permission_v1 import PermissionV1 +from sysdig_client.models.pipeline_result import PipelineResult +from sysdig_client.models.pipeline_results_response import PipelineResultsResponse +from sysdig_client.models.pkg_vuln_failure import PkgVulnFailure +from sysdig_client.models.policies import Policies +from sysdig_client.models.policies_page import PoliciesPage +from sysdig_client.models.policies_summary_entry import PoliciesSummaryEntry +from sysdig_client.models.policy_evaluation import PolicyEvaluation +from sysdig_client.models.policy_evaluation_result import PolicyEvaluationResult +from sysdig_client.models.policy_origin import PolicyOrigin +from sysdig_client.models.policy_summary import PolicySummary +from sysdig_client.models.posture_policy_summary import PosturePolicySummary +from sysdig_client.models.predicate import Predicate +from sysdig_client.models.predicates_inner import PredicatesInner +from sysdig_client.models.pricing_projected_response_v1 import PricingProjectedResponseV1 +from sysdig_client.models.pricing_response_v1 import PricingResponseV1 +from sysdig_client.models.pricing_type import PricingType +from sysdig_client.models.private_connection_info_amazon_sqs import PrivateConnectionInfoAmazonSqs +from sysdig_client.models.private_connection_info_chronicle import PrivateConnectionInfoChronicle +from sysdig_client.models.private_connection_info_chronicle_v2 import PrivateConnectionInfoChronicleV2 +from sysdig_client.models.private_connection_info_elasticsearch import PrivateConnectionInfoElasticsearch +from sysdig_client.models.private_connection_info_google_pub_sub import PrivateConnectionInfoGooglePubSub +from sysdig_client.models.private_connection_info_google_scc import PrivateConnectionInfoGoogleScc +from sysdig_client.models.private_connection_info_kafka import PrivateConnectionInfoKafka +from sysdig_client.models.private_connection_info_mcm import PrivateConnectionInfoMcm +from sysdig_client.models.private_connection_info_microsoft_sentinel import PrivateConnectionInfoMicrosoftSentinel +from sysdig_client.models.private_connection_info_splunk import PrivateConnectionInfoSplunk +from sysdig_client.models.private_connection_info_webhook import PrivateConnectionInfoWebhook +from sysdig_client.models.process_killed_action import ProcessKilledAction +from sysdig_client.models.producer import Producer +from sysdig_client.models.product import Product +from sysdig_client.models.prometheus_alert_manager_notification_channel_options_v1 import ( + PrometheusAlertManagerNotificationChannelOptionsV1, +) +from sysdig_client.models.prometheus_alert_manager_notification_channel_response_v1 import ( + PrometheusAlertManagerNotificationChannelResponseV1, +) +from sysdig_client.models.prometheus_error import PrometheusError +from sysdig_client.models.promql_matcher import PromqlMatcher +from sysdig_client.models.query_response import QueryResponse +from sysdig_client.models.query_response_entities import QueryResponseEntities +from sysdig_client.models.query_response_v1 import QueryResponseV1 +from sysdig_client.models.query_response_v1_data import QueryResponseV1Data +from sysdig_client.models.query_response_v1_data_result import QueryResponseV1DataResult +from sysdig_client.models.query_response_v1_data_result_any_of_inner import QueryResponseV1DataResultAnyOfInner +from sysdig_client.models.query_response_v1_data_result_any_of_inner1 import QueryResponseV1DataResultAnyOfInner1 +from sysdig_client.models.query_response_v1_data_result_any_of_inner2 import QueryResponseV1DataResultAnyOfInner2 +from sysdig_client.models.query_summary import QuerySummary +from sysdig_client.models.query_sysql_post_request import QuerySysqlPostRequest +from sysdig_client.models.query_time import QueryTime +from sysdig_client.models.registry_result import RegistryResult +from sysdig_client.models.registry_results_response import RegistryResultsResponse +from sysdig_client.models.request_body_disabled_metrics_v1 import RequestBodyDisabledMetricsV1 +from sysdig_client.models.responder_type import ResponderType +from sysdig_client.models.response_action import ResponseAction +from sysdig_client.models.response_list_disabled_metrics_and_error_v1 import ResponseListDisabledMetricsAndErrorV1 +from sysdig_client.models.response_list_disabled_metrics_v1 import ResponseListDisabledMetricsV1 +from sysdig_client.models.risk_acceptance_definition import RiskAcceptanceDefinition +from sysdig_client.models.risk_accepted_response import RiskAcceptedResponse +from sysdig_client.models.risk_accepted_response_all_of_context import RiskAcceptedResponseAllOfContext +from sysdig_client.models.role_request_v1 import RoleRequestV1 +from sysdig_client.models.role_response_v1 import RoleResponseV1 +from sysdig_client.models.rule import Rule +from sysdig_client.models.rule_failures_inner import RuleFailuresInner +from sysdig_client.models.rules_response_v1 import RulesResponseV1 +from sysdig_client.models.rules_response_v1_data import RulesResponseV1Data +from sysdig_client.models.rules_response_v1_data_groups_inner import RulesResponseV1DataGroupsInner +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner import RulesResponseV1DataGroupsInnerRulesInner +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner import ( + RulesResponseV1DataGroupsInnerRulesInnerAlertsInner, +) +from sysdig_client.models.runtime_result import RuntimeResult +from sysdig_client.models.runtime_results_response import RuntimeResultsResponse +from sysdig_client.models.saml_base_v1 import SamlBaseV1 +from sysdig_client.models.saml_create_request_v1 import SamlCreateRequestV1 +from sysdig_client.models.saml_response_v1 import SamlResponseV1 +from sysdig_client.models.saml_update_request_v1 import SamlUpdateRequestV1 +from sysdig_client.models.save_capture_storage_configuration_request_v1 import SaveCaptureStorageConfigurationRequestV1 +from sysdig_client.models.save_team_user_request_v1 import SaveTeamUserRequestV1 +from sysdig_client.models.sbom_component import SbomComponent +from sysdig_client.models.sbom_result_response import SbomResultResponse +from sysdig_client.models.scan_result_response import ScanResultResponse +from sysdig_client.models.scan_result_response_metadata import ScanResultResponseMetadata +from sysdig_client.models.schedule_response import ScheduleResponse +from sysdig_client.models.scope_type_v1 import ScopeTypeV1 +from sysdig_client.models.scope_v1 import ScopeV1 +from sysdig_client.models.sequence_inner import SequenceInner +from sysdig_client.models.series_response_v1 import SeriesResponseV1 +from sysdig_client.models.service_account_response_v1 import ServiceAccountResponseV1 +from sysdig_client.models.service_account_with_key_response_v1 import ServiceAccountWithKeyResponseV1 +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 +from sysdig_client.models.service_accounts_notification_settins_base import ServiceAccountsNotificationSettinsBase +from sysdig_client.models.services import Services +from sysdig_client.models.services_response import ServicesResponse +from sysdig_client.models.slack_base_notification_channel_options_v1 import SlackBaseNotificationChannelOptionsV1 +from sysdig_client.models.slack_create_notification_channel_options_v1 import SlackCreateNotificationChannelOptionsV1 +from sysdig_client.models.slack_notification_channel_response_v1 import SlackNotificationChannelResponseV1 +from sysdig_client.models.slack_read_notification_channel_options_v1 import SlackReadNotificationChannelOptionsV1 +from sysdig_client.models.slack_update_notification_channel_options_v1 import SlackUpdateNotificationChannelOptionsV1 +from sysdig_client.models.sns_notification_channel_options_v1 import SnsNotificationChannelOptionsV1 +from sysdig_client.models.sns_notification_channel_response_v1 import SnsNotificationChannelResponseV1 +from sysdig_client.models.source import Source +from sysdig_client.models.source_details import SourceDetails +from sysdig_client.models.splunk_create_connection_info import SplunkCreateConnectionInfo +from sysdig_client.models.splunk_update_connection_info import SplunkUpdateConnectionInfo +from sysdig_client.models.sso_settings_base_schema_v1 import SsoSettingsBaseSchemaV1 +from sysdig_client.models.sso_settings_create_request_base_v1 import SsoSettingsCreateRequestBaseV1 +from sysdig_client.models.sso_settings_response_base_v1 import SsoSettingsResponseBaseV1 +from sysdig_client.models.sso_settings_response_v1 import SsoSettingsResponseV1 +from sysdig_client.models.sso_settings_update_request_base_v1 import SsoSettingsUpdateRequestBaseV1 +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from sysdig_client.models.stage import Stage +from sysdig_client.models.stage_configuration import StageConfiguration +from sysdig_client.models.stateful_detections_content import StatefulDetectionsContent +from sysdig_client.models.stateful_detections_content_all_of_fields import StatefulDetectionsContentAllOfFields +from sysdig_client.models.stats_inner import StatsInner +from sysdig_client.models.submit_action_execution_request import SubmitActionExecutionRequest +from sysdig_client.models.supported_filter import SupportedFilter +from sysdig_client.models.supported_filter_type import SupportedFilterType +from sysdig_client.models.supported_filters_response import SupportedFiltersResponse +from sysdig_client.models.team_email_notification_channel_options_v1 import TeamEmailNotificationChannelOptionsV1 +from sysdig_client.models.team_email_notification_channel_response_v1 import TeamEmailNotificationChannelResponseV1 +from sysdig_client.models.team_map_v1 import TeamMapV1 +from sysdig_client.models.team_response_v1 import TeamResponseV1 +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from sysdig_client.models.team_user_response_v1 import TeamUserResponseV1 +from sysdig_client.models.time_frame import TimeFrame +from sysdig_client.models.types import Types +from sysdig_client.models.ui_settings_v1 import UiSettingsV1 +from sysdig_client.models.unit_pricing_v1 import UnitPricingV1 +from sysdig_client.models.update_access_key_request_v1 import UpdateAccessKeyRequestV1 +from sysdig_client.models.update_amazon_sqs_integration_request import UpdateAmazonSqsIntegrationRequest +from sysdig_client.models.update_chronicle_integration_conn_info import UpdateChronicleIntegrationConnInfo +from sysdig_client.models.update_chronicle_integration_conn_info_v2 import UpdateChronicleIntegrationConnInfoV2 +from sysdig_client.models.update_chronicle_integration_request import UpdateChronicleIntegrationRequest +from sysdig_client.models.update_custom_webhook_notification_channel_request_v1 import ( + UpdateCustomWebhookNotificationChannelRequestV1, +) +from sysdig_client.models.update_elasticsearch_integration_request import UpdateElasticsearchIntegrationRequest +from sysdig_client.models.update_elasticsearch_integration_request_all_of_connection_info import ( + UpdateElasticsearchIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.update_email_notification_channel_request_v1 import UpdateEmailNotificationChannelRequestV1 +from sysdig_client.models.update_gchat_notification_channel_request_v1 import UpdateGchatNotificationChannelRequestV1 +from sysdig_client.models.update_google_pub_sub_integration_request import UpdateGooglePubSubIntegrationRequest +from sysdig_client.models.update_google_scc_integration_request import UpdateGoogleSccIntegrationRequest +from sysdig_client.models.update_group_mapping_request_v1 import UpdateGroupMappingRequestV1 +from sysdig_client.models.update_ibm_event_notifications_notification_channel_request_v1 import ( + UpdateIbmEventNotificationsNotificationChannelRequestV1, +) +from sysdig_client.models.update_inhibition_rule_request_v1 import UpdateInhibitionRuleRequestV1 +from sysdig_client.models.update_integration_request import UpdateIntegrationRequest +from sysdig_client.models.update_integration_request_v1 import UpdateIntegrationRequestV1 +from sysdig_client.models.update_ip_filter_v1 import UpdateIpFilterV1 +from sysdig_client.models.update_issue_type_request_v1 import UpdateIssueTypeRequestV1 +from sysdig_client.models.update_kafka_integration_request import UpdateKafkaIntegrationRequest +from sysdig_client.models.update_kafka_integration_request_all_of_connection_info import ( + UpdateKafkaIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.update_mcm_integration_request import UpdateMcmIntegrationRequest +from sysdig_client.models.update_microsoft_sentinel_integration_request import UpdateMicrosoftSentinelIntegrationRequest +from sysdig_client.models.update_ms_teams_notification_channel_request_v1 import UpdateMsTeamsNotificationChannelRequestV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from sysdig_client.models.update_opsgenie_notification_channel_request_v1 import UpdateOpsgenieNotificationChannelRequestV1 +from sysdig_client.models.update_pager_duty_notification_channel_request_v1 import UpdatePagerDutyNotificationChannelRequestV1 +from sysdig_client.models.update_pricing_request_v1 import UpdatePricingRequestV1 +from sysdig_client.models.update_prometheus_alert_manager_notification_channel_request_v1 import ( + UpdatePrometheusAlertManagerNotificationChannelRequestV1, +) +from sysdig_client.models.update_qradar_integration_request import UpdateQradarIntegrationRequest +from sysdig_client.models.update_risk_accepted import UpdateRiskAccepted +from sysdig_client.models.update_service_accounts_notification_settings_request_v1 import ( + UpdateServiceAccountsNotificationSettingsRequestV1, +) +from sysdig_client.models.update_slack_notification_channel_request_v1 import UpdateSlackNotificationChannelRequestV1 +from sysdig_client.models.update_sns_notification_channel_request_v1 import UpdateSnsNotificationChannelRequestV1 +from sysdig_client.models.update_splunk_integration_request import UpdateSplunkIntegrationRequest +from sysdig_client.models.update_sso_settings_request_v1 import UpdateSsoSettingsRequestV1 +from sysdig_client.models.update_syslog_integration_request import UpdateSyslogIntegrationRequest +from sysdig_client.models.update_team_email_notification_channel_request_v1 import UpdateTeamEmailNotificationChannelRequestV1 +from sysdig_client.models.update_team_request_v1 import UpdateTeamRequestV1 +from sysdig_client.models.update_user_deactivation_configuration_request_v1 import UpdateUserDeactivationConfigurationRequestV1 +from sysdig_client.models.update_user_request_v1 import UpdateUserRequestV1 +from sysdig_client.models.update_victor_ops_notification_channel_request_v1 import UpdateVictorOpsNotificationChannelRequestV1 +from sysdig_client.models.update_webhook_integration_request import UpdateWebhookIntegrationRequest +from sysdig_client.models.update_webhook_integration_request_all_of_connection_info import ( + UpdateWebhookIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.update_webhook_notification_channel_request_v1 import UpdateWebhookNotificationChannelRequestV1 +from sysdig_client.models.user import User +from sysdig_client.models.user_deactivation_configuration_response_v1 import UserDeactivationConfigurationResponseV1 +from sysdig_client.models.user_response_v1 import UserResponseV1 +from sysdig_client.models.victor_ops_notification_channel_options_v1 import VictorOpsNotificationChannelOptionsV1 +from sysdig_client.models.victor_ops_notification_channel_response_v1 import VictorOpsNotificationChannelResponseV1 +from sysdig_client.models.vuln_age import VulnAge +from sysdig_client.models.vuln_age_extra import VulnAgeExtra +from sysdig_client.models.vuln_cvss import VulnCvss +from sysdig_client.models.vuln_cvss_equals import VulnCvssEquals +from sysdig_client.models.vuln_cvss_equals_extra import VulnCvssEqualsExtra +from sysdig_client.models.vuln_cvss_extra import VulnCvssExtra +from sysdig_client.models.vuln_disclosure_range import VulnDisclosureRange +from sysdig_client.models.vuln_disclosure_range_extra import VulnDisclosureRangeExtra +from sysdig_client.models.vuln_epss_percentile_gte import VulnEpssPercentileGte +from sysdig_client.models.vuln_epss_percentile_gte_extra import VulnEpssPercentileGteExtra +from sysdig_client.models.vuln_epss_score_gte import VulnEpssScoreGte +from sysdig_client.models.vuln_epss_score_gte_extra import VulnEpssScoreGteExtra +from sysdig_client.models.vuln_exploitable import VulnExploitable +from sysdig_client.models.vuln_exploitable_no_admin import VulnExploitableNoAdmin +from sysdig_client.models.vuln_exploitable_no_user import VulnExploitableNoUser +from sysdig_client.models.vuln_exploitable_via_network import VulnExploitableViaNetwork +from sysdig_client.models.vuln_exploitable_with_age import VulnExploitableWithAge +from sysdig_client.models.vuln_exploitable_with_age_extra import VulnExploitableWithAgeExtra +from sysdig_client.models.vuln_is_fixable import VulnIsFixable +from sysdig_client.models.vuln_is_fixable_with_age import VulnIsFixableWithAge +from sysdig_client.models.vuln_is_fixable_with_age_extra import VulnIsFixableWithAgeExtra +from sysdig_client.models.vuln_is_in_use import VulnIsInUse +from sysdig_client.models.vuln_pkg_type import VulnPkgType +from sysdig_client.models.vuln_pkg_type_extra import VulnPkgTypeExtra +from sysdig_client.models.vuln_severity import VulnSeverity +from sysdig_client.models.vuln_severity_equals import VulnSeverityEquals +from sysdig_client.models.vuln_severity_extra import VulnSeverityExtra +from sysdig_client.models.vuln_total_by_severity import VulnTotalBySeverity +from sysdig_client.models.vulnerability import Vulnerability +from sysdig_client.models.vulnerability_management_page import VulnerabilityManagementPage +from sysdig_client.models.vulnerability_summary import VulnerabilitySummary +from sysdig_client.models.wasted_workload_data_request import WastedWorkloadDataRequest +from sysdig_client.models.wasted_workload_spend_data_response import WastedWorkloadSpendDataResponse +from sysdig_client.models.wasted_workload_spend_data_response_group_by_data_inner import ( + WastedWorkloadSpendDataResponseGroupByDataInner, +) +from sysdig_client.models.wasted_workload_spend_data_response_total import WastedWorkloadSpendDataResponseTotal +from sysdig_client.models.webhook_notification_channel_options_v1 import WebhookNotificationChannelOptionsV1 +from sysdig_client.models.webhook_notification_channel_response_v1 import WebhookNotificationChannelResponseV1 +from sysdig_client.models.workload_cost_trends_data_request import WorkloadCostTrendsDataRequest +from sysdig_client.models.workload_cost_trends_data_response import WorkloadCostTrendsDataResponse +from sysdig_client.models.workload_cost_trends_data_response_group_by_data_inner import ( + WorkloadCostTrendsDataResponseGroupByDataInner, +) +from sysdig_client.models.workload_cost_trends_data_response_total import WorkloadCostTrendsDataResponseTotal +from sysdig_client.models.workload_ml_runtime_detection_content import WorkloadMlRuntimeDetectionContent +from sysdig_client.models.workload_rightsizing_data_request import WorkloadRightsizingDataRequest +from sysdig_client.models.workload_rightsizing_data_response import WorkloadRightsizingDataResponse +from sysdig_client.models.workload_rightsizing_data_response_group_by_data_inner import ( + WorkloadRightsizingDataResponseGroupByDataInner, +) +from sysdig_client.models.workload_runtime_detection_content import WorkloadRuntimeDetectionContent +from sysdig_client.models.workload_runtime_detection_content_all_of_fields import WorkloadRuntimeDetectionContentAllOfFields +from sysdig_client.models.zone import Zone +from sysdig_client.models.zone_response_v1 import ZoneResponseV1 +from sysdig_client.models.zone_scope import ZoneScope diff --git a/sysdig_client/models/access_key_response_v1.py b/sysdig_client/models/access_key_response_v1.py new file mode 100644 index 00000000..8c413b27 --- /dev/null +++ b/sysdig_client/models/access_key_response_v1.py @@ -0,0 +1,159 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class AccessKeyResponseV1(BaseModel): + """ + Access key response + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + is_enabled: Optional[StrictBool] = Field( + default=None, description="Indicates if the access key is enabled", alias="isEnabled" + ) + access_key: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Displays the access key value", alias="accessKey" + ) + date_created: Optional[datetime] = Field( + default=None, description="Date and time when access key was created ", alias="dateCreated" + ) + date_disabled: Optional[datetime] = Field( + default=None, description="Date and time when access key was disabled ", alias="dateDisabled" + ) + agent_limit: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="Maximum number of agents that can be connected with the access key", alias="agentLimit" + ) + agent_reservation: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="Number of agents that are guaranteed to be available for the access key", + alias="agentReservation", + ) + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of team that owns the access key", alias="teamId" + ) + metadata: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=76)]]] = Field( + default=None, + description="Access key metadata (maximum of 20 key-value pairs where key can be up to 25 characters long and value can be up to 50 characters long)", + ) + __properties: ClassVar[List[str]] = [ + "id", + "isEnabled", + "accessKey", + "dateCreated", + "dateDisabled", + "agentLimit", + "agentReservation", + "teamId", + "metadata", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AccessKeyResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if date_created (nullable) is None + # and model_fields_set contains the field + if self.date_created is None and "date_created" in self.model_fields_set: + _dict["dateCreated"] = None + + # set to None if date_disabled (nullable) is None + # and model_fields_set contains the field + if self.date_disabled is None and "date_disabled" in self.model_fields_set: + _dict["dateDisabled"] = None + + # set to None if agent_limit (nullable) is None + # and model_fields_set contains the field + if self.agent_limit is None and "agent_limit" in self.model_fields_set: + _dict["agentLimit"] = None + + # set to None if agent_reservation (nullable) is None + # and model_fields_set contains the field + if self.agent_reservation is None and "agent_reservation" in self.model_fields_set: + _dict["agentReservation"] = None + + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AccessKeyResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "isEnabled": obj.get("isEnabled"), + "accessKey": obj.get("accessKey"), + "dateCreated": obj.get("dateCreated"), + "dateDisabled": obj.get("dateDisabled"), + "agentLimit": obj.get("agentLimit"), + "agentReservation": obj.get("agentReservation"), + "teamId": obj.get("teamId"), + "metadata": obj.get("metadata"), + } + ) + return _obj diff --git a/sysdig_client/models/action.py b/sysdig_client/models/action.py new file mode 100644 index 00000000..a3a689bf --- /dev/null +++ b/sysdig_client/models/action.py @@ -0,0 +1,258 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.capture_action import CaptureAction +from sysdig_client.models.container_killed_action import ContainerKilledAction +from sysdig_client.models.container_paused_action import ContainerPausedAction +from sysdig_client.models.container_stopped_action import ContainerStoppedAction +from sysdig_client.models.drift_prevented_action import DriftPreventedAction +from sysdig_client.models.malware_prevented_action import MalwarePreventedAction +from sysdig_client.models.process_killed_action import ProcessKilledAction +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +ACTION_ONE_OF_SCHEMAS = [ + "CaptureAction", + "ContainerKilledAction", + "ContainerPausedAction", + "ContainerStoppedAction", + "DriftPreventedAction", + "MalwarePreventedAction", + "ProcessKilledAction", +] + + +class Action(BaseModel): + """ + Action performed when the event happened. + """ + + # data type: CaptureAction + oneof_schema_1_validator: Optional[CaptureAction] = None + # data type: ContainerPausedAction + oneof_schema_2_validator: Optional[ContainerPausedAction] = None + # data type: ContainerStoppedAction + oneof_schema_3_validator: Optional[ContainerStoppedAction] = None + # data type: ContainerKilledAction + oneof_schema_4_validator: Optional[ContainerKilledAction] = None + # data type: DriftPreventedAction + oneof_schema_5_validator: Optional[DriftPreventedAction] = None + # data type: MalwarePreventedAction + oneof_schema_6_validator: Optional[MalwarePreventedAction] = None + # data type: ProcessKilledAction + oneof_schema_7_validator: Optional[ProcessKilledAction] = None + actual_instance: Optional[ + Union[ + CaptureAction, + ContainerKilledAction, + ContainerPausedAction, + ContainerStoppedAction, + DriftPreventedAction, + MalwarePreventedAction, + ProcessKilledAction, + ] + ] = None + one_of_schemas: Set[str] = { + "CaptureAction", + "ContainerKilledAction", + "ContainerPausedAction", + "ContainerStoppedAction", + "DriftPreventedAction", + "MalwarePreventedAction", + "ProcessKilledAction", + } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + discriminator_value_class_map: Dict[str, str] = {} + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = Action.model_construct() + error_messages = [] + match = 0 + # validate data type: CaptureAction + if not isinstance(v, CaptureAction): + error_messages.append(f"Error! Input type `{type(v)}` is not `CaptureAction`") + else: + match += 1 + # validate data type: ContainerPausedAction + if not isinstance(v, ContainerPausedAction): + error_messages.append(f"Error! Input type `{type(v)}` is not `ContainerPausedAction`") + else: + match += 1 + # validate data type: ContainerStoppedAction + if not isinstance(v, ContainerStoppedAction): + error_messages.append(f"Error! Input type `{type(v)}` is not `ContainerStoppedAction`") + else: + match += 1 + # validate data type: ContainerKilledAction + if not isinstance(v, ContainerKilledAction): + error_messages.append(f"Error! Input type `{type(v)}` is not `ContainerKilledAction`") + else: + match += 1 + # validate data type: DriftPreventedAction + if not isinstance(v, DriftPreventedAction): + error_messages.append(f"Error! Input type `{type(v)}` is not `DriftPreventedAction`") + else: + match += 1 + # validate data type: MalwarePreventedAction + if not isinstance(v, MalwarePreventedAction): + error_messages.append(f"Error! Input type `{type(v)}` is not `MalwarePreventedAction`") + else: + match += 1 + # validate data type: ProcessKilledAction + if not isinstance(v, ProcessKilledAction): + error_messages.append(f"Error! Input type `{type(v)}` is not `ProcessKilledAction`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in Action with oneOf schemas: CaptureAction, ContainerKilledAction, ContainerPausedAction, ContainerStoppedAction, DriftPreventedAction, MalwarePreventedAction, ProcessKilledAction. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in Action with oneOf schemas: CaptureAction, ContainerKilledAction, ContainerPausedAction, ContainerStoppedAction, DriftPreventedAction, MalwarePreventedAction, ProcessKilledAction. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into CaptureAction + try: + instance.actual_instance = CaptureAction.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ContainerPausedAction + try: + instance.actual_instance = ContainerPausedAction.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ContainerStoppedAction + try: + instance.actual_instance = ContainerStoppedAction.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ContainerKilledAction + try: + instance.actual_instance = ContainerKilledAction.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into DriftPreventedAction + try: + instance.actual_instance = DriftPreventedAction.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into MalwarePreventedAction + try: + instance.actual_instance = MalwarePreventedAction.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into ProcessKilledAction + try: + instance.actual_instance = ProcessKilledAction.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into Action with oneOf schemas: CaptureAction, ContainerKilledAction, ContainerPausedAction, ContainerStoppedAction, DriftPreventedAction, MalwarePreventedAction, ProcessKilledAction. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into Action with oneOf schemas: CaptureAction, ContainerKilledAction, ContainerPausedAction, ContainerStoppedAction, DriftPreventedAction, MalwarePreventedAction, ProcessKilledAction. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[ + Union[ + Dict[str, Any], + CaptureAction, + ContainerKilledAction, + ContainerPausedAction, + ContainerStoppedAction, + DriftPreventedAction, + MalwarePreventedAction, + ProcessKilledAction, + ] + ]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/action_execution.py b/sysdig_client/models/action_execution.py new file mode 100644 index 00000000..dbd93f2c --- /dev/null +++ b/sysdig_client/models/action_execution.py @@ -0,0 +1,170 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_execution_parameter_value import ActionExecutionParameterValue +from sysdig_client.models.action_execution_status import ActionExecutionStatus +from sysdig_client.models.failure import Failure +from sysdig_client.models.responder_type import ResponderType +from typing import Set +from typing_extensions import Self + + +class ActionExecution(BaseModel): + """ + The submitted Response Action. + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=64)] = Field(description="The ID of the Response Action.") + caller_id: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field( + default=None, description="The ID of the user that executed the Response action.", alias="callerId" + ) + action_type: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="The name of the Response Action to execute. It may be one of the following: - KILL_PROCESS - KILL_CONTAINER - STOP_CONTAINER - PAUSE_CONTAINER - FILE_QUARANTINE - FILE_ACQUIRE - UNPAUSE_CONTAINER - FILE_UNQUARANTINE - START_CONTAINER - DELETE_POD - ROLLOUT_RESTART - KUBERNETES_VOLUME_SNAPSHOT - KUBERNETES_DELETE_VOLUME_SNAPSHOT - GET_LOGS - ISOLATE_NETWORK - DELETE_NETWORK_POLICY The following actions serve as the undo for previous actions: - START_CONTAINER: undo for STOP_CONTAINER\\ - UNPAUSE_CONTAINER: undo for PAUSE_CONTAINER\\ - FILE_UNQUARANTINE: undo for FILE_QUARANTINE\\ - KUBERNETES_DELETE_VOLUME_SNAPSHOT: undo for KUBERNETES_VOLUME_SNAPSHOT\\ - DELETE_NETWORK_POLICY: undo for ISOLATE_NETWORK\\ Do not use undo actions in [submitActionExecutionv1](#tag/Response-actions/operation/submitActionExecutionv1). You can execute an undo actions using the service [undoActionExecutionV1](#tag/Response-actions/operation/undoActionExecutionV1). ", + alias="actionType", + ) + responder_type: ResponderType = Field(alias="responderType") + execution_context: Dict[str, Annotated[str, Field(strict=True, max_length=1024)]] = Field( + description='The context in which the Response Action is executed.\\ It may contain additional information on the Response Action being executed, such as the host name or the MAC address.\\ For example:\\ ```json { "host.hostName": "my-host", "host.mac": "00:00:00:00:00:00", "host.id": "abc123" } ``` ', + alias="executionContext", + ) + parameters: Dict[str, ActionExecutionParameterValue] = Field( + description="The parameters used to request the Response Action execution." + ) + outputs: Optional[Dict[str, ActionExecutionParameterValue]] = Field( + default=None, description="The parameters used to request the Response Action execution." + ) + failure: Optional[Failure] = None + status: ActionExecutionStatus + user_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="The ID of the user that submitted the Response Action.", alias="userId" + ) + created_at: datetime = Field(description="The date and time the Response Action was submitted.", alias="createdAt") + updated_at: Optional[datetime] = Field( + default=None, description="The date and time the Response Action was last updated.", alias="updatedAt" + ) + action_execution_id_being_undone: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The ID of the Response Action being undone.", alias="actionExecutionIdBeingUndone" + ) + __properties: ClassVar[List[str]] = [ + "id", + "callerId", + "actionType", + "responderType", + "executionContext", + "parameters", + "outputs", + "failure", + "status", + "userId", + "createdAt", + "updatedAt", + "actionExecutionIdBeingUndone", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ActionExecution from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each value in parameters (dict) + _field_dict = {} + if self.parameters: + for _key_parameters in self.parameters: + if self.parameters[_key_parameters]: + _field_dict[_key_parameters] = self.parameters[_key_parameters].to_dict() + _dict["parameters"] = _field_dict + # override the default output from pydantic by calling `to_dict()` of each value in outputs (dict) + _field_dict = {} + if self.outputs: + for _key_outputs in self.outputs: + if self.outputs[_key_outputs]: + _field_dict[_key_outputs] = self.outputs[_key_outputs].to_dict() + _dict["outputs"] = _field_dict + # override the default output from pydantic by calling `to_dict()` of failure + if self.failure: + _dict["failure"] = self.failure.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ActionExecution from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "callerId": obj.get("callerId"), + "actionType": obj.get("actionType"), + "responderType": obj.get("responderType"), + "executionContext": obj.get("executionContext"), + "parameters": dict((_k, ActionExecutionParameterValue.from_dict(_v)) for _k, _v in obj["parameters"].items()) + if obj.get("parameters") is not None + else None, + "outputs": dict((_k, ActionExecutionParameterValue.from_dict(_v)) for _k, _v in obj["outputs"].items()) + if obj.get("outputs") is not None + else None, + "failure": Failure.from_dict(obj["failure"]) if obj.get("failure") is not None else None, + "status": obj.get("status"), + "userId": obj.get("userId"), + "createdAt": obj.get("createdAt"), + "updatedAt": obj.get("updatedAt"), + "actionExecutionIdBeingUndone": obj.get("actionExecutionIdBeingUndone"), + } + ) + return _obj diff --git a/sysdig_client/models/action_execution_parameter_value.py b/sysdig_client/models/action_execution_parameter_value.py new file mode 100644 index 00000000..910388f1 --- /dev/null +++ b/sysdig_client/models/action_execution_parameter_value.py @@ -0,0 +1,175 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from typing_extensions import Annotated +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +ACTIONEXECUTIONPARAMETERVALUE_ONE_OF_SCHEMAS = ["bool", "int", "str"] + + +class ActionExecutionParameterValue(BaseModel): + """ + The value of a parameter. + """ + + # data type: str + oneof_schema_1_validator: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="The value of a string parameter." + ) + # data type: int + oneof_schema_2_validator: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=9223372036854775616)]] = ( + Field(default=None, description="The value of an int parameter.") + ) + # data type: bool + oneof_schema_3_validator: Optional[StrictBool] = Field(default=None, description="The value of a boolean parameter.") + actual_instance: Optional[Union[bool, int, str]] = None + one_of_schemas: Set[str] = {"bool", "int", "str"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = ActionExecutionParameterValue.model_construct() + error_messages = [] + match = 0 + # validate data type: str + try: + instance.oneof_schema_1_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: int + try: + instance.oneof_schema_2_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: bool + try: + instance.oneof_schema_3_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in ActionExecutionParameterValue with oneOf schemas: bool, int, str. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in ActionExecutionParameterValue with oneOf schemas: bool, int, str. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into str + try: + # validation + instance.oneof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_1_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into int + try: + # validation + instance.oneof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_2_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into bool + try: + # validation + instance.oneof_schema_3_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_3_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into ActionExecutionParameterValue with oneOf schemas: bool, int, str. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into ActionExecutionParameterValue with oneOf schemas: bool, int, str. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], bool, int, str]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/action_execution_status.py b/sysdig_client/models/action_execution_status.py new file mode 100644 index 00000000..d506f770 --- /dev/null +++ b/sysdig_client/models/action_execution_status.py @@ -0,0 +1,37 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class ActionExecutionStatus(str, Enum): + """ + The status of the action execution. + """ + + """ + allowed enum values + """ + ENQUEUED = "ENQUEUED" + IN_PROGRESS = "IN_PROGRESS" + COMPLETED = "COMPLETED" + FAILED = "FAILED" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of ActionExecutionStatus from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/action_executions.py b/sysdig_client/models/action_executions.py new file mode 100644 index 00000000..f5985409 --- /dev/null +++ b/sysdig_client/models/action_executions.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.action_execution import ActionExecution +from typing import Optional, Set +from typing_extensions import Self + + +class ActionExecutions(BaseModel): + """ + A list of Response Action executions. + """ # noqa: E501 + + data: Annotated[List[ActionExecution], Field(max_length=1000)] = Field(description="The list of Response Actions.") + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ActionExecutions from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ActionExecutions from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [ActionExecution.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/action_outputs_metadata.py b/sysdig_client/models/action_outputs_metadata.py new file mode 100644 index 00000000..222f9654 --- /dev/null +++ b/sysdig_client/models/action_outputs_metadata.py @@ -0,0 +1,105 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class ActionOutputsMetadata(BaseModel): + """ + Metadata that describes a parameter returned by a Response Action execution. + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=200)] = Field(description="The name of the output parameter.") + description: Annotated[str, Field(strict=True, max_length=1024)] = Field( + description="The description of the output parameter." + ) + type: Annotated[str, Field(strict=True, max_length=20)] = Field( + description="The type of an Response Action parameter.\\ It may assume the following values:\\ * string\\ * integer\\ * boolean\\ This list of possible values may grow in the future. " + ) + required: StrictBool = Field(description="If `true`, the parameter is mandatory.") + __properties: ClassVar[List[str]] = ["name", "description", "type", "required"] + + @field_validator("name") + def name_validate_regular_expression(cls, value): + """Validates the regular expression""" + if not re.match(r"^[a-zA-Z\._]*$", value): + raise ValueError(r"must validate the regular expression /^[a-zA-Z\._]*$/") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ActionOutputsMetadata from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ActionOutputsMetadata from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "description": obj.get("description"), + "type": obj.get("type"), + "required": obj.get("required"), + } + ) + return _obj diff --git a/sysdig_client/models/action_parameter_metadata.py b/sysdig_client/models/action_parameter_metadata.py new file mode 100644 index 00000000..b339be80 --- /dev/null +++ b/sysdig_client/models/action_parameter_metadata.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class ActionParameterMetadata(BaseModel): + """ + Metadata that describes a parameter to be submitted for a Response Action execution. + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=200)] = Field(description="The name of the parameter.") + description: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="The description of the parameter.") + type: Annotated[str, Field(strict=True, max_length=20)] = Field( + description="The type of an Response Action parameter.\\ It may assume the following values:\\ * string\\ * integer\\ * boolean\\ This list of possible values may grow in the future. " + ) + required: StrictBool = Field(description="If `true`, the parameter is mandatory.") + __properties: ClassVar[List[str]] = ["name", "description", "type", "required"] + + @field_validator("name") + def name_validate_regular_expression(cls, value): + """Validates the regular expression""" + if not re.match(r"^[a-zA-Z\._]*$", value): + raise ValueError(r"must validate the regular expression /^[a-zA-Z\._]*$/") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ActionParameterMetadata from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ActionParameterMetadata from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "description": obj.get("description"), + "type": obj.get("type"), + "required": obj.get("required"), + } + ) + return _obj diff --git a/sysdig_client/models/action_type.py b/sysdig_client/models/action_type.py new file mode 100644 index 00000000..0fa3f536 --- /dev/null +++ b/sysdig_client/models/action_type.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class ActionType(str, Enum): + """ + Action type. + """ + + """ + allowed enum values + """ + CAPTURE = "capture" + CONTAINER_KILLED = "container_killed" + CONTAINER_PAUSED = "container_paused" + CONTAINER_STOPPED = "container_stopped" + DRIFT_PREVENTED = "drift_prevented" + MALWARE_PREVENTED = "malware_prevented" + PROCESS_KILLED = "process_killed" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of ActionType from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/actions.py b/sysdig_client/models/actions.py new file mode 100644 index 00000000..0985dc2d --- /dev/null +++ b/sysdig_client/models/actions.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.response_action import ResponseAction +from typing import Optional, Set +from typing_extensions import Self + + +class Actions(BaseModel): + """ + A list of Response Actions + """ # noqa: E501 + + data: Annotated[List[ResponseAction], Field(max_length=1000)] = Field(description="The list of Response Actions.") + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Actions from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Actions from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [ResponseAction.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/additional_team_permissions_v1.py b/sysdig_client/models/additional_team_permissions_v1.py new file mode 100644 index 00000000..bc7ddf3b --- /dev/null +++ b/sysdig_client/models/additional_team_permissions_v1.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class AdditionalTeamPermissionsV1(BaseModel): + """ + Additional permissions available to the users of the team. + """ # noqa: E501 + + has_sysdig_captures: Optional[StrictBool] = Field( + default=False, description="Enable the Sysdig captures feature for this team.", alias="hasSysdigCaptures" + ) + has_infrastructure_events: Optional[StrictBool] = Field(default=False, alias="hasInfrastructureEvents") + has_aws_data: Optional[StrictBool] = Field(default=False, alias="hasAwsData") + has_rapid_response: Optional[StrictBool] = Field(default=False, alias="hasRapidResponse") + has_agent_cli: Optional[StrictBool] = Field(default=False, alias="hasAgentCli") + has_beacon_metrics: Optional[StrictBool] = Field(default=False, alias="hasBeaconMetrics") + __properties: ClassVar[List[str]] = [ + "hasSysdigCaptures", + "hasInfrastructureEvents", + "hasAwsData", + "hasRapidResponse", + "hasAgentCli", + "hasBeaconMetrics", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AdditionalTeamPermissionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AdditionalTeamPermissionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasSysdigCaptures": obj.get("hasSysdigCaptures") if obj.get("hasSysdigCaptures") is not None else False, + "hasInfrastructureEvents": obj.get("hasInfrastructureEvents") + if obj.get("hasInfrastructureEvents") is not None + else False, + "hasAwsData": obj.get("hasAwsData") if obj.get("hasAwsData") is not None else False, + "hasRapidResponse": obj.get("hasRapidResponse") if obj.get("hasRapidResponse") is not None else False, + "hasAgentCli": obj.get("hasAgentCli") if obj.get("hasAgentCli") is not None else False, + "hasBeaconMetrics": obj.get("hasBeaconMetrics") if obj.get("hasBeaconMetrics") is not None else False, + } + ) + return _obj diff --git a/sysdig_client/models/agentless_ml_runtime_detection_content.py b/sysdig_client/models/agentless_ml_runtime_detection_content.py new file mode 100644 index 00000000..1a2c46b0 --- /dev/null +++ b/sysdig_client/models/agentless_ml_runtime_detection_content.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.agentless_ml_runtime_detection_content_all_of_fields import ( + AgentlessMlRuntimeDetectionContentAllOfFields, +) +from sysdig_client.models.event_content_type import EventContentType +from sysdig_client.models.policy_origin import PolicyOrigin +from typing import Set +from typing_extensions import Self + + +class AgentlessMlRuntimeDetectionContent(BaseModel): + """ + Agentless ML event content + """ # noqa: E501 + + type: EventContentType + policy_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, description="ID of the policy that generated the event", alias="policyId" + ) + policy_origin: PolicyOrigin = Field(alias="policyOrigin") + policy_notification_channel_ids: Optional[ + Annotated[List[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]], Field(max_length=100)] + ] = Field( + default=None, + description="The list of notification channels where an alert is sent after event is generated. Doesn't account for aggregations and eventual thresholds. ", + alias="policyNotificationChannelIds", + ) + rule_name: Annotated[str, Field(strict=True, max_length=1024)] = Field( + description="Name of the rule the event is generated after", alias="ruleName" + ) + rule_type: Annotated[int, Field(le=14, strict=True, ge=1)] = Field( + description="Rule type: - 1 - List matching - process - 2 - List matching - container - 3 - List matching - file - 4 - List matching - network - 5 - List matching - syscall - 6 - Falco - 7 - Drift detection - 8 - Malware detection - 11 - ML - Cryptominer detection - 13 - ML - AWS anomalous login - 14 - ML - Okta anomalous login ", + alias="ruleType", + ) + fields: AgentlessMlRuntimeDetectionContentAllOfFields + __properties: ClassVar[List[str]] = [ + "type", + "policyId", + "policyOrigin", + "policyNotificationChannelIds", + "ruleName", + "ruleType", + "fields", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AgentlessMlRuntimeDetectionContent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of fields + if self.fields: + _dict["fields"] = self.fields.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentlessMlRuntimeDetectionContent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "policyId": obj.get("policyId"), + "policyOrigin": obj.get("policyOrigin"), + "policyNotificationChannelIds": obj.get("policyNotificationChannelIds"), + "ruleName": obj.get("ruleName"), + "ruleType": obj.get("ruleType"), + "fields": AgentlessMlRuntimeDetectionContentAllOfFields.from_dict(obj["fields"]) + if obj.get("fields") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/agentless_ml_runtime_detection_content_all_of_fields.py b/sysdig_client/models/agentless_ml_runtime_detection_content_all_of_fields.py new file mode 100644 index 00000000..71d6511c --- /dev/null +++ b/sysdig_client/models/agentless_ml_runtime_detection_content_all_of_fields.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class AgentlessMlRuntimeDetectionContentAllOfFields(BaseModel): + """ + AgentlessMlRuntimeDetectionContentAllOfFields + """ # noqa: E501 + + __properties: ClassVar[List[str]] = [] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AgentlessMlRuntimeDetectionContentAllOfFields from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentlessMlRuntimeDetectionContentAllOfFields from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({}) + return _obj diff --git a/sysdig_client/models/agentless_runtime_detection_content.py b/sysdig_client/models/agentless_runtime_detection_content.py new file mode 100644 index 00000000..e4dcc09a --- /dev/null +++ b/sysdig_client/models/agentless_runtime_detection_content.py @@ -0,0 +1,169 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.agentless_runtime_detection_content_all_of_fields import AgentlessRuntimeDetectionContentAllOfFields +from sysdig_client.models.event_content_type import EventContentType +from sysdig_client.models.policy_origin import PolicyOrigin +from typing import Set +from typing_extensions import Self + + +class AgentlessRuntimeDetectionContent(BaseModel): + """ + Agentless CDR event content + """ # noqa: E501 + + type: EventContentType + integration_id: Annotated[str, Field(strict=True, max_length=32)] = Field( + description="The unique identifier of the integration that generated the event.", alias="integrationId" + ) + integration_type: StrictStr = Field(description="The type of integration that generated the event.", alias="integrationType") + rule_name: Annotated[str, Field(strict=True, max_length=1024)] = Field( + description="Name of the rule the event is generated after", alias="ruleName" + ) + rule_type: Annotated[int, Field(le=14, strict=True, ge=1)] = Field( + description="Rule type: - 1 - List matching - process - 2 - List matching - container - 3 - List matching - file - 4 - List matching - network - 5 - List matching - syscall - 6 - Falco - 7 - Drift detection - 8 - Malware detection - 11 - ML - Cryptominer detection - 13 - ML - AWS anomalous login - 14 - ML - Okta anomalous login ", + alias="ruleType", + ) + rule_tags: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=64)]], Field(max_length=1000)]] = Field( + default=None, description="The tags attached to the rule", alias="ruleTags" + ) + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field( + description="ID of the policy that generated the event", alias="policyId" + ) + policy_origin: PolicyOrigin = Field(alias="policyOrigin") + policy_notification_channel_ids: Optional[ + Annotated[List[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]], Field(max_length=100)] + ] = Field( + default=None, + description="The list of notification channels where an alert is sent after event is generated. Doesn't account for aggregations and eventual thresholds. ", + alias="policyNotificationChannelIds", + ) + priority: Optional[StrictStr] = Field(default=None, description="Rule priority") + output: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="Event output, generated after the configured rule" + ) + fields: Optional[AgentlessRuntimeDetectionContentAllOfFields] = None + __properties: ClassVar[List[str]] = [ + "type", + "integrationId", + "integrationType", + "ruleName", + "ruleType", + "ruleTags", + "policyId", + "policyOrigin", + "policyNotificationChannelIds", + "priority", + "output", + "fields", + ] + + @field_validator("integration_type") + def integration_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["cloudtrail", "okta", "github", "gcp", "azure"]): + raise ValueError("must be one of enum values ('cloudtrail', 'okta', 'github', 'gcp', 'azure')") + return value + + @field_validator("priority") + def priority_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["emergency", "alert", "critical", "error", "warning", "informational", "notice", "debug"]): + raise ValueError( + "must be one of enum values ('emergency', 'alert', 'critical', 'error', 'warning', 'informational', 'notice', 'debug')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AgentlessRuntimeDetectionContent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of fields + if self.fields: + _dict["fields"] = self.fields.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentlessRuntimeDetectionContent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "integrationId": obj.get("integrationId"), + "integrationType": obj.get("integrationType"), + "ruleName": obj.get("ruleName"), + "ruleType": obj.get("ruleType"), + "ruleTags": obj.get("ruleTags"), + "policyId": obj.get("policyId"), + "policyOrigin": obj.get("policyOrigin"), + "policyNotificationChannelIds": obj.get("policyNotificationChannelIds"), + "priority": obj.get("priority"), + "output": obj.get("output"), + "fields": AgentlessRuntimeDetectionContentAllOfFields.from_dict(obj["fields"]) + if obj.get("fields") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/agentless_runtime_detection_content_all_of_fields.py b/sysdig_client/models/agentless_runtime_detection_content_all_of_fields.py new file mode 100644 index 00000000..8fd6f0e7 --- /dev/null +++ b/sysdig_client/models/agentless_runtime_detection_content_all_of_fields.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class AgentlessRuntimeDetectionContentAllOfFields(BaseModel): + """ + AgentlessRuntimeDetectionContentAllOfFields + """ # noqa: E501 + + __properties: ClassVar[List[str]] = [] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AgentlessRuntimeDetectionContentAllOfFields from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentlessRuntimeDetectionContentAllOfFields from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({}) + return _obj diff --git a/sysdig_client/models/alert_monitor_event.py b/sysdig_client/models/alert_monitor_event.py new file mode 100644 index 00000000..d05a0daa --- /dev/null +++ b/sysdig_client/models/alert_monitor_event.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.monitor_event import MonitorEvent +from sysdig_client.models.monitor_scope_label import MonitorScopeLabel +from typing import Set +from typing_extensions import Self + + +class AlertMonitorEvent(MonitorEvent): + """ + Monitor Alert Event + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=32)] = Field(description="The event id.") + created_on: datetime = Field(description="Timestamp when the event was created in the system", alias="createdOn") + occurred_at: datetime = Field( + description="Event logical timestamp (when the event occurred). For alert events, this is the time when the alert was triggered.", + alias="occurredAt", + ) + name: Annotated[str, Field(strict=True, max_length=64)] = Field(description="The event name") + description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="Description of the event." + ) + severity: Annotated[int, Field(le=7, strict=True, ge=0)] = Field( + description="The event severity. A lower value means more severe, with 0 being the highest severity and 7 being the lowest." + ) + scope_labels: Optional[Annotated[List[MonitorScopeLabel], Field(min_length=1, max_length=1024)]] = Field( + default=None, + description="List of scope labels, including those from initial scope and those coming from the enrichment process.", + alias="scopeLabels", + ) + scope: Optional[Annotated[str, Field(strict=True, max_length=50000)]] = Field(default=None, description="Initial event scope") + alert_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, description="ID of the alert that generated the event", alias="alertId" + ) + ended_at: Optional[datetime] = Field(default=None, description="Timestamp when the alert resolved", alias="endedAt") + alert_state: Optional[Annotated[str, Field(strict=True, max_length=32)]] = Field( + default=None, description="The alert state. Current supported values are TRIGGERED, RESOLVED.", alias="alertState" + ) + acknowledged: Optional[StrictBool] = Field(default=None, description="Whether the alert has been acknowledged.") + manually_resolved: Optional[StrictBool] = Field( + default=None, description="Whether the alert has been manually resolved.", alias="manuallyResolved" + ) + silenced: Optional[StrictBool] = Field(default=None, description="Whether the alert has been silenced.") + __properties: ClassVar[List[str]] = [ + "id", + "createdOn", + "occurredAt", + "name", + "description", + "severity", + "scopeLabels", + "scope", + "type", + "alertId", + "endedAt", + "alertState", + "acknowledged", + "manuallyResolved", + "silenced", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AlertMonitorEvent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in scope_labels (list) + _items = [] + if self.scope_labels: + for _item_scope_labels in self.scope_labels: + if _item_scope_labels: + _items.append(_item_scope_labels.to_dict()) + _dict["scopeLabels"] = _items + # set to None if scope_labels (nullable) is None + # and model_fields_set contains the field + if self.scope_labels is None and "scope_labels" in self.model_fields_set: + _dict["scopeLabels"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AlertMonitorEvent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "createdOn": obj.get("createdOn"), + "occurredAt": obj.get("occurredAt"), + "name": obj.get("name"), + "description": obj.get("description"), + "severity": obj.get("severity"), + "scopeLabels": [MonitorScopeLabel.from_dict(_item) for _item in obj["scopeLabels"]] + if obj.get("scopeLabels") is not None + else None, + "scope": obj.get("scope"), + "type": obj.get("type"), + "alertId": obj.get("alertId"), + "endedAt": obj.get("endedAt"), + "alertState": obj.get("alertState"), + "acknowledged": obj.get("acknowledged"), + "manuallyResolved": obj.get("manuallyResolved"), + "silenced": obj.get("silenced"), + } + ) + return _obj diff --git a/sysdig_client/models/alerts_response_v1.py b/sysdig_client/models/alerts_response_v1.py new file mode 100644 index 00000000..8ed0485a --- /dev/null +++ b/sysdig_client/models/alerts_response_v1.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.alerts_response_v1_data import AlertsResponseV1Data +from typing import Set +from typing_extensions import Self + + +class AlertsResponseV1(BaseModel): + """ + AlertsResponseV1 + """ # noqa: E501 + + status: Optional[StrictStr] = Field(default=None, description="Request status.") + data: Optional[AlertsResponseV1Data] = None + warnings: Optional[List[StrictStr]] = Field(default=None, description="A set of warning messages attached to the response.") + infos: Optional[List[StrictStr]] = Field(default=None, description="A set of information messages attached to the response.") + __properties: ClassVar[List[str]] = ["status", "data", "warnings", "infos"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["success", "error"]): + raise ValueError("must be one of enum values ('success', 'error')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AlertsResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of data + if self.data: + _dict["data"] = self.data.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AlertsResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "status": obj.get("status"), + "data": AlertsResponseV1Data.from_dict(obj["data"]) if obj.get("data") is not None else None, + "warnings": obj.get("warnings"), + "infos": obj.get("infos"), + } + ) + return _obj diff --git a/sysdig_client/models/alerts_response_v1_data.py b/sysdig_client/models/alerts_response_v1_data.py new file mode 100644 index 00000000..8074aa42 --- /dev/null +++ b/sysdig_client/models/alerts_response_v1_data.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.alerts_response_v1_data_alerts_inner import AlertsResponseV1DataAlertsInner +from typing import Set +from typing_extensions import Self + + +class AlertsResponseV1Data(BaseModel): + """ + Response payload containing active alerts. + """ # noqa: E501 + + alerts: Optional[List[AlertsResponseV1DataAlertsInner]] = Field(default=None, description="List of currently active alerts.") + __properties: ClassVar[List[str]] = ["alerts"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AlertsResponseV1Data from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in alerts (list) + _items = [] + if self.alerts: + for _item_alerts in self.alerts: + if _item_alerts: + _items.append(_item_alerts.to_dict()) + _dict["alerts"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AlertsResponseV1Data from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "alerts": [AlertsResponseV1DataAlertsInner.from_dict(_item) for _item in obj["alerts"]] + if obj.get("alerts") is not None + else None + } + ) + return _obj diff --git a/sysdig_client/models/alerts_response_v1_data_alerts_inner.py b/sysdig_client/models/alerts_response_v1_data_alerts_inner.py new file mode 100644 index 00000000..8bdc877f --- /dev/null +++ b/sysdig_client/models/alerts_response_v1_data_alerts_inner.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class AlertsResponseV1DataAlertsInner(BaseModel): + """ + AlertsResponseV1DataAlertsInner + """ # noqa: E501 + + active_at: datetime = Field(description="Timestamp when the alert became active.", alias="activeAt") + annotations: Dict[str, Annotated[str, Field(strict=True, max_length=1024)]] = Field( + description="Additional metadata about the alert." + ) + labels: Dict[str, Annotated[str, Field(strict=True, max_length=255)]] = Field( + description="Key-value pairs identifying the alert." + ) + state: StrictStr = Field(description="Current state of the alert.") + value: Annotated[str, Field(strict=True, max_length=20)] = Field(description="The numerical value that triggered the alert.") + __properties: ClassVar[List[str]] = ["activeAt", "annotations", "labels", "state", "value"] + + @field_validator("state") + def state_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["pending", "firing"]): + raise ValueError("must be one of enum values ('pending', 'firing')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AlertsResponseV1DataAlertsInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AlertsResponseV1DataAlertsInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "activeAt": obj.get("activeAt"), + "annotations": obj.get("annotations"), + "labels": obj.get("labels"), + "state": obj.get("state"), + "value": obj.get("value"), + } + ) + return _obj diff --git a/sysdig_client/models/all_sso_settings_response_v1.py b/sysdig_client/models/all_sso_settings_response_v1.py new file mode 100644 index 00000000..2ea3269e --- /dev/null +++ b/sysdig_client/models/all_sso_settings_response_v1.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.sso_settings_response_v1 import SsoSettingsResponseV1 +from typing import Set +from typing_extensions import Self + + +class AllSsoSettingsResponseV1(BaseModel): + """ + AllSsoSettingsResponseV1 + """ # noqa: E501 + + data: Optional[Annotated[List[SsoSettingsResponseV1], Field(max_length=250)]] = Field( + default=None, description="The list of SSO settings." + ) + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AllSsoSettingsResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AllSsoSettingsResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [SsoSettingsResponseV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/amazon_sqs_create_connection_info.py b/sysdig_client/models/amazon_sqs_create_connection_info.py new file mode 100644 index 00000000..08cf9e21 --- /dev/null +++ b/sysdig_client/models/amazon_sqs_create_connection_info.py @@ -0,0 +1,121 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class AmazonSQSCreateConnectionInfo(BaseModel): + """ + AmazonSQSCreateConnectionInfo + """ # noqa: E501 + + owner_account: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The AWS account ID of the account that created the queue", alias="ownerAccount" + ) + region: Annotated[str, Field(strict=True, max_length=16)] = Field(description="Region in which the SQS queue is hosted") + queue: Annotated[str, Field(strict=True, max_length=16)] = Field(description="Queue name") + delay: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="Delay, in seconds, applied to the data" + ) + headers: Optional[Annotated[List[KeyValueObject], Field(max_length=256)]] = Field( + default=None, + description="Extra headers to add to the payload. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value", + ) + access_key: Annotated[str, Field(strict=True, max_length=32)] = Field( + description="Access Key for authenticating on AWS to send data on the queue", alias="accessKey" + ) + access_secret: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="Access Secret for authenticating on AWS to send data on the queue", alias="accessSecret" + ) + __properties: ClassVar[List[str]] = ["ownerAccount", "region", "queue", "delay", "headers", "accessKey", "accessSecret"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AmazonSQSCreateConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in headers (list) + _items = [] + if self.headers: + for _item_headers in self.headers: + if _item_headers: + _items.append(_item_headers.to_dict()) + _dict["headers"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AmazonSQSCreateConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "ownerAccount": obj.get("ownerAccount"), + "region": obj.get("region"), + "queue": obj.get("queue"), + "delay": obj.get("delay"), + "headers": [KeyValueObject.from_dict(_item) for _item in obj["headers"]] + if obj.get("headers") is not None + else None, + "accessKey": obj.get("accessKey"), + "accessSecret": obj.get("accessSecret"), + } + ) + return _obj diff --git a/sysdig_client/models/amazon_sqs_update_connection_info.py b/sysdig_client/models/amazon_sqs_update_connection_info.py new file mode 100644 index 00000000..a3e9ef2c --- /dev/null +++ b/sysdig_client/models/amazon_sqs_update_connection_info.py @@ -0,0 +1,121 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class AmazonSQSUpdateConnectionInfo(BaseModel): + """ + AmazonSQSUpdateConnectionInfo + """ # noqa: E501 + + owner_account: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The AWS account ID of the account that created the queue", alias="ownerAccount" + ) + region: Annotated[str, Field(strict=True, max_length=16)] = Field(description="Region in which the SQS queue is hosted") + queue: Annotated[str, Field(strict=True, max_length=16)] = Field(description="Queue name") + delay: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="Delay, in seconds, applied to the data" + ) + headers: Optional[Annotated[List[KeyValueObject], Field(max_length=256)]] = Field( + default=None, + description="Extra headers to add to the payload. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value", + ) + access_key: Optional[Annotated[str, Field(strict=True, max_length=32)]] = Field( + default=None, description="Access Key for authenticating on AWS to send data on the queue", alias="accessKey" + ) + access_secret: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Access Secret for authenticating on AWS to send data on the queue", alias="accessSecret" + ) + __properties: ClassVar[List[str]] = ["ownerAccount", "region", "queue", "delay", "headers", "accessKey", "accessSecret"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AmazonSQSUpdateConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in headers (list) + _items = [] + if self.headers: + for _item_headers in self.headers: + if _item_headers: + _items.append(_item_headers.to_dict()) + _dict["headers"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AmazonSQSUpdateConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "ownerAccount": obj.get("ownerAccount"), + "region": obj.get("region"), + "queue": obj.get("queue"), + "delay": obj.get("delay"), + "headers": [KeyValueObject.from_dict(_item) for _item in obj["headers"]] + if obj.get("headers") is not None + else None, + "accessKey": obj.get("accessKey"), + "accessSecret": obj.get("accessSecret"), + } + ) + return _obj diff --git a/sysdig_client/models/audit_event.py b/sysdig_client/models/audit_event.py new file mode 100644 index 00000000..37b09f59 --- /dev/null +++ b/sysdig_client/models/audit_event.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.audit_trail_content import AuditTrailContent +from typing import Set +from typing_extensions import Self + + +class AuditEvent(BaseModel): + """ + Platform Audit Event + """ # noqa: E501 + + id: Optional[Annotated[str, Field(strict=True, max_length=32)]] = Field(default=None, description="The event id.") + cursor: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, + description="The cursor that can be used to fetch a set of events surrounding this same event. By providing this value as `cursor` in a GET request, you will get the set of events surrounding this current event. ", + ) + timestamp: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="The event timestamp in nanoseconds." + ) + content: Optional[AuditTrailContent] = None + labels: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=256)]]] = Field( + default=None, description="Key value pairs of values, represents entityType where the Audit Event was generated. " + ) + __properties: ClassVar[List[str]] = ["id", "cursor", "timestamp", "content", "labels"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AuditEvent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of content + if self.content: + _dict["content"] = self.content.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AuditEvent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "cursor": obj.get("cursor"), + "timestamp": obj.get("timestamp"), + "content": AuditTrailContent.from_dict(obj["content"]) if obj.get("content") is not None else None, + "labels": obj.get("labels"), + } + ) + return _obj diff --git a/sysdig_client/models/audit_page.py b/sysdig_client/models/audit_page.py new file mode 100644 index 00000000..b604e791 --- /dev/null +++ b/sysdig_client/models/audit_page.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class AuditPage(BaseModel): + """ + Pagination information. + """ # noqa: E501 + + total: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="The number of events matching the search criteria. This number is always major or equal to the number of events returned. " + ) + prev: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="`prev` is a string pointing to the previous page of data. Use this as the `cursor` to get the previous page of data. ", + ) + next: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="`next` is a string pointing to the next page of data. Use this as the `cursor` to scroll paginated results and get the next page of data. If not included, the current response is the last page. ", + ) + __properties: ClassVar[List[str]] = ["total", "prev", "next"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AuditPage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AuditPage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"total": obj.get("total"), "prev": obj.get("prev"), "next": obj.get("next")}) + return _obj diff --git a/sysdig_client/models/audit_supported_filter.py b/sysdig_client/models/audit_supported_filter.py new file mode 100644 index 00000000..2dce1942 --- /dev/null +++ b/sysdig_client/models/audit_supported_filter.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.operand import Operand +from sysdig_client.models.supported_filter_type import SupportedFilterType +from typing import Set +from typing_extensions import Self + + +class AuditSupportedFilter(BaseModel): + """ + A supported field for filtering Activity Audit events. + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Attribute onto which filtering is supported.") + type: SupportedFilterType + operands: Optional[Annotated[List[Operand], Field(min_length=0, max_length=8)]] = Field( + default=None, description="The list of supported operands for filtering events." + ) + __properties: ClassVar[List[str]] = ["id", "type", "operands"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AuditSupportedFilter from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AuditSupportedFilter from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"id": obj.get("id"), "type": obj.get("type"), "operands": obj.get("operands")}) + return _obj diff --git a/sysdig_client/models/audit_supported_filters_response.py b/sysdig_client/models/audit_supported_filters_response.py new file mode 100644 index 00000000..3691f876 --- /dev/null +++ b/sysdig_client/models/audit_supported_filters_response.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.audit_supported_filter import AuditSupportedFilter +from typing import Optional, Set +from typing_extensions import Self + + +class AuditSupportedFiltersResponse(BaseModel): + """ + The list of supported attributes for filtering Activity Audit entries. + """ # noqa: E501 + + data: Annotated[List[AuditSupportedFilter], Field(max_length=1000)] = Field( + description="The list of supported attributes for filtering Activity Audit entries." + ) + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AuditSupportedFiltersResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AuditSupportedFiltersResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [AuditSupportedFilter.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/audit_trail_content.py b/sysdig_client/models/audit_trail_content.py new file mode 100644 index 00000000..10de9a41 --- /dev/null +++ b/sysdig_client/models/audit_trail_content.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class AuditTrailContent(BaseModel): + """ + Content object for Platform Audit Event. + """ # noqa: E501 + + timestamp_ns: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="The event timestamp in nanoseconds.", alias="timestampNs" + ) + user_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of user that was preforming some action.", alias="userId" + ) + username: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="Username of the user that was preforming some action." + ) + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="Team ID, that user who preformed some action was logged in.", alias="teamId" + ) + team_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Name of the team, that user who preformed action was logged in.", alias="teamName" + ) + request_method: Optional[StrictStr] = Field( + default=None, description="HTTP request method that was used to preform action.", alias="requestMethod" + ) + request_uri: Optional[Annotated[str, Field(strict=True, max_length=4096)]] = Field( + default=None, description="URI of the request that was used to preform action.", alias="requestUri" + ) + user_origin_ip: Optional[Annotated[str, Field(strict=True, max_length=43)]] = Field( + default=None, description="IP address of the user that was preforming action.", alias="userOriginIP" + ) + query_string: Optional[Annotated[str, Field(strict=True, max_length=8192)]] = Field( + default=None, description="Query string of the request that was used to preform action.", alias="queryString" + ) + response_status_code: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="HTTP response status code of the request that was used to preform action.", + alias="responseStatusCode", + ) + entity_type: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, + description="Type of entity that was affected by the action. Full list of possible values can be found in the our documentation https://docs.sysdig.com/en/docs/administration/administration-settings/app-status-and-audit/sysdig-platform-audit/#sysdig-monitor-and-sysdig-platform. ", + alias="entityType", + ) + entity_id: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="ID of the entity that was affected by the action.", alias="entityId" + ) + entity_payload: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="Payload of the entity that was affected by the action.", alias="entityPayload" + ) + service_account_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of the service account that was used to preform action.", alias="serviceAccountId" + ) + service_account_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Name of the service account that was used to preform action.", alias="serviceAccountName" + ) + __properties: ClassVar[List[str]] = [ + "timestampNs", + "userId", + "username", + "teamId", + "teamName", + "requestMethod", + "requestUri", + "userOriginIP", + "queryString", + "responseStatusCode", + "entityType", + "entityId", + "entityPayload", + "serviceAccountId", + "serviceAccountName", + ] + + @field_validator("request_method") + def request_method_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["GET", "POST", "PUT", "DELETE", "PATCH"]): + raise ValueError("must be one of enum values ('GET', 'POST', 'PUT', 'DELETE', 'PATCH')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AuditTrailContent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AuditTrailContent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "timestampNs": obj.get("timestampNs"), + "userId": obj.get("userId"), + "username": obj.get("username"), + "teamId": obj.get("teamId"), + "teamName": obj.get("teamName"), + "requestMethod": obj.get("requestMethod"), + "requestUri": obj.get("requestUri"), + "userOriginIP": obj.get("userOriginIP"), + "queryString": obj.get("queryString"), + "responseStatusCode": obj.get("responseStatusCode"), + "entityType": obj.get("entityType"), + "entityId": obj.get("entityId"), + "entityPayload": obj.get("entityPayload"), + "serviceAccountId": obj.get("serviceAccountId"), + "serviceAccountName": obj.get("serviceAccountName"), + } + ) + return _obj diff --git a/sysdig_client/models/authenticated_connection_info_elasticsearch.py b/sysdig_client/models/authenticated_connection_info_elasticsearch.py new file mode 100644 index 00000000..1602e989 --- /dev/null +++ b/sysdig_client/models/authenticated_connection_info_elasticsearch.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class AuthenticatedConnectionInfoElasticsearch(BaseModel): + """ + AuthenticatedConnectionInfoElasticsearch + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Elasticsearch instance endpoint URL") + index: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Name of the index to store the data in") + is_insecure: Optional[StrictBool] = Field(default=False, description="Don't verify TLS certificate", alias="isInsecure") + auth: StrictStr = Field(description="Authentication method") + format: Optional[StrictStr] = Field( + default=None, + description='If specified, transforms `content.fields` and `labels` * `KV_PAIRS` - from objects (i.e. `{"foo": "bar", ...}`) to arrays of objects with "key" and "value" properties {i.e. `[{"key" : "foo", "value": "bar"}, ...]`) ', + ) + secret: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="Authentication secret. To be set if auth is specified" + ) + __properties: ClassVar[List[str]] = ["endpoint", "index", "isInsecure", "auth", "format", "secret"] + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["BASIC_AUTH", "BEARER_TOKEN"]): + raise ValueError("must be one of enum values ('BASIC_AUTH', 'BEARER_TOKEN')") + return value + + @field_validator("format") + def format_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["KV_PAIRS"]): + raise ValueError("must be one of enum values ('KV_PAIRS')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AuthenticatedConnectionInfoElasticsearch from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AuthenticatedConnectionInfoElasticsearch from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "index": obj.get("index"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "auth": obj.get("auth"), + "format": obj.get("format"), + "secret": obj.get("secret"), + } + ) + return _obj diff --git a/sysdig_client/models/authenticated_connection_info_kafka.py b/sysdig_client/models/authenticated_connection_info_kafka.py new file mode 100644 index 00000000..63b9767a --- /dev/null +++ b/sysdig_client/models/authenticated_connection_info_kafka.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class AuthenticatedConnectionInfoKafka(BaseModel): + """ + AuthenticatedConnectionInfoKafka + """ # noqa: E501 + + brokers: Annotated[List[Annotated[str, Field(strict=True, max_length=256)]], Field(max_length=32)] = Field( + description="Kafka server endpoint. A Kafka cluster may provide several brokers; it follows the 'hostname: port' (without protocol scheme)." + ) + topic: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="Kafka topic where you want to store the forwarded data" + ) + balancer: Optional[StrictStr] = Field( + default="murmur2", + description="Algorithm that the client uses to multiplex data between the multiple Brokers. For compatibility with the Java client, Murmur2 is used as the default partitioner", + ) + compression: Optional[StrictStr] = Field(default=None, description="Compression standard used for the data") + is_tls_enabled: Optional[StrictBool] = Field(default=None, alias="isTlsEnabled") + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + auth: StrictStr = Field(description="The authentication method to optionally use. Currently supporting only GSSAPI") + principal: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI principal") + realm: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI realm") + service: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI Service name") + krb5: Annotated[str, Field(strict=True, max_length=1048576)] = Field(description="Kerberos krb5.conf file content for GSSAPI") + keytab: Annotated[str, Field(strict=True, max_length=1048576)] = Field(description="base64 encoded Kerberos keytab") + __properties: ClassVar[List[str]] = [ + "brokers", + "topic", + "balancer", + "compression", + "isTlsEnabled", + "isInsecure", + "auth", + "principal", + "realm", + "service", + "krb5", + "keytab", + ] + + @field_validator("balancer") + def balancer_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["roundrobin", "leastbytes", "hash", "crc32", "murmur2"]): + raise ValueError("must be one of enum values ('roundrobin', 'leastbytes', 'hash', 'crc32', 'murmur2')") + return value + + @field_validator("compression") + def compression_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["lz4", "snappy", "zstd", "gzip"]): + raise ValueError("must be one of enum values ('lz4', 'snappy', 'zstd', 'gzip')") + return value + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["gssapi"]): + raise ValueError("must be one of enum values ('gssapi')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AuthenticatedConnectionInfoKafka from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AuthenticatedConnectionInfoKafka from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "brokers": obj.get("brokers"), + "topic": obj.get("topic"), + "balancer": obj.get("balancer") if obj.get("balancer") is not None else "murmur2", + "compression": obj.get("compression"), + "isTlsEnabled": obj.get("isTlsEnabled"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "auth": obj.get("auth"), + "principal": obj.get("principal"), + "realm": obj.get("realm"), + "service": obj.get("service"), + "krb5": obj.get("krb5"), + "keytab": obj.get("keytab"), + } + ) + return _obj diff --git a/sysdig_client/models/authenticated_connection_info_webhook.py b/sysdig_client/models/authenticated_connection_info_webhook.py new file mode 100644 index 00000000..9723a138 --- /dev/null +++ b/sysdig_client/models/authenticated_connection_info_webhook.py @@ -0,0 +1,161 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class AuthenticatedConnectionInfoWebhook(BaseModel): + """ + AuthenticatedConnectionInfoWebhook + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=128)] = Field( + description="Webhook endpoint following the schema protocol" + ) + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + headers: Optional[Annotated[List[KeyValueObject], Field(max_length=256)]] = Field( + default=None, + description="Extra headers to add to the request. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value", + ) + output: Optional[StrictStr] = Field(default="json", description="Payload format") + timestamp_format: Optional[StrictStr] = Field( + default="nanoseconds", description='The resolution of the "timestamp" field in the payload', alias="timestampFormat" + ) + auth: StrictStr = Field(description="Authentication method") + certificate_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, + description="ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field", + alias="certificateId", + ) + secret: Annotated[str, Field(strict=True, max_length=128)] = Field( + description='Secret to use, according to the "auth" value.' + ) + __properties: ClassVar[List[str]] = [ + "endpoint", + "isInsecure", + "headers", + "output", + "timestampFormat", + "auth", + "certificateId", + "secret", + ] + + @field_validator("output") + def output_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["json", "ndjson"]): + raise ValueError("must be one of enum values ('json', 'ndjson')") + return value + + @field_validator("timestamp_format") + def timestamp_format_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["seconds", "milliseconds", "microseconds", "nanoseconds"]): + raise ValueError("must be one of enum values ('seconds', 'milliseconds', 'microseconds', 'nanoseconds')") + return value + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["BASIC_AUTH", "BEARER_TOKEN", "SIGNATURE", "CERTIFICATE"]): + raise ValueError("must be one of enum values ('BASIC_AUTH', 'BEARER_TOKEN', 'SIGNATURE', 'CERTIFICATE')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AuthenticatedConnectionInfoWebhook from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in headers (list) + _items = [] + if self.headers: + for _item_headers in self.headers: + if _item_headers: + _items.append(_item_headers.to_dict()) + _dict["headers"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AuthenticatedConnectionInfoWebhook from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "headers": [KeyValueObject.from_dict(_item) for _item in obj["headers"]] + if obj.get("headers") is not None + else None, + "output": obj.get("output") if obj.get("output") is not None else "json", + "timestampFormat": obj.get("timestampFormat") if obj.get("timestampFormat") is not None else "nanoseconds", + "auth": obj.get("auth"), + "certificateId": obj.get("certificateId"), + "secret": obj.get("secret"), + } + ) + return _obj diff --git a/sysdig_client/models/base_action.py b/sysdig_client/models/base_action.py new file mode 100644 index 00000000..506cff11 --- /dev/null +++ b/sysdig_client/models/base_action.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.action_type import ActionType +from typing import Optional, Set +from typing_extensions import Self + + +class BaseAction(BaseModel): + """ + BaseAction + """ # noqa: E501 + + type: ActionType + __properties: ClassVar[List[str]] = ["type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseAction from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/base_connection_info_amazon_sqs.py b/sysdig_client/models/base_connection_info_amazon_sqs.py new file mode 100644 index 00000000..890d640e --- /dev/null +++ b/sysdig_client/models/base_connection_info_amazon_sqs.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoAmazonSqs(BaseModel): + """ + BaseConnectionInfoAmazonSqs + """ # noqa: E501 + + owner_account: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The AWS account ID of the account that created the queue", alias="ownerAccount" + ) + region: Annotated[str, Field(strict=True, max_length=16)] = Field(description="Region in which the SQS queue is hosted") + queue: Annotated[str, Field(strict=True, max_length=16)] = Field(description="Queue name") + delay: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="Delay, in seconds, applied to the data" + ) + headers: Optional[Annotated[List[KeyValueObject], Field(max_length=256)]] = Field( + default=None, + description="Extra headers to add to the payload. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value", + ) + __properties: ClassVar[List[str]] = ["ownerAccount", "region", "queue", "delay", "headers"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoAmazonSqs from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in headers (list) + _items = [] + if self.headers: + for _item_headers in self.headers: + if _item_headers: + _items.append(_item_headers.to_dict()) + _dict["headers"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoAmazonSqs from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "ownerAccount": obj.get("ownerAccount"), + "region": obj.get("region"), + "queue": obj.get("queue"), + "delay": obj.get("delay"), + "headers": [KeyValueObject.from_dict(_item) for _item in obj["headers"]] + if obj.get("headers") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/base_connection_info_chronicle.py b/sysdig_client/models/base_connection_info_chronicle.py new file mode 100644 index 00000000..e1577a43 --- /dev/null +++ b/sysdig_client/models/base_connection_info_chronicle.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoChronicle(BaseModel): + """ + BaseConnectionInfoChronicle + """ # noqa: E501 + + region: Optional[StrictStr] = Field(default="us", description="The target region") + __properties: ClassVar[List[str]] = ["region"] + + @field_validator("region") + def region_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["us", "europe", "asia-southeast1"]): + raise ValueError("must be one of enum values ('us', 'europe', 'asia-southeast1')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoChronicle from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoChronicle from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"region": obj.get("region") if obj.get("region") is not None else "us"}) + return _obj diff --git a/sysdig_client/models/base_connection_info_chronicle_v2.py b/sysdig_client/models/base_connection_info_chronicle_v2.py new file mode 100644 index 00000000..4103cf2b --- /dev/null +++ b/sysdig_client/models/base_connection_info_chronicle_v2.py @@ -0,0 +1,122 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoChronicleV2(BaseModel): + """ + BaseConnectionInfoChronicleV2 + """ # noqa: E501 + + region: Optional[StrictStr] = Field(default="us", description="The target region") + chronicle_customer_id: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="Unique identifier (UUID) corresponding to a particular Chronicle instance", alias="chronicleCustomerId" + ) + namespace: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="User-configured environment namespace to identify the data domain the logs originated from" + ) + __properties: ClassVar[List[str]] = ["region", "chronicleCustomerId", "namespace"] + + @field_validator("region") + def region_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set( + [ + "us", + "europe", + "europe-west2", + "europe-west3", + "europe-west6", + "asia-southeast1", + "asia-south1", + "asia-northeast1", + "me-west1", + "me-central2", + "australia-southeast1", + ] + ): + raise ValueError( + "must be one of enum values ('us', 'europe', 'europe-west2', 'europe-west3', 'europe-west6', 'asia-southeast1', 'asia-south1', 'asia-northeast1', 'me-west1', 'me-central2', 'australia-southeast1')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoChronicleV2 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoChronicleV2 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "region": obj.get("region") if obj.get("region") is not None else "us", + "chronicleCustomerId": obj.get("chronicleCustomerId"), + "namespace": obj.get("namespace"), + } + ) + return _obj diff --git a/sysdig_client/models/base_connection_info_elasticsearch.py b/sysdig_client/models/base_connection_info_elasticsearch.py new file mode 100644 index 00000000..1906b482 --- /dev/null +++ b/sysdig_client/models/base_connection_info_elasticsearch.py @@ -0,0 +1,119 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoElasticsearch(BaseModel): + """ + BaseConnectionInfoElasticsearch + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Elasticsearch instance endpoint URL") + index: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Name of the index to store the data in") + is_insecure: Optional[StrictBool] = Field(default=False, description="Don't verify TLS certificate", alias="isInsecure") + auth: Optional[StrictStr] = Field(default=None, description="Authentication method") + format: Optional[StrictStr] = Field( + default=None, + description='If specified, transforms `content.fields` and `labels` * `KV_PAIRS` - from objects (i.e. `{"foo": "bar", ...}`) to arrays of objects with "key" and "value" properties {i.e. `[{"key" : "foo", "value": "bar"}, ...]`) ', + ) + __properties: ClassVar[List[str]] = ["endpoint", "index", "isInsecure", "auth", "format"] + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["BASIC_AUTH", "BEARER_TOKEN"]): + raise ValueError("must be one of enum values ('BASIC_AUTH', 'BEARER_TOKEN')") + return value + + @field_validator("format") + def format_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["KV_PAIRS"]): + raise ValueError("must be one of enum values ('KV_PAIRS')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoElasticsearch from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoElasticsearch from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "index": obj.get("index"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "auth": obj.get("auth"), + "format": obj.get("format"), + } + ) + return _obj diff --git a/sysdig_client/models/base_connection_info_google_pub_sub.py b/sysdig_client/models/base_connection_info_google_pub_sub.py new file mode 100644 index 00000000..da6ff003 --- /dev/null +++ b/sysdig_client/models/base_connection_info_google_pub_sub.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoGooglePubSub(BaseModel): + """ + BaseConnectionInfoGooglePubSub + """ # noqa: E501 + + project: Annotated[str, Field(strict=True, max_length=16)] = Field(description="GCP project ID hosting the target pub/sub") + topic: Annotated[str, Field(strict=True, max_length=16)] = Field(description="pub/sub topic onto which publish the data") + ordering_key: Optional[Annotated[str, Field(strict=True, max_length=16)]] = Field( + default=None, description="The key to use to order the messages. Required to enable ordered delivery", alias="orderingKey" + ) + attributes: Optional[Annotated[List[KeyValueObject], Field(max_length=128)]] = Field( + default=None, + description='Extra headers to add to the request. Each header mapping requires 2 keys: "key" for the header key and "value" for its value', + ) + __properties: ClassVar[List[str]] = ["project", "topic", "orderingKey", "attributes"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoGooglePubSub from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) + _items = [] + if self.attributes: + for _item_attributes in self.attributes: + if _item_attributes: + _items.append(_item_attributes.to_dict()) + _dict["attributes"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoGooglePubSub from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "project": obj.get("project"), + "topic": obj.get("topic"), + "orderingKey": obj.get("orderingKey"), + "attributes": [KeyValueObject.from_dict(_item) for _item in obj["attributes"]] + if obj.get("attributes") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/base_connection_info_google_scc.py b/sysdig_client/models/base_connection_info_google_scc.py new file mode 100644 index 00000000..0c8ea0e1 --- /dev/null +++ b/sysdig_client/models/base_connection_info_google_scc.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoGoogleScc(BaseModel): + """ + BaseConnectionInfoGoogleScc + """ # noqa: E501 + + organization: Annotated[str, Field(strict=True, max_length=16)] = Field(description="ID of your GCP organization") + security_marks: Optional[Annotated[List[KeyValueObject], Field(max_length=256)]] = Field( + default=None, + description="additional annotations to add to assets or findings as they get forwarded to Security Command Center", + alias="securityMarks", + ) + __properties: ClassVar[List[str]] = ["organization", "securityMarks"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoGoogleScc from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in security_marks (list) + _items = [] + if self.security_marks: + for _item_security_marks in self.security_marks: + if _item_security_marks: + _items.append(_item_security_marks.to_dict()) + _dict["securityMarks"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoGoogleScc from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "organization": obj.get("organization"), + "securityMarks": [KeyValueObject.from_dict(_item) for _item in obj["securityMarks"]] + if obj.get("securityMarks") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/base_connection_info_kafka.py b/sysdig_client/models/base_connection_info_kafka.py new file mode 100644 index 00000000..578753c9 --- /dev/null +++ b/sysdig_client/models/base_connection_info_kafka.py @@ -0,0 +1,147 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.kafka_plaintext import KafkaPlaintext +from sysdig_client.models.kafka_tls_encrypted import KafkaTlsEncrypted +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +BASECONNECTIONINFOKAFKA_ONE_OF_SCHEMAS = ["KafkaPlaintext", "KafkaTlsEncrypted"] + + +class BaseConnectionInfoKafka(BaseModel): + """ + BaseConnectionInfoKafka + """ + + # data type: KafkaPlaintext + oneof_schema_1_validator: Optional[KafkaPlaintext] = None + # data type: KafkaTlsEncrypted + oneof_schema_2_validator: Optional[KafkaTlsEncrypted] = None + actual_instance: Optional[Union[KafkaPlaintext, KafkaTlsEncrypted]] = None + one_of_schemas: Set[str] = {"KafkaPlaintext", "KafkaTlsEncrypted"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = BaseConnectionInfoKafka.model_construct() + error_messages = [] + match = 0 + # validate data type: KafkaPlaintext + if not isinstance(v, KafkaPlaintext): + error_messages.append(f"Error! Input type `{type(v)}` is not `KafkaPlaintext`") + else: + match += 1 + # validate data type: KafkaTlsEncrypted + if not isinstance(v, KafkaTlsEncrypted): + error_messages.append(f"Error! Input type `{type(v)}` is not `KafkaTlsEncrypted`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in BaseConnectionInfoKafka with oneOf schemas: KafkaPlaintext, KafkaTlsEncrypted. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in BaseConnectionInfoKafka with oneOf schemas: KafkaPlaintext, KafkaTlsEncrypted. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into KafkaPlaintext + try: + instance.actual_instance = KafkaPlaintext.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into KafkaTlsEncrypted + try: + instance.actual_instance = KafkaTlsEncrypted.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into BaseConnectionInfoKafka with oneOf schemas: KafkaPlaintext, KafkaTlsEncrypted. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into BaseConnectionInfoKafka with oneOf schemas: KafkaPlaintext, KafkaTlsEncrypted. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], KafkaPlaintext, KafkaTlsEncrypted]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/base_connection_info_mcm.py b/sysdig_client/models/base_connection_info_mcm.py new file mode 100644 index 00000000..3ad70fc1 --- /dev/null +++ b/sysdig_client/models/base_connection_info_mcm.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoMcm(BaseModel): + """ + BaseConnectionInfoMcm + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="The URL, including protocol and port (if non standard), to your IBM Cloud Pak for Multicloud Management API endpoint" + ) + account_id: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default="id-mycluster-account", description="IBM Account ID", alias="accountId" + ) + provider_id: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default="sysdig-secure", description="The provider the findings will be associated to", alias="providerId" + ) + note_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="The note to use. If unspecified, a note with `policy-event` ID will be created and used", + alias="noteName", + ) + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + __properties: ClassVar[List[str]] = ["endpoint", "accountId", "providerId", "noteName", "isInsecure"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoMcm from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoMcm from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "accountId": obj.get("accountId") if obj.get("accountId") is not None else "id-mycluster-account", + "providerId": obj.get("providerId") if obj.get("providerId") is not None else "sysdig-secure", + "noteName": obj.get("noteName"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + } + ) + return _obj diff --git a/sysdig_client/models/base_connection_info_microsoft_sentinel.py b/sysdig_client/models/base_connection_info_microsoft_sentinel.py new file mode 100644 index 00000000..0f5ae6b9 --- /dev/null +++ b/sysdig_client/models/base_connection_info_microsoft_sentinel.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class BaseConnectionInfoMicrosoftSentinel(BaseModel): + """ + BaseConnectionInfoMicrosoftSentinel + """ # noqa: E501 + + workspace_id: Annotated[str, Field(strict=True, max_length=63)] = Field( + description="Log Analytics workspace ID", alias="workspaceId" + ) + __properties: ClassVar[List[str]] = ["workspaceId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoMicrosoftSentinel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoMicrosoftSentinel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"workspaceId": obj.get("workspaceId")}) + return _obj diff --git a/sysdig_client/models/base_connection_info_qradar.py b/sysdig_client/models/base_connection_info_qradar.py new file mode 100644 index 00000000..8d9bd811 --- /dev/null +++ b/sysdig_client/models/base_connection_info_qradar.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoQradar(BaseModel): + """ + BaseConnectionInfoQradar + """ # noqa: E501 + + address: Annotated[str, Field(strict=True, max_length=256)] = Field(description="DNS name or IP of the QRadar instance") + port: Annotated[int, Field(le=65535, strict=True, ge=1)] = Field(description="QRadar Management Port") + is_insecure: Optional[StrictBool] = Field(default=None, description="Don't verify TLS certificate", alias="isInsecure") + is_tls: Optional[StrictBool] = Field(default=False, description="Use TLS encryption", alias="isTls") + __properties: ClassVar[List[str]] = ["address", "port", "isInsecure", "isTls"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoQradar from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoQradar from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "address": obj.get("address"), + "port": obj.get("port"), + "isInsecure": obj.get("isInsecure"), + "isTls": obj.get("isTls") if obj.get("isTls") is not None else False, + } + ) + return _obj diff --git a/sysdig_client/models/base_connection_info_splunk.py b/sysdig_client/models/base_connection_info_splunk.py new file mode 100644 index 00000000..a68b7f76 --- /dev/null +++ b/sysdig_client/models/base_connection_info_splunk.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoSplunk(BaseModel): + """ + BaseConnectionInfoSplunk + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=256)] = Field(description="URL of the Splunk instance") + source_type: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="Source type to override [Sysdig standard data type to source type mapping](https://docs.sysdig.com/en/forward-splunk#reference-data-categories-mapped-to-source-types)", + alias="sourceType", + ) + index: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="index to send data to. If unspecified, it will be used the index specified on the HTTP Event Collector configuration on Splunk", + ) + is_insecure: Optional[StrictBool] = Field(default=None, description="Skip TLS certificate verification", alias="isInsecure") + certificate_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, + description="ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field", + alias="certificateId", + ) + __properties: ClassVar[List[str]] = ["endpoint", "sourceType", "index", "isInsecure", "certificateId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoSplunk from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoSplunk from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "sourceType": obj.get("sourceType"), + "index": obj.get("index"), + "isInsecure": obj.get("isInsecure"), + "certificateId": obj.get("certificateId"), + } + ) + return _obj diff --git a/sysdig_client/models/base_connection_info_syslog.py b/sysdig_client/models/base_connection_info_syslog.py new file mode 100644 index 00000000..891175c0 --- /dev/null +++ b/sysdig_client/models/base_connection_info_syslog.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoSyslog(BaseModel): + """ + BaseConnectionInfoSyslog + """ # noqa: E501 + + address: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Address of the Syslog server") + port: Annotated[int, Field(le=65535, strict=True, ge=1)] = Field(description="port of the syslog server") + message_format: StrictStr = Field(description="The syslog message format. RFC_5425 is TLS only", alias="messageFormat") + type: Optional[StrictStr] = Field(default="tcp", description="protocol, tcp or udp (case insensitive)") + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + formatter: Optional[StrictStr] = Field(default="JSON", description="The message content format") + certificate_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, + description="ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field", + alias="certificateId", + ) + __properties: ClassVar[List[str]] = ["address", "port", "messageFormat", "type", "isInsecure", "formatter", "certificateId"] + + @field_validator("message_format") + def message_format_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["RFC_3164", "RFC_5424", "RFC_5425"]): + raise ValueError("must be one of enum values ('RFC_3164', 'RFC_5424', 'RFC_5425')") + return value + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["tcp", "udp", "tls"]): + raise ValueError("must be one of enum values ('tcp', 'udp', 'tls')") + return value + + @field_validator("formatter") + def formatter_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["CEF", "LEEF", "JSON"]): + raise ValueError("must be one of enum values ('CEF', 'LEEF', 'JSON')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoSyslog from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoSyslog from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "address": obj.get("address"), + "port": obj.get("port"), + "messageFormat": obj.get("messageFormat"), + "type": obj.get("type") if obj.get("type") is not None else "tcp", + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "formatter": obj.get("formatter") if obj.get("formatter") is not None else "JSON", + "certificateId": obj.get("certificateId"), + } + ) + return _obj diff --git a/sysdig_client/models/base_connection_info_webhook.py b/sysdig_client/models/base_connection_info_webhook.py new file mode 100644 index 00000000..737c049c --- /dev/null +++ b/sysdig_client/models/base_connection_info_webhook.py @@ -0,0 +1,159 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class BaseConnectionInfoWebhook(BaseModel): + """ + BaseConnectionInfoWebhook + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=128)] = Field( + description="Webhook endpoint following the schema protocol" + ) + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + headers: Optional[Annotated[List[KeyValueObject], Field(max_length=256)]] = Field( + default=None, + description="Extra headers to add to the request. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value", + ) + output: Optional[StrictStr] = Field(default="json", description="Payload format") + timestamp_format: Optional[StrictStr] = Field( + default="nanoseconds", description='The resolution of the "timestamp" field in the payload', alias="timestampFormat" + ) + auth: Optional[StrictStr] = Field(default=None, description="Authentication method") + certificate_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, + description="ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field", + alias="certificateId", + ) + __properties: ClassVar[List[str]] = [ + "endpoint", + "isInsecure", + "headers", + "output", + "timestampFormat", + "auth", + "certificateId", + ] + + @field_validator("output") + def output_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["json", "ndjson"]): + raise ValueError("must be one of enum values ('json', 'ndjson')") + return value + + @field_validator("timestamp_format") + def timestamp_format_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["seconds", "milliseconds", "microseconds", "nanoseconds"]): + raise ValueError("must be one of enum values ('seconds', 'milliseconds', 'microseconds', 'nanoseconds')") + return value + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["BASIC_AUTH", "BEARER_TOKEN", "SIGNATURE", "CERTIFICATE"]): + raise ValueError("must be one of enum values ('BASIC_AUTH', 'BEARER_TOKEN', 'SIGNATURE', 'CERTIFICATE')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseConnectionInfoWebhook from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in headers (list) + _items = [] + if self.headers: + for _item_headers in self.headers: + if _item_headers: + _items.append(_item_headers.to_dict()) + _dict["headers"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseConnectionInfoWebhook from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "headers": [KeyValueObject.from_dict(_item) for _item in obj["headers"]] + if obj.get("headers") is not None + else None, + "output": obj.get("output") if obj.get("output") is not None else "json", + "timestampFormat": obj.get("timestampFormat") if obj.get("timestampFormat") is not None else "nanoseconds", + "auth": obj.get("auth"), + "certificateId": obj.get("certificateId"), + } + ) + return _obj diff --git a/sysdig_client/models/base_content.py b/sysdig_client/models/base_content.py new file mode 100644 index 00000000..be84f01b --- /dev/null +++ b/sysdig_client/models/base_content.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.event_content_type import EventContentType +from typing import Optional, Set +from typing_extensions import Self + + +class BaseContent(BaseModel): + """ + Base content for all events + """ # noqa: E501 + + type: EventContentType + __properties: ClassVar[List[str]] = ["type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseContent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseContent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/base_image.py b/sysdig_client/models/base_image.py new file mode 100644 index 00000000..f80e0dd7 --- /dev/null +++ b/sysdig_client/models/base_image.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BaseImage(BaseModel): + """ + BaseImage + """ # noqa: E501 + + pull_strings: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=2048)]], Field(min_length=0, max_length=2048)] + ] = Field(default=None, alias="pullStrings") + __properties: ClassVar[List[str]] = ["pullStrings"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseImage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseImage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"pullStrings": obj.get("pullStrings")}) + return _obj diff --git a/sysdig_client/models/base_integration_payload.py b/sysdig_client/models/base_integration_payload.py new file mode 100644 index 00000000..e69bc9a2 --- /dev/null +++ b/sysdig_client/models/base_integration_payload.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class BaseIntegrationPayload(BaseModel): + """ + BaseIntegrationPayload + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseIntegrationPayload from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseIntegrationPayload from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + } + ) + return _obj diff --git a/sysdig_client/models/base_monitor_event.py b/sysdig_client/models/base_monitor_event.py new file mode 100644 index 00000000..31841de7 --- /dev/null +++ b/sysdig_client/models/base_monitor_event.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.monitor_scope_label import MonitorScopeLabel +from typing import Set +from typing_extensions import Self + + +class BaseMonitorEvent(BaseModel): + """ + Base Monitor Event + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=32)] = Field(description="The event id.") + created_on: datetime = Field(description="Timestamp when the event was created in the system", alias="createdOn") + occurred_at: datetime = Field( + description="Event logical timestamp (when the event occurred). For alert events, this is the time when the alert was triggered.", + alias="occurredAt", + ) + name: Annotated[str, Field(strict=True, max_length=64)] = Field(description="The event name") + description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="Description of the event." + ) + severity: Annotated[int, Field(le=7, strict=True, ge=0)] = Field( + description="The event severity. A lower value means more severe, with 0 being the highest severity and 7 being the lowest." + ) + scope_labels: Optional[Annotated[List[MonitorScopeLabel], Field(min_length=1, max_length=1024)]] = Field( + default=None, + description="List of scope labels, including those from initial scope and those coming from the enrichment process.", + alias="scopeLabels", + ) + scope: Optional[Annotated[str, Field(strict=True, max_length=50000)]] = Field(default=None, description="Initial event scope") + __properties: ClassVar[List[str]] = [ + "id", + "createdOn", + "occurredAt", + "name", + "description", + "severity", + "scopeLabels", + "scope", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseMonitorEvent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in scope_labels (list) + _items = [] + if self.scope_labels: + for _item_scope_labels in self.scope_labels: + if _item_scope_labels: + _items.append(_item_scope_labels.to_dict()) + _dict["scopeLabels"] = _items + # set to None if scope_labels (nullable) is None + # and model_fields_set contains the field + if self.scope_labels is None and "scope_labels" in self.model_fields_set: + _dict["scopeLabels"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseMonitorEvent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "createdOn": obj.get("createdOn"), + "occurredAt": obj.get("occurredAt"), + "name": obj.get("name"), + "description": obj.get("description"), + "severity": obj.get("severity"), + "scopeLabels": [MonitorScopeLabel.from_dict(_item) for _item in obj["scopeLabels"]] + if obj.get("scopeLabels") is not None + else None, + "scope": obj.get("scope"), + } + ) + return _obj diff --git a/sysdig_client/models/base_risk_accepted_payload.py b/sysdig_client/models/base_risk_accepted_payload.py new file mode 100644 index 00000000..a6ffbb9a --- /dev/null +++ b/sysdig_client/models/base_risk_accepted_payload.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BaseRiskAcceptedPayload(BaseModel): + """ + BaseRiskAcceptedPayload + """ # noqa: E501 + + entity_value: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=512)]] = Field( + default=None, description="A value to match with the entityType", alias="entityValue" + ) + expiration_date: Optional[date] = Field( + default=None, description="Date when the accepted risk will expire (in YYYY-MM-DD format)", alias="expirationDate" + ) + reason: Optional[StrictStr] = Field(default=None, description="Reason for acceptance") + description: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Description of why the accepted risk was created" + ) + stages: Optional[Annotated[List[StrictStr], Field(min_length=0, max_length=3)]] = Field( + default=None, + description="List of stages where the risk acceptance is applied, empty list enables risk acceptance for all the stages", + ) + __properties: ClassVar[List[str]] = ["entityValue", "expirationDate", "reason", "description", "stages"] + + @field_validator("reason") + def reason_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["RiskTransferred", "RiskAvoided", "RiskMitigated", "RiskOwned", "RiskNotRelevant", "Custom"]): + raise ValueError( + "must be one of enum values ('RiskTransferred', 'RiskAvoided', 'RiskMitigated', 'RiskOwned', 'RiskNotRelevant', 'Custom')" + ) + return value + + @field_validator("stages") + def stages_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + for i in value: + if i not in set(["runtime", "pipeline", "registry"]): + raise ValueError("each list item must be one of ('runtime', 'pipeline', 'registry')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseRiskAcceptedPayload from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if stages (nullable) is None + # and model_fields_set contains the field + if self.stages is None and "stages" in self.model_fields_set: + _dict["stages"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseRiskAcceptedPayload from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "entityValue": obj.get("entityValue"), + "expirationDate": obj.get("expirationDate"), + "reason": obj.get("reason"), + "description": obj.get("description"), + "stages": obj.get("stages"), + } + ) + return _obj diff --git a/sysdig_client/models/base_risk_accepted_response_payload.py b/sysdig_client/models/base_risk_accepted_response_payload.py new file mode 100644 index 00000000..ff8c02de --- /dev/null +++ b/sysdig_client/models/base_risk_accepted_response_payload.py @@ -0,0 +1,117 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date, datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BaseRiskAcceptedResponsePayload(BaseModel): + """ + BaseRiskAcceptedResponsePayload + """ # noqa: E501 + + id: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field(default=None, description="The Accepted Risk ID") + expiration_date: Optional[date] = Field( + default=None, description="Date when the accepted risk will expire (in YYYY-MM-DD format)", alias="expirationDate" + ) + created_at: Optional[datetime] = Field(default=None, description="Date when the Accepted Risk was created", alias="createdAt") + updated_at: Optional[datetime] = Field(default=None, description="Date when the Accepted Risk was updated", alias="updatedAt") + status: Optional[StrictStr] = Field(default=None, description="Specifies whether the Accepted Risk is enabled or expired") + created_by: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field( + default=None, description="User who created the risk acceptance", alias="createdBy" + ) + updated_by: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field( + default=None, description="User who last updated the risk acceptance", alias="updatedBy" + ) + __properties: ClassVar[List[str]] = ["id", "expirationDate", "createdAt", "updatedAt", "status", "createdBy", "updatedBy"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["active", "expired"]): + raise ValueError("must be one of enum values ('active', 'expired')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BaseRiskAcceptedResponsePayload from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BaseRiskAcceptedResponsePayload from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "expirationDate": obj.get("expirationDate"), + "createdAt": obj.get("createdAt"), + "updatedAt": obj.get("updatedAt"), + "status": obj.get("status"), + "createdBy": obj.get("createdBy"), + "updatedBy": obj.get("updatedBy"), + } + ) + return _obj diff --git a/sysdig_client/models/bom_metadata.py b/sysdig_client/models/bom_metadata.py new file mode 100644 index 00000000..3546ec86 --- /dev/null +++ b/sysdig_client/models/bom_metadata.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.sbom_component import SbomComponent +from typing import Set +from typing_extensions import Self + + +class BOMMetadata(BaseModel): + """ + Provides additional information about a BOM. + """ # noqa: E501 + + timestamp: Optional[datetime] = Field(default=None, description="The date and time (timestamp) when the BOM was created.") + lifecycle: Optional[StrictStr] = Field(default=None, description="The product lifecycle(s) that this BOM represents.") + tools: Optional[Dict[str, Any]] = Field(default=None, description="The tool(s) used in the creation of the BOM.") + component: Optional[SbomComponent] = None + __properties: ClassVar[List[str]] = ["timestamp", "lifecycle", "tools", "component"] + + @field_validator("lifecycle") + def lifecycle_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["post-build", "operations"]): + raise ValueError("must be one of enum values ('post-build', 'operations')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BOMMetadata from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of component + if self.component: + _dict["component"] = self.component.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BOMMetadata from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "timestamp": obj.get("timestamp"), + "lifecycle": obj.get("lifecycle"), + "tools": obj.get("tools"), + "component": SbomComponent.from_dict(obj["component"]) if obj.get("component") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/bucket_configuration_v1.py b/sysdig_client/models/bucket_configuration_v1.py new file mode 100644 index 00000000..f9ba3adf --- /dev/null +++ b/sysdig_client/models/bucket_configuration_v1.py @@ -0,0 +1,143 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BucketConfigurationV1(BaseModel): + """ + BucketConfigurationV1 + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The name of the bucket.") + folder: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, + description='The folder in the bucket where the captures are stored. Name of the folder without any prefix slashes ("test-folder" and not "/test-folder").', + ) + description: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The description of the bucket." + ) + provider_key_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, + description="Id of the configured cloud provider account. Could be fetched with /api/providers endpoint.", + alias="providerKeyId", + ) + endpoint: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The endpoint of the bucket. ***Required for S3 compatible storage.***" + ) + region: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The region of the bucket." + ) + path_style_access: Optional[StrictBool] = Field( + default=False, description="Specifies if the bucket uses path-style access.", alias="pathStyleAccess" + ) + __properties: ClassVar[List[str]] = [ + "name", + "folder", + "description", + "providerKeyId", + "endpoint", + "region", + "pathStyleAccess", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BucketConfigurationV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if description (nullable) is None + # and model_fields_set contains the field + if self.description is None and "description" in self.model_fields_set: + _dict["description"] = None + + # set to None if provider_key_id (nullable) is None + # and model_fields_set contains the field + if self.provider_key_id is None and "provider_key_id" in self.model_fields_set: + _dict["providerKeyId"] = None + + # set to None if endpoint (nullable) is None + # and model_fields_set contains the field + if self.endpoint is None and "endpoint" in self.model_fields_set: + _dict["endpoint"] = None + + # set to None if region (nullable) is None + # and model_fields_set contains the field + if self.region is None and "region" in self.model_fields_set: + _dict["region"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BucketConfigurationV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "folder": obj.get("folder"), + "description": obj.get("description"), + "providerKeyId": obj.get("providerKeyId"), + "endpoint": obj.get("endpoint"), + "region": obj.get("region"), + "pathStyleAccess": obj.get("pathStyleAccess") if obj.get("pathStyleAccess") is not None else False, + } + ) + return _obj diff --git a/sysdig_client/models/bundle.py b/sysdig_client/models/bundle.py new file mode 100644 index 00000000..57b0032d --- /dev/null +++ b/sysdig_client/models/bundle.py @@ -0,0 +1,114 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.rule import Rule +from typing import Set +from typing_extensions import Self + + +class Bundle(BaseModel): + """ + Bundle + """ # noqa: E501 + + name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Name of the bundle") + identifier: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="Identifier of the bundle" + ) + type: Optional[StrictStr] = None + rules: Optional[Annotated[List[Rule], Field(min_length=0, max_length=2147483647)]] = None + __properties: ClassVar[List[str]] = ["name", "identifier", "type", "rules"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["predefined", "custom"]): + raise ValueError("must be one of enum values ('predefined', 'custom')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Bundle from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in rules (list) + _items = [] + if self.rules: + for _item_rules in self.rules: + if _item_rules: + _items.append(_item_rules.to_dict()) + _dict["rules"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Bundle from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "identifier": obj.get("identifier"), + "type": obj.get("type"), + "rules": [Rule.from_dict(_item) for _item in obj["rules"]] if obj.get("rules") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/bundle_ref.py b/sysdig_client/models/bundle_ref.py new file mode 100644 index 00000000..129c68f5 --- /dev/null +++ b/sysdig_client/models/bundle_ref.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BundleRef(BaseModel): + """ + BundleRef + """ # noqa: E501 + + id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field(description="The Bundle ID.") + name: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=1024)]] = Field( + default=None, description="The human readable Bundle name." + ) + __properties: ClassVar[List[str]] = ["id", "name"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BundleRef from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BundleRef from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"id": obj.get("id"), "name": obj.get("name")}) + return _obj diff --git a/sysdig_client/models/bundle_rule.py b/sysdig_client/models/bundle_rule.py new file mode 100644 index 00000000..8fa80265 --- /dev/null +++ b/sysdig_client/models/bundle_rule.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.bundle_rule_predicates_inner import BundleRulePredicatesInner +from typing import Optional, Set +from typing_extensions import Self + + +class BundleRule(BaseModel): + """ + A Rule definition + """ # noqa: E501 + + rule_type: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field( + description="The type of the rule. It may be one of the following: - vulnSeverityAndThreats - vulnDenyList - imageConfigDefaultUser - imageConfigLabel - imageConfigEnvVariable - imageConfigInstructionNotRecommended - imageConfigInstructionIsPkgManager - imageConfigCreationDate - imageConfigSensitiveInformationAndSecrets - pkgDenyList ", + alias="ruleType", + ) + predicates: Annotated[List[BundleRulePredicatesInner], Field(min_length=1, max_length=1000)] = Field( + description="The Predicates defining this Rule" + ) + rule_id: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field(alias="ruleId") + __properties: ClassVar[List[str]] = ["ruleType", "predicates", "ruleId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BundleRule from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in predicates (list) + _items = [] + if self.predicates: + for _item_predicates in self.predicates: + if _item_predicates: + _items.append(_item_predicates.to_dict()) + _dict["predicates"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BundleRule from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "ruleType": obj.get("ruleType"), + "predicates": [BundleRulePredicatesInner.from_dict(_item) for _item in obj["predicates"]] + if obj.get("predicates") is not None + else None, + "ruleId": obj.get("ruleId"), + } + ) + return _obj diff --git a/sysdig_client/models/bundle_rule_predicates_inner.py b/sysdig_client/models/bundle_rule_predicates_inner.py new file mode 100644 index 00000000..449a26b0 --- /dev/null +++ b/sysdig_client/models/bundle_rule_predicates_inner.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class BundleRulePredicatesInner(BaseModel): + """ + BundleRulePredicatesInner + """ # noqa: E501 + + type: Annotated[str, Field(min_length=1, strict=True, max_length=1000)] + extra: Optional[Dict[str, Any]] = None + __properties: ClassVar[List[str]] = ["type", "extra"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BundleRulePredicatesInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BundleRulePredicatesInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "extra": obj.get("extra")}) + return _obj diff --git a/sysdig_client/models/capture_action.py b/sysdig_client/models/capture_action.py new file mode 100644 index 00000000..072d77c2 --- /dev/null +++ b/sysdig_client/models/capture_action.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_type import ActionType +from typing import Set +from typing_extensions import Self + + +class CaptureAction(BaseModel): + """ + Outcome of the Take Capture action configured in the policy. + """ # noqa: E501 + + type: ActionType + is_successful: Optional[StrictBool] = Field( + default=None, description="Whether or not the Capture was taken successfully.", alias="isSuccessful" + ) + err_msg: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="When `isSuccessful` is `false`, details on why the action failed. ", alias="errMsg" + ) + token: Optional[Annotated[str, Field(strict=True, max_length=36)]] = Field( + default=None, description="Token to retrieve the related capture." + ) + after_event_ns: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="Amount of nanoseconds after the event the Capture spans. ", alias="afterEventNs" + ) + before_event_ns: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="Amount of nanoseconds before the event the Capture spans. ", alias="beforeEventNs" + ) + __properties: ClassVar[List[str]] = ["type", "isSuccessful", "errMsg", "token", "afterEventNs", "beforeEventNs"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CaptureAction from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CaptureAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "isSuccessful": obj.get("isSuccessful"), + "errMsg": obj.get("errMsg"), + "token": obj.get("token"), + "afterEventNs": obj.get("afterEventNs"), + "beforeEventNs": obj.get("beforeEventNs"), + } + ) + return _obj diff --git a/sysdig_client/models/capture_storage_configuration_response_v1.py b/sysdig_client/models/capture_storage_configuration_response_v1.py new file mode 100644 index 00000000..744b025c --- /dev/null +++ b/sysdig_client/models/capture_storage_configuration_response_v1.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.bucket_configuration_v1 import BucketConfigurationV1 +from typing import Set +from typing_extensions import Self + + +class CaptureStorageConfigurationResponseV1(BaseModel): + """ + CaptureStorageConfigurationResponseV1 + """ # noqa: E501 + + is_enabled: Optional[StrictBool] = Field( + default=None, description="Specifies if capture storage is enabled.", alias="isEnabled" + ) + is_encryption_with_provided_key_enabled: Optional[StrictBool] = Field( + default=None, + description="Specifies if server-side encryption with provided encryption key (SSE-C) is enabled.", + alias="isEncryptionWithProvidedKeyEnabled", + ) + buckets: Optional[Annotated[List[BucketConfigurationV1], Field(max_length=1)]] = Field( + default=None, description="The list of buckets where the captures are stored. Currently only one bucket is supported. " + ) + __properties: ClassVar[List[str]] = ["isEnabled", "isEncryptionWithProvidedKeyEnabled", "buckets"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CaptureStorageConfigurationResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in buckets (list) + _items = [] + if self.buckets: + for _item_buckets in self.buckets: + if _item_buckets: + _items.append(_item_buckets.to_dict()) + _dict["buckets"] = _items + # set to None if buckets (nullable) is None + # and model_fields_set contains the field + if self.buckets is None and "buckets" in self.model_fields_set: + _dict["buckets"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CaptureStorageConfigurationResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "isEnabled": obj.get("isEnabled"), + "isEncryptionWithProvidedKeyEnabled": obj.get("isEncryptionWithProvidedKeyEnabled"), + "buckets": [BucketConfigurationV1.from_dict(_item) for _item in obj["buckets"]] + if obj.get("buckets") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/category.py b/sysdig_client/models/category.py new file mode 100644 index 00000000..66e0af43 --- /dev/null +++ b/sysdig_client/models/category.py @@ -0,0 +1,41 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class Category(str, Enum): + """ + The event category: - `runtime` - Agent-based threat detection events - `remote` - Kubernetes admission requests and CloudConnector events - `admissionController` - Kubernetes admission requests-posture checks - `cloudtrail` - Agentless CloudTrail CDR events - `okta` - Agentless Okta CDR events - `github` - Agentless Github CDR events - `falcocloud` - Agentless CDR events (excluded CloudTrail, Okta, Github) - `miner` - Workload ML Crypto events + """ + + """ + allowed enum values + """ + RUNTIME = "runtime" + REMOTE = "remote" + ADMISSIONCONTROLLER = "admissionController" + CLOUDTRAIL = "cloudtrail" + OKTA = "okta" + GITHUB = "github" + FALCOCLOUD = "falcocloud" + MINER = "miner" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of Category from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/certificate.py b/sysdig_client/models/certificate.py new file mode 100644 index 00000000..bc537122 --- /dev/null +++ b/sysdig_client/models/certificate.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.certificate_validity import CertificateValidity +from typing import Optional, Set +from typing_extensions import Self + + +class Certificate(BaseModel): + """ + An X-509 certificate + """ # noqa: E501 + + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field(description="The certificate ID.") + certificate_name: Annotated[str, Field(strict=True, max_length=200)] = Field( + description="The certificate Name.", alias="certificateName" + ) + created: datetime = Field(description="The timestamp the certificate was created.") + issuer: Annotated[str, Field(strict=True, max_length=2000)] = Field( + description="The Distinguished Name of the certificate issuer." + ) + validity: CertificateValidity + usage: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="The number of services that currently use that certificate." + ) + fingerprint: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The certificate fingerprint") + __properties: ClassVar[List[str]] = ["id", "certificateName", "created", "issuer", "validity", "usage", "fingerprint"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Certificate from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of validity + if self.validity: + _dict["validity"] = self.validity.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Certificate from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "certificateName": obj.get("certificateName"), + "created": obj.get("created"), + "issuer": obj.get("issuer"), + "validity": CertificateValidity.from_dict(obj["validity"]) if obj.get("validity") is not None else None, + "usage": obj.get("usage"), + "fingerprint": obj.get("fingerprint"), + } + ) + return _obj diff --git a/sysdig_client/models/certificate_validity.py b/sysdig_client/models/certificate_validity.py new file mode 100644 index 00000000..ea2d20e0 --- /dev/null +++ b/sysdig_client/models/certificate_validity.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class CertificateValidity(BaseModel): + """ + The certificate validity interval. + """ # noqa: E501 + + after: Optional[datetime] = Field(default=None, description="The beginning of the certificate validity period.") + before: Optional[datetime] = Field(default=None, description="The end of the certificate validity period.") + __properties: ClassVar[List[str]] = ["after", "before"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CertificateValidity from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CertificateValidity from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"after": obj.get("after"), "before": obj.get("before")}) + return _obj diff --git a/sysdig_client/models/certificates_response.py b/sysdig_client/models/certificates_response.py new file mode 100644 index 00000000..34adc149 --- /dev/null +++ b/sysdig_client/models/certificates_response.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.certificate import Certificate +from typing import Optional, Set +from typing_extensions import Self + + +class CertificatesResponse(BaseModel): + """ + Customer certificates + """ # noqa: E501 + + data: Annotated[List[Certificate], Field(max_length=1000)] + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CertificatesResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CertificatesResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [Certificate.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/checkbox_field_value_v1.py b/sysdig_client/models/checkbox_field_value_v1.py new file mode 100644 index 00000000..a973363e --- /dev/null +++ b/sysdig_client/models/checkbox_field_value_v1.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class CheckboxFieldValueV1(BaseModel): + """ + CheckboxFieldValueV1 + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Jira checkbox field id.") + value: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Jira checkbox field value.") + __properties: ClassVar[List[str]] = ["id", "value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CheckboxFieldValueV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CheckboxFieldValueV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"id": obj.get("id"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/chronicle_create_connection_info.py b/sysdig_client/models/chronicle_create_connection_info.py new file mode 100644 index 00000000..af23c377 --- /dev/null +++ b/sysdig_client/models/chronicle_create_connection_info.py @@ -0,0 +1,149 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.create_chronicle_integration_conn_info import CreateChronicleIntegrationConnInfo +from sysdig_client.models.create_chronicle_integration_conn_info_v2 import CreateChronicleIntegrationConnInfoV2 +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +CHRONICLECREATECONNECTIONINFO_ONE_OF_SCHEMAS = ["CreateChronicleIntegrationConnInfo", "CreateChronicleIntegrationConnInfoV2"] + + +class ChronicleCreateConnectionInfo(BaseModel): + """ + ChronicleCreateConnectionInfo + """ + + # data type: CreateChronicleIntegrationConnInfoV2 + oneof_schema_1_validator: Optional[CreateChronicleIntegrationConnInfoV2] = None + # data type: CreateChronicleIntegrationConnInfo + oneof_schema_2_validator: Optional[CreateChronicleIntegrationConnInfo] = None + actual_instance: Optional[Union[CreateChronicleIntegrationConnInfo, CreateChronicleIntegrationConnInfoV2]] = None + one_of_schemas: Set[str] = {"CreateChronicleIntegrationConnInfo", "CreateChronicleIntegrationConnInfoV2"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = ChronicleCreateConnectionInfo.model_construct() + error_messages = [] + match = 0 + # validate data type: CreateChronicleIntegrationConnInfoV2 + if not isinstance(v, CreateChronicleIntegrationConnInfoV2): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateChronicleIntegrationConnInfoV2`") + else: + match += 1 + # validate data type: CreateChronicleIntegrationConnInfo + if not isinstance(v, CreateChronicleIntegrationConnInfo): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateChronicleIntegrationConnInfo`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in ChronicleCreateConnectionInfo with oneOf schemas: CreateChronicleIntegrationConnInfo, CreateChronicleIntegrationConnInfoV2. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in ChronicleCreateConnectionInfo with oneOf schemas: CreateChronicleIntegrationConnInfo, CreateChronicleIntegrationConnInfoV2. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into CreateChronicleIntegrationConnInfoV2 + try: + instance.actual_instance = CreateChronicleIntegrationConnInfoV2.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateChronicleIntegrationConnInfo + try: + instance.actual_instance = CreateChronicleIntegrationConnInfo.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into ChronicleCreateConnectionInfo with oneOf schemas: CreateChronicleIntegrationConnInfo, CreateChronicleIntegrationConnInfoV2. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into ChronicleCreateConnectionInfo with oneOf schemas: CreateChronicleIntegrationConnInfo, CreateChronicleIntegrationConnInfoV2. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[Union[Dict[str, Any], CreateChronicleIntegrationConnInfo, CreateChronicleIntegrationConnInfoV2]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/chronicle_update_connection_info.py b/sysdig_client/models/chronicle_update_connection_info.py new file mode 100644 index 00000000..17843090 --- /dev/null +++ b/sysdig_client/models/chronicle_update_connection_info.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Optional +from sysdig_client.models.update_chronicle_integration_conn_info import UpdateChronicleIntegrationConnInfo +from sysdig_client.models.update_chronicle_integration_conn_info_v2 import UpdateChronicleIntegrationConnInfoV2 +from typing import Union, Any, List, Set, TYPE_CHECKING, Dict +from typing_extensions import Literal, Self + +CHRONICLEUPDATECONNECTIONINFO_ANY_OF_SCHEMAS = ["UpdateChronicleIntegrationConnInfo", "UpdateChronicleIntegrationConnInfoV2"] + + +class ChronicleUpdateConnectionInfo(BaseModel): + """ + ChronicleUpdateConnectionInfo + """ + + # data type: UpdateChronicleIntegrationConnInfoV2 + anyof_schema_1_validator: Optional[UpdateChronicleIntegrationConnInfoV2] = None + # data type: UpdateChronicleIntegrationConnInfo + anyof_schema_2_validator: Optional[UpdateChronicleIntegrationConnInfo] = None + if TYPE_CHECKING: + actual_instance: Optional[Union[UpdateChronicleIntegrationConnInfo, UpdateChronicleIntegrationConnInfoV2]] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = {"UpdateChronicleIntegrationConnInfo", "UpdateChronicleIntegrationConnInfoV2"} + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_anyof(cls, v): + instance = ChronicleUpdateConnectionInfo.model_construct() + error_messages = [] + # validate data type: UpdateChronicleIntegrationConnInfoV2 + if not isinstance(v, UpdateChronicleIntegrationConnInfoV2): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateChronicleIntegrationConnInfoV2`") + else: + return v + + # validate data type: UpdateChronicleIntegrationConnInfo + if not isinstance(v, UpdateChronicleIntegrationConnInfo): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateChronicleIntegrationConnInfo`") + else: + return v + + if error_messages: + # no match + raise ValueError( + "No match found when setting the actual_instance in ChronicleUpdateConnectionInfo with anyOf schemas: UpdateChronicleIntegrationConnInfo, UpdateChronicleIntegrationConnInfoV2. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # anyof_schema_1_validator: Optional[UpdateChronicleIntegrationConnInfoV2] = None + try: + instance.actual_instance = UpdateChronicleIntegrationConnInfoV2.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_2_validator: Optional[UpdateChronicleIntegrationConnInfo] = None + try: + instance.actual_instance = UpdateChronicleIntegrationConnInfo.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError( + "No match found when deserializing the JSON string into ChronicleUpdateConnectionInfo with anyOf schemas: UpdateChronicleIntegrationConnInfo, UpdateChronicleIntegrationConnInfoV2. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[Union[Dict[str, Any], UpdateChronicleIntegrationConnInfo, UpdateChronicleIntegrationConnInfoV2]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/cisa_kev_available_since.py b/sysdig_client/models/cisa_kev_available_since.py new file mode 100644 index 00000000..272cafdd --- /dev/null +++ b/sysdig_client/models/cisa_kev_available_since.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.cisa_kev_publish_date_extra import CisaKevPublishDateExtra +from typing import Optional, Set +from typing_extensions import Self + + +class CisaKevAvailableSince(BaseModel): + """ + Number of days since the vulnerability was added to CISA's Known Exploited Vulnerabilities (KEV) catalog. Calculated from initial inclusion date to current date. + """ # noqa: E501 + + type: StrictStr + extra: CisaKevPublishDateExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["cisaKevAvailableSince"]): + raise ValueError("must be one of enum values ('cisaKevAvailableSince')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CisaKevAvailableSince from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CisaKevAvailableSince from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": CisaKevPublishDateExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/cisa_kev_known_ransomware_campaign_use.py b/sysdig_client/models/cisa_kev_known_ransomware_campaign_use.py new file mode 100644 index 00000000..d1949dba --- /dev/null +++ b/sysdig_client/models/cisa_kev_known_ransomware_campaign_use.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class CisaKevKnownRansomwareCampaignUse(BaseModel): + """ + The vulnerability listed in CISA's KEV catalog as actively exploited in ransomware campaigns. + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["cisaKevKnownRansomwareCampaignUse"]): + raise ValueError("must be one of enum values ('cisaKevKnownRansomwareCampaignUse')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CisaKevKnownRansomwareCampaignUse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CisaKevKnownRansomwareCampaignUse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/cisa_kev_publish_date.py b/sysdig_client/models/cisa_kev_publish_date.py new file mode 100644 index 00000000..70e36ab6 --- /dev/null +++ b/sysdig_client/models/cisa_kev_publish_date.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.cisa_kev_publish_date_extra import CisaKevPublishDateExtra +from typing import Optional, Set +from typing_extensions import Self + + +class CisaKevPublishDate(BaseModel): + """ + Number of days remaining until the CISA KEV-listed vulnerability is fixed. + """ # noqa: E501 + + type: StrictStr + extra: CisaKevPublishDateExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["cisaKevDueDateIn"]): + raise ValueError("must be one of enum values ('cisaKevDueDateIn')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CisaKevPublishDate from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CisaKevPublishDate from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": CisaKevPublishDateExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/cisa_kev_publish_date_extra.py b/sysdig_client/models/cisa_kev_publish_date_extra.py new file mode 100644 index 00000000..472606ca --- /dev/null +++ b/sysdig_client/models/cisa_kev_publish_date_extra.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CisaKevPublishDateExtra(BaseModel): + """ + CisaKevPublishDateExtra + """ # noqa: E501 + + days: Optional[Annotated[int, Field(le=3650, strict=True, ge=1)]] = Field(default=None, description="Number of days.") + __properties: ClassVar[List[str]] = ["days"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CisaKevPublishDateExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CisaKevPublishDateExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"days": obj.get("days")}) + return _obj diff --git a/sysdig_client/models/command.py b/sysdig_client/models/command.py new file mode 100644 index 00000000..4f4307f4 --- /dev/null +++ b/sysdig_client/models/command.py @@ -0,0 +1,172 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Command(BaseModel): + """ + Represents a command execution. + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=32)] = Field(description="The audit event id.") + timestamp: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Timestamp the audit event occured, expressed in nanoseconds." + ) + type: StrictStr = Field(description="The entry type") + container_id: Optional[Annotated[str, Field(strict=True, max_length=200)]] = Field( + default=None, + description="The container id. `containerId` is present only if the audit event was collected in a container context. ", + alias="containerId", + ) + cmdline: Annotated[str, Field(strict=True, max_length=4096)] = Field(description="Full command line") + comm: Annotated[str, Field(strict=True, max_length=20)] = Field(description="The name of the command.") + pcomm: Annotated[str, Field(strict=True, max_length=20)] = Field(description="The name of the parent command.") + pid: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field(description="Process ID.") + ppid: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field(description="Parent process ID.") + uid: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field(description="User ID") + username: Optional[Annotated[str, Field(strict=True, max_length=20)]] = Field(default=None, description="Username") + cwd: Annotated[str, Field(strict=True, max_length=50)] = Field(description="Command working directory.") + login_shell_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Process id of the shell.", alias="loginShellId" + ) + login_shell_distance: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Level of nesting from the parent shell.", alias="loginShellDistance" + ) + hostname: Annotated[str, Field(strict=True, max_length=200)] = Field(description="The Kubernetes hostname.") + tty: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field(description="TTY number.") + user_login_uid: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="User login UID.", alias="userLoginUid" + ) + user_login_name: Annotated[str, Field(strict=True, max_length=20)] = Field( + description="User login name.", alias="userLoginName" + ) + proc_exepath: Annotated[str, Field(strict=True, max_length=4096)] = Field( + description="Process executable path.", alias="procExepath" + ) + labels: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=200)]]] = Field( + default=None, description="Key value pairs of labels." + ) + __properties: ClassVar[List[str]] = [ + "id", + "timestamp", + "type", + "containerId", + "cmdline", + "comm", + "pcomm", + "pid", + "ppid", + "uid", + "username", + "cwd", + "loginShellId", + "loginShellDistance", + "hostname", + "tty", + "userLoginUid", + "userLoginName", + "procExepath", + "labels", + ] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["command"]): + raise ValueError("must be one of enum values ('command')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Command from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Command from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "timestamp": obj.get("timestamp"), + "type": obj.get("type"), + "containerId": obj.get("containerId"), + "cmdline": obj.get("cmdline"), + "comm": obj.get("comm"), + "pcomm": obj.get("pcomm"), + "pid": obj.get("pid"), + "ppid": obj.get("ppid"), + "uid": obj.get("uid"), + "username": obj.get("username"), + "cwd": obj.get("cwd"), + "loginShellId": obj.get("loginShellId"), + "loginShellDistance": obj.get("loginShellDistance"), + "hostname": obj.get("hostname"), + "tty": obj.get("tty"), + "userLoginUid": obj.get("userLoginUid"), + "userLoginName": obj.get("userLoginName"), + "procExepath": obj.get("procExepath"), + "labels": obj.get("labels"), + } + ) + return _obj diff --git a/sysdig_client/models/compositions_inner.py b/sysdig_client/models/compositions_inner.py new file mode 100644 index 00000000..21911a74 --- /dev/null +++ b/sysdig_client/models/compositions_inner.py @@ -0,0 +1,105 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CompositionsInner(BaseModel): + """ + CompositionsInner + """ # noqa: E501 + + aggregate: StrictStr = Field( + description="Specifies an aggregate type that describe how complete a relationship is. * __complete__ = The relationship is complete. No further relationships including constituent components, services, or dependencies are known to exist. * __incomplete__ = The relationship is incomplete. Additional relationships exist and may include constituent components, services, or dependencies. * __incomplete_first_party_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented. * __incomplete_first_party_proprietary_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are proprietary. * __incomplete_first_party_opensource_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are opensource. * __incomplete_third_party_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented. * __incomplete_third_party_proprietary_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are proprietary. * __incomplete_third_party_opensource_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are opensource. * __unknown__ = The relationship may be complete or incomplete. This usually signifies a 'best-effort' to obtain constituent components, services, or dependencies but the completeness is inconclusive. * __not_specified__ = The relationship completeness is not specified. " + ) + assemblies: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=1000000)]] = Field( + default=None, + description="The bom-ref identifiers of the components or services being described. Assemblies refer to nested relationships whereby a constituent part may include other constituent parts. References do not cascade to child parts. References are explicit for the specified constituent part only.", + ) + dependencies: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=1000000)]] = ( + Field( + default=None, + description="The bom-ref identifiers of the components or services being described. Assemblies refer to nested relationships whereby a constituent part may include other constituent parts. References do not cascade to child parts. References are explicit for the specified constituent part only.", + ) + ) + __properties: ClassVar[List[str]] = ["aggregate", "assemblies", "dependencies"] + + @field_validator("aggregate") + def aggregate_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["complete", "incomplete", "unknown", "not_specified"]): + raise ValueError("must be one of enum values ('complete', 'incomplete', 'unknown', 'not_specified')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CompositionsInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CompositionsInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"aggregate": obj.get("aggregate"), "assemblies": obj.get("assemblies"), "dependencies": obj.get("dependencies")} + ) + return _obj diff --git a/sysdig_client/models/connection.py b/sysdig_client/models/connection.py new file mode 100644 index 00000000..f3be033e --- /dev/null +++ b/sysdig_client/models/connection.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Connection(BaseModel): + """ + Represents a connection. + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=32)] = Field(description="The audit event id.") + timestamp: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Timestamp the audit event occured, expressed in nanoseconds." + ) + type: StrictStr = Field(description="The entry type") + cmdline: Annotated[str, Field(strict=True, max_length=4096)] = Field(description="Full command line") + comm: Annotated[str, Field(strict=True, max_length=20)] = Field(description="The name of the command.") + dns_domains: Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(min_length=0, max_length=1000)] = ( + Field(description="DNS information for the connection event.", alias="dnsDomains") + ) + container_id: Annotated[str, Field(strict=True, max_length=200)] = Field( + description="The container id. `containerId` is present only if the audit event was collected in a container context. ", + alias="containerId", + ) + pid: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Id of the process owning the connection." + ) + process_name: Annotated[str, Field(strict=True, max_length=200)] = Field( + description="Name of the process owning the connection.", alias="processName" + ) + client_ipv4: Annotated[str, Field(strict=True, max_length=15)] = Field( + description="The IPv4 dotted notation of the client address.", alias="clientIpv4" + ) + client_port: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="The client port.", alias="clientPort" + ) + server_ipv4: Annotated[str, Field(strict=True, max_length=15)] = Field( + description="The IPv4 dotted notation of the server address.", alias="serverIpv4" + ) + server_port: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="The server port.", alias="serverPort" + ) + direction: StrictStr = Field(description="The direction of the connection.") + l4protocol: Annotated[str, Field(strict=True, max_length=10)] = Field(description="The layer 4 protocol.") + hostname: Annotated[str, Field(strict=True, max_length=200)] = Field(description="The Kubernetes hostname.") + tty: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field(description="TTY number.") + labels: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=200)]]] = Field( + default=None, description="Key value pairs of labels." + ) + __properties: ClassVar[List[str]] = [ + "id", + "timestamp", + "type", + "cmdline", + "comm", + "dnsDomains", + "containerId", + "pid", + "processName", + "clientIpv4", + "clientPort", + "serverIpv4", + "serverPort", + "direction", + "l4protocol", + "hostname", + "tty", + "labels", + ] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["connection"]): + raise ValueError("must be one of enum values ('connection')") + return value + + @field_validator("direction") + def direction_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["in", "out"]): + raise ValueError("must be one of enum values ('in', 'out')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Connection from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Connection from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "timestamp": obj.get("timestamp"), + "type": obj.get("type"), + "cmdline": obj.get("cmdline"), + "comm": obj.get("comm"), + "dnsDomains": obj.get("dnsDomains"), + "containerId": obj.get("containerId"), + "pid": obj.get("pid"), + "processName": obj.get("processName"), + "clientIpv4": obj.get("clientIpv4"), + "clientPort": obj.get("clientPort"), + "serverIpv4": obj.get("serverIpv4"), + "serverPort": obj.get("serverPort"), + "direction": obj.get("direction"), + "l4protocol": obj.get("l4protocol"), + "hostname": obj.get("hostname"), + "tty": obj.get("tty"), + "labels": obj.get("labels"), + } + ) + return _obj diff --git a/sysdig_client/models/container_info.py b/sysdig_client/models/container_info.py new file mode 100644 index 00000000..5e5c7624 --- /dev/null +++ b/sysdig_client/models/container_info.py @@ -0,0 +1,98 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ContainerInfo(BaseModel): + """ + Kubernetes container information. + """ # noqa: E501 + + pod_name: Annotated[str, Field(strict=True, max_length=63)] = Field(description="Pod name", alias="podName") + container_id: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Container id.", alias="containerId") + container_name: Annotated[str, Field(strict=True, max_length=253)] = Field( + description="Container name.", alias="containerName" + ) + pull_string: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="Pull string for image used for the container.", alias="pullString" + ) + __properties: ClassVar[List[str]] = ["podName", "containerId", "containerName", "pullString"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ContainerInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ContainerInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "podName": obj.get("podName"), + "containerId": obj.get("containerId"), + "containerName": obj.get("containerName"), + "pullString": obj.get("pullString"), + } + ) + return _obj diff --git a/sysdig_client/models/container_killed_action.py b/sysdig_client/models/container_killed_action.py new file mode 100644 index 00000000..deb6afd8 --- /dev/null +++ b/sysdig_client/models/container_killed_action.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_type import ActionType +from typing import Set +from typing_extensions import Self + + +class ContainerKilledAction(BaseModel): + """ + Container kill automatic action. + """ # noqa: E501 + + type: ActionType + is_successful: Optional[StrictBool] = Field( + default=None, description="Whether or not the action was completed successfully.", alias="isSuccessful" + ) + err_msg: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="When `isSuccessful` is `false`, details on why the action failed. ", alias="errMsg" + ) + __properties: ClassVar[List[str]] = ["type", "isSuccessful", "errMsg"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ContainerKilledAction from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ContainerKilledAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "isSuccessful": obj.get("isSuccessful"), "errMsg": obj.get("errMsg")}) + return _obj diff --git a/sysdig_client/models/container_paused_action.py b/sysdig_client/models/container_paused_action.py new file mode 100644 index 00000000..08471a56 --- /dev/null +++ b/sysdig_client/models/container_paused_action.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_type import ActionType +from typing import Set +from typing_extensions import Self + + +class ContainerPausedAction(BaseModel): + """ + Container paused automatic action. + """ # noqa: E501 + + type: ActionType + is_successful: Optional[StrictBool] = Field( + default=None, description="Whether or not the action was completed successfully.", alias="isSuccessful" + ) + err_msg: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="When `isSuccessful` is `false`, details on why the action failed. ", alias="errMsg" + ) + __properties: ClassVar[List[str]] = ["type", "isSuccessful", "errMsg"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ContainerPausedAction from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ContainerPausedAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "isSuccessful": obj.get("isSuccessful"), "errMsg": obj.get("errMsg")}) + return _obj diff --git a/sysdig_client/models/container_stopped_action.py b/sysdig_client/models/container_stopped_action.py new file mode 100644 index 00000000..3e65165a --- /dev/null +++ b/sysdig_client/models/container_stopped_action.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_type import ActionType +from typing import Set +from typing_extensions import Self + + +class ContainerStoppedAction(BaseModel): + """ + Container stop automatic action. + """ # noqa: E501 + + type: ActionType + is_successful: Optional[StrictBool] = Field( + default=None, description="Whether or not the action was completed successfully.", alias="isSuccessful" + ) + err_msg: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="When `isSuccessful` is `false`, details on why the action failed. ", alias="errMsg" + ) + __properties: ClassVar[List[str]] = ["type", "isSuccessful", "errMsg"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ContainerStoppedAction from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ContainerStoppedAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "isSuccessful": obj.get("isSuccessful"), "errMsg": obj.get("errMsg")}) + return _obj diff --git a/sysdig_client/models/context.py b/sysdig_client/models/context.py new file mode 100644 index 00000000..0eec3e27 --- /dev/null +++ b/sysdig_client/models/context.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class Context(BaseModel): + """ + Context + """ # noqa: E501 + + type: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Type for the context entry") + value: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Value for the context entry") + __properties: ClassVar[List[str]] = ["type", "value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Context from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Context from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/create_access_key_request_v1.py b/sysdig_client/models/create_access_key_request_v1.py new file mode 100644 index 00000000..0d2367d5 --- /dev/null +++ b/sysdig_client/models/create_access_key_request_v1.py @@ -0,0 +1,105 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateAccessKeyRequestV1(BaseModel): + """ + Create access key request + """ # noqa: E501 + + agent_limit: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="Maximum number of agents that can be connected with the access key", alias="agentLimit" + ) + agent_reservation: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="Number of agents that are guaranteed to be available for the access key", + alias="agentReservation", + ) + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of team that owns the access key", alias="teamId" + ) + metadata: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=76)]]] = Field( + default=None, + description="Access key metadata (maximum of 20 key-value pairs where key can be up to 25 characters long and value can be up to 50 characters long)", + ) + __properties: ClassVar[List[str]] = ["agentLimit", "agentReservation", "teamId", "metadata"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateAccessKeyRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateAccessKeyRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "agentLimit": obj.get("agentLimit"), + "agentReservation": obj.get("agentReservation"), + "teamId": obj.get("teamId"), + "metadata": obj.get("metadata"), + } + ) + return _obj diff --git a/sysdig_client/models/create_amazon_sqs_integration_request.py b/sysdig_client/models/create_amazon_sqs_integration_request.py new file mode 100644 index 00000000..c72af56b --- /dev/null +++ b/sysdig_client/models/create_amazon_sqs_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.amazon_sqs_create_connection_info import AmazonSQSCreateConnectionInfo +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateAmazonSqsIntegrationRequest(BaseModel): + """ + Create Amazon SQS Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: AmazonSQSCreateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateAmazonSqsIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateAmazonSqsIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": AmazonSQSCreateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_bundle_request.py b/sysdig_client/models/create_bundle_request.py new file mode 100644 index 00000000..97b06c12 --- /dev/null +++ b/sysdig_client/models/create_bundle_request.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.new_rule import NewRule +from typing import Set +from typing_extensions import Self + + +class CreateBundleRequest(BaseModel): + """ + Bundle definition + """ # noqa: E501 + + name: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field(description="The human readable Bundle name") + description: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=4096)]] = Field( + default=None, description="Human readable description of this Bundle" + ) + rules: Annotated[List[NewRule], Field(min_length=1, max_length=1024)] = Field(description="The Rules defining this Bundle") + __properties: ClassVar[List[str]] = ["name", "description", "rules"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateBundleRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in rules (list) + _items = [] + if self.rules: + for _item_rules in self.rules: + if _item_rules: + _items.append(_item_rules.to_dict()) + _dict["rules"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateBundleRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "description": obj.get("description"), + "rules": [NewRule.from_dict(_item) for _item in obj["rules"]] if obj.get("rules") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_chronicle_integration_conn_info.py b/sysdig_client/models/create_chronicle_integration_conn_info.py new file mode 100644 index 00000000..389890e0 --- /dev/null +++ b/sysdig_client/models/create_chronicle_integration_conn_info.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateChronicleIntegrationConnInfo(BaseModel): + """ + Create Chronicle Integration Connection Info + """ # noqa: E501 + + region: Optional[StrictStr] = Field(default="us", description="The target region") + api_key: Annotated[str, Field(strict=True, max_length=64)] = Field(description="The Chronicle v1 API key", alias="apiKey") + __properties: ClassVar[List[str]] = ["region", "apiKey"] + + @field_validator("region") + def region_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["us", "europe", "asia-southeast1"]): + raise ValueError("must be one of enum values ('us', 'europe', 'asia-southeast1')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateChronicleIntegrationConnInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateChronicleIntegrationConnInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"region": obj.get("region") if obj.get("region") is not None else "us", "apiKey": obj.get("apiKey")} + ) + return _obj diff --git a/sysdig_client/models/create_chronicle_integration_conn_info_v2.py b/sysdig_client/models/create_chronicle_integration_conn_info_v2.py new file mode 100644 index 00000000..8ebf9ac3 --- /dev/null +++ b/sysdig_client/models/create_chronicle_integration_conn_info_v2.py @@ -0,0 +1,126 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateChronicleIntegrationConnInfoV2(BaseModel): + """ + Create Chronicle Integration Connection V2 Info + """ # noqa: E501 + + region: Optional[StrictStr] = Field(default="us", description="The target region") + chronicle_customer_id: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="Unique identifier (UUID) corresponding to a particular Chronicle instance", alias="chronicleCustomerId" + ) + namespace: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="User-configured environment namespace to identify the data domain the logs originated from" + ) + credentials_o_auth2: Annotated[str, Field(strict=True, max_length=1048576)] = Field( + description="The Chronicle v2 OAuth2 credentials", alias="credentialsOAuth2" + ) + __properties: ClassVar[List[str]] = ["region", "chronicleCustomerId", "namespace", "credentialsOAuth2"] + + @field_validator("region") + def region_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set( + [ + "us", + "europe", + "europe-west2", + "europe-west3", + "europe-west6", + "asia-southeast1", + "asia-south1", + "asia-northeast1", + "me-west1", + "me-central2", + "australia-southeast1", + ] + ): + raise ValueError( + "must be one of enum values ('us', 'europe', 'europe-west2', 'europe-west3', 'europe-west6', 'asia-southeast1', 'asia-south1', 'asia-northeast1', 'me-west1', 'me-central2', 'australia-southeast1')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateChronicleIntegrationConnInfoV2 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateChronicleIntegrationConnInfoV2 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "region": obj.get("region") if obj.get("region") is not None else "us", + "chronicleCustomerId": obj.get("chronicleCustomerId"), + "namespace": obj.get("namespace"), + "credentialsOAuth2": obj.get("credentialsOAuth2"), + } + ) + return _obj diff --git a/sysdig_client/models/create_chronicle_integration_request.py b/sysdig_client/models/create_chronicle_integration_request.py new file mode 100644 index 00000000..9df4d15f --- /dev/null +++ b/sysdig_client/models/create_chronicle_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.chronicle_create_connection_info import ChronicleCreateConnectionInfo +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateChronicleIntegrationRequest(BaseModel): + """ + Create Chronicle Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: ChronicleCreateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateChronicleIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateChronicleIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": ChronicleCreateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_custom_webhook_notification_channel_request_v1.py b/sysdig_client/models/create_custom_webhook_notification_channel_request_v1.py new file mode 100644 index 00000000..32c18db5 --- /dev/null +++ b/sysdig_client/models/create_custom_webhook_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.custom_webhook_notification_channel_options_v1 import CustomWebhookNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from typing import Set +from typing_extensions import Self + + +class CreateCustomWebhookNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateCustomWebhookNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: CustomWebhookNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["type", "teamId", "isEnabled", "name", "hasTestNotificationEnabled", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateCustomWebhookNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateCustomWebhookNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "options": CustomWebhookNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_elasticsearch_integration_request.py b/sysdig_client/models/create_elasticsearch_integration_request.py new file mode 100644 index 00000000..72fc47c3 --- /dev/null +++ b/sysdig_client/models/create_elasticsearch_integration_request.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_elasticsearch_integration_request_all_of_connection_info import ( + CreateElasticsearchIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateElasticsearchIntegrationRequest(BaseModel): + """ + Create Elasticsearch Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: CreateElasticsearchIntegrationRequestAllOfConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateElasticsearchIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateElasticsearchIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": CreateElasticsearchIntegrationRequestAllOfConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_elasticsearch_integration_request_all_of_connection_info.py b/sysdig_client/models/create_elasticsearch_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..e98b0c8f --- /dev/null +++ b/sysdig_client/models/create_elasticsearch_integration_request_all_of_connection_info.py @@ -0,0 +1,143 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Optional +from sysdig_client.models.authenticated_connection_info_elasticsearch import AuthenticatedConnectionInfoElasticsearch +from sysdig_client.models.base_connection_info_elasticsearch import BaseConnectionInfoElasticsearch +from typing import Union, Any, List, Set, TYPE_CHECKING, Dict +from typing_extensions import Literal, Self + +CREATEELASTICSEARCHINTEGRATIONREQUESTALLOFCONNECTIONINFO_ANY_OF_SCHEMAS = [ + "AuthenticatedConnectionInfoElasticsearch", + "BaseConnectionInfoElasticsearch", +] + + +class CreateElasticsearchIntegrationRequestAllOfConnectionInfo(BaseModel): + """ + CreateElasticsearchIntegrationRequestAllOfConnectionInfo + """ + + # data type: BaseConnectionInfoElasticsearch + anyof_schema_1_validator: Optional[BaseConnectionInfoElasticsearch] = None + # data type: AuthenticatedConnectionInfoElasticsearch + anyof_schema_2_validator: Optional[AuthenticatedConnectionInfoElasticsearch] = None + if TYPE_CHECKING: + actual_instance: Optional[Union[AuthenticatedConnectionInfoElasticsearch, BaseConnectionInfoElasticsearch]] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = {"AuthenticatedConnectionInfoElasticsearch", "BaseConnectionInfoElasticsearch"} + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_anyof(cls, v): + instance = CreateElasticsearchIntegrationRequestAllOfConnectionInfo.model_construct() + error_messages = [] + # validate data type: BaseConnectionInfoElasticsearch + if not isinstance(v, BaseConnectionInfoElasticsearch): + error_messages.append(f"Error! Input type `{type(v)}` is not `BaseConnectionInfoElasticsearch`") + else: + return v + + # validate data type: AuthenticatedConnectionInfoElasticsearch + if not isinstance(v, AuthenticatedConnectionInfoElasticsearch): + error_messages.append(f"Error! Input type `{type(v)}` is not `AuthenticatedConnectionInfoElasticsearch`") + else: + return v + + if error_messages: + # no match + raise ValueError( + "No match found when setting the actual_instance in CreateElasticsearchIntegrationRequestAllOfConnectionInfo with anyOf schemas: AuthenticatedConnectionInfoElasticsearch, BaseConnectionInfoElasticsearch. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # anyof_schema_1_validator: Optional[BaseConnectionInfoElasticsearch] = None + try: + instance.actual_instance = BaseConnectionInfoElasticsearch.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_2_validator: Optional[AuthenticatedConnectionInfoElasticsearch] = None + try: + instance.actual_instance = AuthenticatedConnectionInfoElasticsearch.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError( + "No match found when deserializing the JSON string into CreateElasticsearchIntegrationRequestAllOfConnectionInfo with anyOf schemas: AuthenticatedConnectionInfoElasticsearch, BaseConnectionInfoElasticsearch. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[Union[Dict[str, Any], AuthenticatedConnectionInfoElasticsearch, BaseConnectionInfoElasticsearch]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/create_email_notification_channel_request_v1.py b/sysdig_client/models/create_email_notification_channel_request_v1.py new file mode 100644 index 00000000..6a160585 --- /dev/null +++ b/sysdig_client/models/create_email_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.email_notification_channel_options_v1 import EmailNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from typing import Set +from typing_extensions import Self + + +class CreateEmailNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateEmailNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: EmailNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["type", "teamId", "isEnabled", "name", "hasTestNotificationEnabled", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateEmailNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateEmailNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "options": EmailNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_gchat_notification_channel_request_v1.py b/sysdig_client/models/create_gchat_notification_channel_request_v1.py new file mode 100644 index 00000000..0da8c40a --- /dev/null +++ b/sysdig_client/models/create_gchat_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.gchat_notification_channel_options_v1 import GchatNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from typing import Set +from typing_extensions import Self + + +class CreateGchatNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateGchatNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: GchatNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateGchatNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateGchatNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": GchatNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_global_service_account_request_v1.py b/sysdig_client/models/create_global_service_account_request_v1.py new file mode 100644 index 00000000..34744100 --- /dev/null +++ b/sysdig_client/models/create_global_service_account_request_v1.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateGlobalServiceAccountRequestV1(BaseModel): + """ + CreateGlobalServiceAccountRequestV1 + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The display name of the Service Account.") + expiration_date: Optional[Annotated[int, Field(le=9223372036854775000, strict=True, ge=0)]] = Field( + default=None, + description="Time when the Service Account API key expires, | in number of milliseconds since January 1, 1970, 00:00:00 GMT", + alias="expirationDate", + ) + system_roles: Annotated[List[Annotated[str, Field(strict=True, max_length=128)]], Field(min_length=1, max_length=20)] = Field( + description="Array of System roles assigned to the global service account.", alias="systemRoles" + ) + __properties: ClassVar[List[str]] = ["name", "expirationDate", "systemRoles"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateGlobalServiceAccountRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateGlobalServiceAccountRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"name": obj.get("name"), "expirationDate": obj.get("expirationDate"), "systemRoles": obj.get("systemRoles")} + ) + return _obj diff --git a/sysdig_client/models/create_google_pub_sub_integration_request.py b/sysdig_client/models/create_google_pub_sub_integration_request.py new file mode 100644 index 00000000..543412ae --- /dev/null +++ b/sysdig_client/models/create_google_pub_sub_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.google_pub_sub_create_connection_info import GooglePubSubCreateConnectionInfo +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateGooglePubSubIntegrationRequest(BaseModel): + """ + Create Google Pub/Sub Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: GooglePubSubCreateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateGooglePubSubIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateGooglePubSubIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": GooglePubSubCreateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_google_scc_integration_request.py b/sysdig_client/models/create_google_scc_integration_request.py new file mode 100644 index 00000000..9fb83ab9 --- /dev/null +++ b/sysdig_client/models/create_google_scc_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.google_scc_create_connection_info import GoogleSCCCreateConnectionInfo +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateGoogleSccIntegrationRequest(BaseModel): + """ + Create Google SCC Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: GoogleSCCCreateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateGoogleSccIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateGoogleSccIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": GoogleSCCCreateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_group_mapping_request_v1.py b/sysdig_client/models/create_group_mapping_request_v1.py new file mode 100644 index 00000000..c03ab01a --- /dev/null +++ b/sysdig_client/models/create_group_mapping_request_v1.py @@ -0,0 +1,128 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.team_map_v1 import TeamMapV1 +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from typing import Set +from typing_extensions import Self + + +class CreateGroupMappingRequestV1(BaseModel): + """ + CreateGroupMappingRequestV1 + """ # noqa: E501 + + group_name: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="The group name matching the external provider name.", alias="groupName" + ) + standard_team_role: Optional[TeamRoleV1] = Field( + default=None, + description="The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**. ", + alias="standardTeamRole", + ) + custom_team_role_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, + description="The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. ", + alias="customTeamRoleId", + ) + is_admin: Optional[StrictBool] = Field( + default=None, description="Flag that indicates if the group is an admin group.", alias="isAdmin" + ) + team_map: TeamMapV1 = Field(alias="teamMap") + weight: Optional[Annotated[int, Field(le=32767, strict=True, ge=1)]] = Field( + default=32767, + description="The weight of the group mapping is used to determine the priority - a lower number has higher priority.", + ) + __properties: ClassVar[List[str]] = ["groupName", "standardTeamRole", "customTeamRoleId", "isAdmin", "teamMap", "weight"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateGroupMappingRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of team_map + if self.team_map: + _dict["teamMap"] = self.team_map.to_dict() + # set to None if standard_team_role (nullable) is None + # and model_fields_set contains the field + if self.standard_team_role is None and "standard_team_role" in self.model_fields_set: + _dict["standardTeamRole"] = None + + # set to None if custom_team_role_id (nullable) is None + # and model_fields_set contains the field + if self.custom_team_role_id is None and "custom_team_role_id" in self.model_fields_set: + _dict["customTeamRoleId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateGroupMappingRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "groupName": obj.get("groupName"), + "standardTeamRole": obj.get("standardTeamRole"), + "customTeamRoleId": obj.get("customTeamRoleId"), + "isAdmin": obj.get("isAdmin"), + "teamMap": TeamMapV1.from_dict(obj["teamMap"]) if obj.get("teamMap") is not None else None, + "weight": obj.get("weight") if obj.get("weight") is not None else 32767, + } + ) + return _obj diff --git a/sysdig_client/models/create_ibm_event_notifications_notification_channel_request_v1.py b/sysdig_client/models/create_ibm_event_notifications_notification_channel_request_v1.py new file mode 100644 index 00000000..1d3b04b9 --- /dev/null +++ b/sysdig_client/models/create_ibm_event_notifications_notification_channel_request_v1.py @@ -0,0 +1,126 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.ibm_event_notifications_notification_channel_options_v1 import ( + IbmEventNotificationsNotificationChannelOptionsV1, +) +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from typing import Set +from typing_extensions import Self + + +class CreateIbmEventNotificationsNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + This channel is only available in IBM Cloud + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: IbmEventNotificationsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateIbmEventNotificationsNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateIbmEventNotificationsNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": IbmEventNotificationsNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_inhibition_rule_request_v1.py b/sysdig_client/models/create_inhibition_rule_request_v1.py new file mode 100644 index 00000000..6bbce351 --- /dev/null +++ b/sysdig_client/models/create_inhibition_rule_request_v1.py @@ -0,0 +1,148 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.label_matcher_v1 import LabelMatcherV1 +from typing import Set +from typing_extensions import Self + + +class CreateInhibitionRuleRequestV1(BaseModel): + """ + CreateInhibitionRuleRequestV1 + """ # noqa: E501 + + is_enabled: Optional[StrictBool] = Field( + default=True, description="Indicates if the inhibition rule is enabled or not.", alias="isEnabled" + ) + name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Name of the inhibition rule. If provided, must be unique." + ) + description: Optional[Annotated[str, Field(strict=True, max_length=8192)]] = Field( + default=None, description="Description of the inhibition rule." + ) + source_matchers: Annotated[List[LabelMatcherV1], Field(min_length=1, max_length=100)] = Field( + description="List of source matchers for which one or more alerts have to exist for the inhibition to take effect.", + alias="sourceMatchers", + ) + target_matchers: Annotated[List[LabelMatcherV1], Field(min_length=1, max_length=100)] = Field( + description="List of target matchers that have to be fulfilled by the target alerts to be muted.", alias="targetMatchers" + ) + equal: Optional[ + Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=1024)]], Field(min_length=1, max_length=100)] + ] = Field( + default=None, + description="List of labels that must have an equal value in the source and target alert for the inhibition to take effect.", + ) + __properties: ClassVar[List[str]] = ["isEnabled", "name", "description", "sourceMatchers", "targetMatchers", "equal"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateInhibitionRuleRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in source_matchers (list) + _items = [] + if self.source_matchers: + for _item_source_matchers in self.source_matchers: + if _item_source_matchers: + _items.append(_item_source_matchers.to_dict()) + _dict["sourceMatchers"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in target_matchers (list) + _items = [] + if self.target_matchers: + for _item_target_matchers in self.target_matchers: + if _item_target_matchers: + _items.append(_item_target_matchers.to_dict()) + _dict["targetMatchers"] = _items + # set to None if name (nullable) is None + # and model_fields_set contains the field + if self.name is None and "name" in self.model_fields_set: + _dict["name"] = None + + # set to None if description (nullable) is None + # and model_fields_set contains the field + if self.description is None and "description" in self.model_fields_set: + _dict["description"] = None + + # set to None if equal (nullable) is None + # and model_fields_set contains the field + if self.equal is None and "equal" in self.model_fields_set: + _dict["equal"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateInhibitionRuleRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "name": obj.get("name"), + "description": obj.get("description"), + "sourceMatchers": [LabelMatcherV1.from_dict(_item) for _item in obj["sourceMatchers"]] + if obj.get("sourceMatchers") is not None + else None, + "targetMatchers": [LabelMatcherV1.from_dict(_item) for _item in obj["targetMatchers"]] + if obj.get("targetMatchers") is not None + else None, + "equal": obj.get("equal"), + } + ) + return _obj diff --git a/sysdig_client/models/create_integration_request.py b/sysdig_client/models/create_integration_request.py new file mode 100644 index 00000000..56df10f2 --- /dev/null +++ b/sysdig_client/models/create_integration_request.py @@ -0,0 +1,348 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.create_amazon_sqs_integration_request import CreateAmazonSqsIntegrationRequest +from sysdig_client.models.create_chronicle_integration_request import CreateChronicleIntegrationRequest +from sysdig_client.models.create_elasticsearch_integration_request import CreateElasticsearchIntegrationRequest +from sysdig_client.models.create_google_pub_sub_integration_request import CreateGooglePubSubIntegrationRequest +from sysdig_client.models.create_google_scc_integration_request import CreateGoogleSccIntegrationRequest +from sysdig_client.models.create_kafka_integration_request import CreateKafkaIntegrationRequest +from sysdig_client.models.create_mcm_integration_request import CreateMcmIntegrationRequest +from sysdig_client.models.create_microsoft_sentinel_integration_request import CreateMicrosoftSentinelIntegrationRequest +from sysdig_client.models.create_qradar_integration_request import CreateQradarIntegrationRequest +from sysdig_client.models.create_splunk_integration_request import CreateSplunkIntegrationRequest +from sysdig_client.models.create_syslog_integration_request import CreateSyslogIntegrationRequest +from sysdig_client.models.create_webhook_integration_request import CreateWebhookIntegrationRequest +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +CREATEINTEGRATIONREQUEST_ONE_OF_SCHEMAS = [ + "CreateAmazonSqsIntegrationRequest", + "CreateChronicleIntegrationRequest", + "CreateElasticsearchIntegrationRequest", + "CreateGooglePubSubIntegrationRequest", + "CreateGoogleSccIntegrationRequest", + "CreateKafkaIntegrationRequest", + "CreateMcmIntegrationRequest", + "CreateMicrosoftSentinelIntegrationRequest", + "CreateQradarIntegrationRequest", + "CreateSplunkIntegrationRequest", + "CreateSyslogIntegrationRequest", + "CreateWebhookIntegrationRequest", +] + + +class CreateIntegrationRequest(BaseModel): + """ + Create Integration Request + """ + + # data type: CreateChronicleIntegrationRequest + oneof_schema_1_validator: Optional[CreateChronicleIntegrationRequest] = None + # data type: CreateElasticsearchIntegrationRequest + oneof_schema_2_validator: Optional[CreateElasticsearchIntegrationRequest] = None + # data type: CreateGooglePubSubIntegrationRequest + oneof_schema_3_validator: Optional[CreateGooglePubSubIntegrationRequest] = None + # data type: CreateKafkaIntegrationRequest + oneof_schema_4_validator: Optional[CreateKafkaIntegrationRequest] = None + # data type: CreateMcmIntegrationRequest + oneof_schema_5_validator: Optional[CreateMcmIntegrationRequest] = None + # data type: CreateQradarIntegrationRequest + oneof_schema_6_validator: Optional[CreateQradarIntegrationRequest] = None + # data type: CreateGoogleSccIntegrationRequest + oneof_schema_7_validator: Optional[CreateGoogleSccIntegrationRequest] = None + # data type: CreateMicrosoftSentinelIntegrationRequest + oneof_schema_8_validator: Optional[CreateMicrosoftSentinelIntegrationRequest] = None + # data type: CreateSplunkIntegrationRequest + oneof_schema_9_validator: Optional[CreateSplunkIntegrationRequest] = None + # data type: CreateSyslogIntegrationRequest + oneof_schema_10_validator: Optional[CreateSyslogIntegrationRequest] = None + # data type: CreateAmazonSqsIntegrationRequest + oneof_schema_11_validator: Optional[CreateAmazonSqsIntegrationRequest] = None + # data type: CreateWebhookIntegrationRequest + oneof_schema_12_validator: Optional[CreateWebhookIntegrationRequest] = None + actual_instance: Optional[ + Union[ + CreateAmazonSqsIntegrationRequest, + CreateChronicleIntegrationRequest, + CreateElasticsearchIntegrationRequest, + CreateGooglePubSubIntegrationRequest, + CreateGoogleSccIntegrationRequest, + CreateKafkaIntegrationRequest, + CreateMcmIntegrationRequest, + CreateMicrosoftSentinelIntegrationRequest, + CreateQradarIntegrationRequest, + CreateSplunkIntegrationRequest, + CreateSyslogIntegrationRequest, + CreateWebhookIntegrationRequest, + ] + ] = None + one_of_schemas: Set[str] = { + "CreateAmazonSqsIntegrationRequest", + "CreateChronicleIntegrationRequest", + "CreateElasticsearchIntegrationRequest", + "CreateGooglePubSubIntegrationRequest", + "CreateGoogleSccIntegrationRequest", + "CreateKafkaIntegrationRequest", + "CreateMcmIntegrationRequest", + "CreateMicrosoftSentinelIntegrationRequest", + "CreateQradarIntegrationRequest", + "CreateSplunkIntegrationRequest", + "CreateSyslogIntegrationRequest", + "CreateWebhookIntegrationRequest", + } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + discriminator_value_class_map: Dict[str, str] = {} + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = CreateIntegrationRequest.model_construct() + error_messages = [] + match = 0 + # validate data type: CreateChronicleIntegrationRequest + if not isinstance(v, CreateChronicleIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateChronicleIntegrationRequest`") + else: + match += 1 + # validate data type: CreateElasticsearchIntegrationRequest + if not isinstance(v, CreateElasticsearchIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateElasticsearchIntegrationRequest`") + else: + match += 1 + # validate data type: CreateGooglePubSubIntegrationRequest + if not isinstance(v, CreateGooglePubSubIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateGooglePubSubIntegrationRequest`") + else: + match += 1 + # validate data type: CreateKafkaIntegrationRequest + if not isinstance(v, CreateKafkaIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateKafkaIntegrationRequest`") + else: + match += 1 + # validate data type: CreateMcmIntegrationRequest + if not isinstance(v, CreateMcmIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateMcmIntegrationRequest`") + else: + match += 1 + # validate data type: CreateQradarIntegrationRequest + if not isinstance(v, CreateQradarIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateQradarIntegrationRequest`") + else: + match += 1 + # validate data type: CreateGoogleSccIntegrationRequest + if not isinstance(v, CreateGoogleSccIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateGoogleSccIntegrationRequest`") + else: + match += 1 + # validate data type: CreateMicrosoftSentinelIntegrationRequest + if not isinstance(v, CreateMicrosoftSentinelIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateMicrosoftSentinelIntegrationRequest`") + else: + match += 1 + # validate data type: CreateSplunkIntegrationRequest + if not isinstance(v, CreateSplunkIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateSplunkIntegrationRequest`") + else: + match += 1 + # validate data type: CreateSyslogIntegrationRequest + if not isinstance(v, CreateSyslogIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateSyslogIntegrationRequest`") + else: + match += 1 + # validate data type: CreateAmazonSqsIntegrationRequest + if not isinstance(v, CreateAmazonSqsIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateAmazonSqsIntegrationRequest`") + else: + match += 1 + # validate data type: CreateWebhookIntegrationRequest + if not isinstance(v, CreateWebhookIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `CreateWebhookIntegrationRequest`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in CreateIntegrationRequest with oneOf schemas: CreateAmazonSqsIntegrationRequest, CreateChronicleIntegrationRequest, CreateElasticsearchIntegrationRequest, CreateGooglePubSubIntegrationRequest, CreateGoogleSccIntegrationRequest, CreateKafkaIntegrationRequest, CreateMcmIntegrationRequest, CreateMicrosoftSentinelIntegrationRequest, CreateQradarIntegrationRequest, CreateSplunkIntegrationRequest, CreateSyslogIntegrationRequest, CreateWebhookIntegrationRequest. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in CreateIntegrationRequest with oneOf schemas: CreateAmazonSqsIntegrationRequest, CreateChronicleIntegrationRequest, CreateElasticsearchIntegrationRequest, CreateGooglePubSubIntegrationRequest, CreateGoogleSccIntegrationRequest, CreateKafkaIntegrationRequest, CreateMcmIntegrationRequest, CreateMicrosoftSentinelIntegrationRequest, CreateQradarIntegrationRequest, CreateSplunkIntegrationRequest, CreateSyslogIntegrationRequest, CreateWebhookIntegrationRequest. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into CreateChronicleIntegrationRequest + try: + instance.actual_instance = CreateChronicleIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateElasticsearchIntegrationRequest + try: + instance.actual_instance = CreateElasticsearchIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateGooglePubSubIntegrationRequest + try: + instance.actual_instance = CreateGooglePubSubIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateKafkaIntegrationRequest + try: + instance.actual_instance = CreateKafkaIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateMcmIntegrationRequest + try: + instance.actual_instance = CreateMcmIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateQradarIntegrationRequest + try: + instance.actual_instance = CreateQradarIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateGoogleSccIntegrationRequest + try: + instance.actual_instance = CreateGoogleSccIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateMicrosoftSentinelIntegrationRequest + try: + instance.actual_instance = CreateMicrosoftSentinelIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateSplunkIntegrationRequest + try: + instance.actual_instance = CreateSplunkIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateSyslogIntegrationRequest + try: + instance.actual_instance = CreateSyslogIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateAmazonSqsIntegrationRequest + try: + instance.actual_instance = CreateAmazonSqsIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into CreateWebhookIntegrationRequest + try: + instance.actual_instance = CreateWebhookIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into CreateIntegrationRequest with oneOf schemas: CreateAmazonSqsIntegrationRequest, CreateChronicleIntegrationRequest, CreateElasticsearchIntegrationRequest, CreateGooglePubSubIntegrationRequest, CreateGoogleSccIntegrationRequest, CreateKafkaIntegrationRequest, CreateMcmIntegrationRequest, CreateMicrosoftSentinelIntegrationRequest, CreateQradarIntegrationRequest, CreateSplunkIntegrationRequest, CreateSyslogIntegrationRequest, CreateWebhookIntegrationRequest. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into CreateIntegrationRequest with oneOf schemas: CreateAmazonSqsIntegrationRequest, CreateChronicleIntegrationRequest, CreateElasticsearchIntegrationRequest, CreateGooglePubSubIntegrationRequest, CreateGoogleSccIntegrationRequest, CreateKafkaIntegrationRequest, CreateMcmIntegrationRequest, CreateMicrosoftSentinelIntegrationRequest, CreateQradarIntegrationRequest, CreateSplunkIntegrationRequest, CreateSyslogIntegrationRequest, CreateWebhookIntegrationRequest. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[ + Union[ + Dict[str, Any], + CreateAmazonSqsIntegrationRequest, + CreateChronicleIntegrationRequest, + CreateElasticsearchIntegrationRequest, + CreateGooglePubSubIntegrationRequest, + CreateGoogleSccIntegrationRequest, + CreateKafkaIntegrationRequest, + CreateMcmIntegrationRequest, + CreateMicrosoftSentinelIntegrationRequest, + CreateQradarIntegrationRequest, + CreateSplunkIntegrationRequest, + CreateSyslogIntegrationRequest, + CreateWebhookIntegrationRequest, + ] + ]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/create_integration_request_v1.py b/sysdig_client/models/create_integration_request_v1.py new file mode 100644 index 00000000..d96a9ab3 --- /dev/null +++ b/sysdig_client/models/create_integration_request_v1.py @@ -0,0 +1,137 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateIntegrationRequestV1(BaseModel): + """ + CreateIntegrationRequestV1 + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Integration name.") + is_all_teams: Optional[StrictBool] = Field( + default=None, + description="If **true**, the integration will be enabled for all teams. If **false**, the integration will be enabled for the teams specified in the *teamIds* field. ", + alias="isAllTeams", + ) + team_ids: Optional[Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=500)]] = Field( + default=None, + description="List of Sysdig's internal team ids for which the integration will be enabled. This field is required if *isAllTeams* is **false**. ", + alias="teamIds", + ) + jira_project: Annotated[str, Field(strict=True, max_length=512)] = Field( + description='Associated Jira project id. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects#api-group-projects "Jira project documentation") for more info. ', + alias="jiraProject", + ) + jira_url: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Customer's Jira URL.", alias="jiraUrl") + jira_email: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="User's email associated with the Jira account.", alias="jiraEmail" + ) + jira_access_token: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Jira access token for the provided Jira account.", alias="jiraAccessToken" + ) + jira_assignee: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description='The default assignee Jira account id for this integration. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-user-search/#api-group-user-search "Jira user documentation") for more info. ', + alias="jiraAssignee", + ) + jira_labels: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=500)]] = Field( + default=None, + description='The list of Jira labels available for this integration. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-labels/#api-group-labels "Jira labels documentation") for more info. ', + alias="jiraLabels", + ) + __properties: ClassVar[List[str]] = [ + "name", + "isAllTeams", + "teamIds", + "jiraProject", + "jiraUrl", + "jiraEmail", + "jiraAccessToken", + "jiraAssignee", + "jiraLabels", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateIntegrationRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateIntegrationRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isAllTeams": obj.get("isAllTeams"), + "teamIds": obj.get("teamIds"), + "jiraProject": obj.get("jiraProject"), + "jiraUrl": obj.get("jiraUrl"), + "jiraEmail": obj.get("jiraEmail"), + "jiraAccessToken": obj.get("jiraAccessToken"), + "jiraAssignee": obj.get("jiraAssignee"), + "jiraLabels": obj.get("jiraLabels"), + } + ) + return _obj diff --git a/sysdig_client/models/create_ip_filter_v1.py b/sysdig_client/models/create_ip_filter_v1.py new file mode 100644 index 00000000..5a3cfdec --- /dev/null +++ b/sysdig_client/models/create_ip_filter_v1.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateIpFilterV1(BaseModel): + """ + Request to create IP filter. + """ # noqa: E501 + + ip_range: Annotated[str, Field(strict=True, max_length=43)] = Field(description="IP range in CIDR notation", alias="ipRange") + note: Optional[Annotated[str, Field(strict=True, max_length=128)]] = None + is_enabled: StrictBool = Field(alias="isEnabled") + __properties: ClassVar[List[str]] = ["ipRange", "note", "isEnabled"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateIpFilterV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateIpFilterV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"ipRange": obj.get("ipRange"), "note": obj.get("note"), "isEnabled": obj.get("isEnabled")}) + return _obj diff --git a/sysdig_client/models/create_issue_type_request_v1.py b/sysdig_client/models/create_issue_type_request_v1.py new file mode 100644 index 00000000..a4d1ad80 --- /dev/null +++ b/sysdig_client/models/create_issue_type_request_v1.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateIssueTypeRequestV1(BaseModel): + """ + CreateIssueTypeRequestV1 + """ # noqa: E501 + + jira_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description='Jira issue type id. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-types/#api-group-issue-types "Jira issue types documentation") for more info. ', + alias="jiraId", + ) + jira_open_status_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description='Jira status id mapped to open status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. ', + alias="jiraOpenStatusId", + ) + jira_in_progress_status_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description='Jira status id mapped to in progress status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. ', + alias="jiraInProgressStatusId", + ) + jira_closed_status_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description='Jira status id mapped to closed status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. ', + alias="jiraClosedStatusId", + ) + custom_field_ids: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=500)]] = ( + Field( + default=None, + description='List of supported custom field ids for the issue type. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-createmeta-get "Jira issue type fields documentation") for more info. ', + alias="customFieldIds", + ) + ) + __properties: ClassVar[List[str]] = [ + "jiraId", + "jiraOpenStatusId", + "jiraInProgressStatusId", + "jiraClosedStatusId", + "customFieldIds", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateIssueTypeRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateIssueTypeRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "jiraId": obj.get("jiraId"), + "jiraOpenStatusId": obj.get("jiraOpenStatusId"), + "jiraInProgressStatusId": obj.get("jiraInProgressStatusId"), + "jiraClosedStatusId": obj.get("jiraClosedStatusId"), + "customFieldIds": obj.get("customFieldIds"), + } + ) + return _obj diff --git a/sysdig_client/models/create_kafka_integration_request.py b/sysdig_client/models/create_kafka_integration_request.py new file mode 100644 index 00000000..b0111c97 --- /dev/null +++ b/sysdig_client/models/create_kafka_integration_request.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_kafka_integration_request_all_of_connection_info import ( + CreateKafkaIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateKafkaIntegrationRequest(BaseModel): + """ + Create Kafka Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: CreateKafkaIntegrationRequestAllOfConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateKafkaIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateKafkaIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": CreateKafkaIntegrationRequestAllOfConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_kafka_integration_request_all_of_connection_info.py b/sysdig_client/models/create_kafka_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..8bbb26cf --- /dev/null +++ b/sysdig_client/models/create_kafka_integration_request_all_of_connection_info.py @@ -0,0 +1,147 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.authenticated_connection_info_kafka import AuthenticatedConnectionInfoKafka +from sysdig_client.models.base_connection_info_kafka import BaseConnectionInfoKafka +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +CREATEKAFKAINTEGRATIONREQUESTALLOFCONNECTIONINFO_ONE_OF_SCHEMAS = ["AuthenticatedConnectionInfoKafka", "BaseConnectionInfoKafka"] + + +class CreateKafkaIntegrationRequestAllOfConnectionInfo(BaseModel): + """ + CreateKafkaIntegrationRequestAllOfConnectionInfo + """ + + # data type: BaseConnectionInfoKafka + oneof_schema_1_validator: Optional[BaseConnectionInfoKafka] = None + # data type: AuthenticatedConnectionInfoKafka + oneof_schema_2_validator: Optional[AuthenticatedConnectionInfoKafka] = None + actual_instance: Optional[Union[AuthenticatedConnectionInfoKafka, BaseConnectionInfoKafka]] = None + one_of_schemas: Set[str] = {"AuthenticatedConnectionInfoKafka", "BaseConnectionInfoKafka"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = CreateKafkaIntegrationRequestAllOfConnectionInfo.model_construct() + error_messages = [] + match = 0 + # validate data type: BaseConnectionInfoKafka + if not isinstance(v, BaseConnectionInfoKafka): + error_messages.append(f"Error! Input type `{type(v)}` is not `BaseConnectionInfoKafka`") + else: + match += 1 + # validate data type: AuthenticatedConnectionInfoKafka + if not isinstance(v, AuthenticatedConnectionInfoKafka): + error_messages.append(f"Error! Input type `{type(v)}` is not `AuthenticatedConnectionInfoKafka`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in CreateKafkaIntegrationRequestAllOfConnectionInfo with oneOf schemas: AuthenticatedConnectionInfoKafka, BaseConnectionInfoKafka. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in CreateKafkaIntegrationRequestAllOfConnectionInfo with oneOf schemas: AuthenticatedConnectionInfoKafka, BaseConnectionInfoKafka. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into BaseConnectionInfoKafka + try: + instance.actual_instance = BaseConnectionInfoKafka.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AuthenticatedConnectionInfoKafka + try: + instance.actual_instance = AuthenticatedConnectionInfoKafka.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into CreateKafkaIntegrationRequestAllOfConnectionInfo with oneOf schemas: AuthenticatedConnectionInfoKafka, BaseConnectionInfoKafka. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into CreateKafkaIntegrationRequestAllOfConnectionInfo with oneOf schemas: AuthenticatedConnectionInfoKafka, BaseConnectionInfoKafka. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], AuthenticatedConnectionInfoKafka, BaseConnectionInfoKafka]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/create_mcm_integration_request.py b/sysdig_client/models/create_mcm_integration_request.py new file mode 100644 index 00000000..c17e2b82 --- /dev/null +++ b/sysdig_client/models/create_mcm_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info import IBMMulticloudCloudCreateConnectionInfo +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateMcmIntegrationRequest(BaseModel): + """ + Create IBM Multicloud Manager Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: IBMMulticloudCloudCreateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateMcmIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateMcmIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": IBMMulticloudCloudCreateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_microsoft_sentinel_integration_request.py b/sysdig_client/models/create_microsoft_sentinel_integration_request.py new file mode 100644 index 00000000..989826ed --- /dev/null +++ b/sysdig_client/models/create_microsoft_sentinel_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.microsoft_sentinel_create_connection_info import MicrosoftSentinelCreateConnectionInfo +from typing import Set +from typing_extensions import Self + + +class CreateMicrosoftSentinelIntegrationRequest(BaseModel): + """ + Save Microsoft Sentinel Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: MicrosoftSentinelCreateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateMicrosoftSentinelIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateMicrosoftSentinelIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": MicrosoftSentinelCreateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_ms_teams_notification_channel_request_v1.py b/sysdig_client/models/create_ms_teams_notification_channel_request_v1.py new file mode 100644 index 00000000..23610c60 --- /dev/null +++ b/sysdig_client/models/create_ms_teams_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.ms_teams_notification_channel_options_v1 import MsTeamsNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from typing import Set +from typing_extensions import Self + + +class CreateMsTeamsNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateMsTeamsNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: MsTeamsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateMsTeamsNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateMsTeamsNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": MsTeamsNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_notification_channel_request_v1.py b/sysdig_client/models/create_notification_channel_request_v1.py new file mode 100644 index 00000000..76b62140 --- /dev/null +++ b/sysdig_client/models/create_notification_channel_request_v1.py @@ -0,0 +1,228 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from importlib import import_module +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List, Union +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from typing import Optional, Set +from typing_extensions import Self + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from sysdig_client.models.create_custom_webhook_notification_channel_request_v1 import ( + CreateCustomWebhookNotificationChannelRequestV1, + ) + from sysdig_client.models.create_email_notification_channel_request_v1 import CreateEmailNotificationChannelRequestV1 + from sysdig_client.models.create_gchat_notification_channel_request_v1 import CreateGchatNotificationChannelRequestV1 + from sysdig_client.models.create_ibm_event_notifications_notification_channel_request_v1 import ( + CreateIbmEventNotificationsNotificationChannelRequestV1, + ) + from sysdig_client.models.create_ms_teams_notification_channel_request_v1 import CreateMsTeamsNotificationChannelRequestV1 + from sysdig_client.models.create_opsgenie_notification_channel_request_v1 import CreateOpsgenieNotificationChannelRequestV1 + from sysdig_client.models.create_pager_duty_notification_channel_request_v1 import CreatePagerDutyNotificationChannelRequestV1 + from sysdig_client.models.create_prometheus_alert_manager_notification_channel_request_v1 import ( + CreatePrometheusAlertManagerNotificationChannelRequestV1, + ) + from sysdig_client.models.create_slack_notification_channel_request_v1 import CreateSlackNotificationChannelRequestV1 + from sysdig_client.models.create_sns_notification_channel_request_v1 import CreateSnsNotificationChannelRequestV1 + from sysdig_client.models.create_team_email_notification_channel_request_v1 import CreateTeamEmailNotificationChannelRequestV1 + from sysdig_client.models.create_victor_ops_notification_channel_request_v1 import CreateVictorOpsNotificationChannelRequestV1 + from sysdig_client.models.create_webhook_notification_channel_request_v1 import CreateWebhookNotificationChannelRequestV1 + + +class CreateNotificationChannelRequestV1(BaseModel): + """ + CreateNotificationChannelRequestV1 + """ # noqa: E501 + + type: NotificationChannelTypeV1 + __properties: ClassVar[List[str]] = ["type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = "type" + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = { + "CUSTOM_WEBHOOK": "CreateCustomWebhookNotificationChannelRequestV1", + "EMAIL": "CreateEmailNotificationChannelRequestV1", + "GCHAT": "CreateGchatNotificationChannelRequestV1", + "IBM_EVENT_NOTIFICATIONS": "CreateIbmEventNotificationsNotificationChannelRequestV1", + "MS_TEAMS": "CreateMsTeamsNotificationChannelRequestV1", + "OPSGENIE": "CreateOpsgenieNotificationChannelRequestV1", + "PAGER_DUTY": "CreatePagerDutyNotificationChannelRequestV1", + "PROMETHEUS_ALERT_MANAGER": "CreatePrometheusAlertManagerNotificationChannelRequestV1", + "SLACK": "CreateSlackNotificationChannelRequestV1", + "SNS": "CreateSnsNotificationChannelRequestV1", + "TEAM_EMAIL": "CreateTeamEmailNotificationChannelRequestV1", + "VICTOROPS": "CreateVictorOpsNotificationChannelRequestV1", + "WEBHOOK": "CreateWebhookNotificationChannelRequestV1", + } + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json( + cls, json_str: str + ) -> Optional[ + Union[ + CreateCustomWebhookNotificationChannelRequestV1, + CreateEmailNotificationChannelRequestV1, + CreateGchatNotificationChannelRequestV1, + CreateIbmEventNotificationsNotificationChannelRequestV1, + CreateMsTeamsNotificationChannelRequestV1, + CreateOpsgenieNotificationChannelRequestV1, + CreatePagerDutyNotificationChannelRequestV1, + CreatePrometheusAlertManagerNotificationChannelRequestV1, + CreateSlackNotificationChannelRequestV1, + CreateSnsNotificationChannelRequestV1, + CreateTeamEmailNotificationChannelRequestV1, + CreateVictorOpsNotificationChannelRequestV1, + CreateWebhookNotificationChannelRequestV1, + ] + ]: + """Create an instance of CreateNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict( + cls, obj: Dict[str, Any] + ) -> Optional[ + Union[ + CreateCustomWebhookNotificationChannelRequestV1, + CreateEmailNotificationChannelRequestV1, + CreateGchatNotificationChannelRequestV1, + CreateIbmEventNotificationsNotificationChannelRequestV1, + CreateMsTeamsNotificationChannelRequestV1, + CreateOpsgenieNotificationChannelRequestV1, + CreatePagerDutyNotificationChannelRequestV1, + CreatePrometheusAlertManagerNotificationChannelRequestV1, + CreateSlackNotificationChannelRequestV1, + CreateSnsNotificationChannelRequestV1, + CreateTeamEmailNotificationChannelRequestV1, + CreateVictorOpsNotificationChannelRequestV1, + CreateWebhookNotificationChannelRequestV1, + ] + ]: + """Create an instance of CreateNotificationChannelRequestV1 from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == "CreateCustomWebhookNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_custom_webhook_notification_channel_request_v1" + ).CreateCustomWebhookNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateEmailNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_email_notification_channel_request_v1" + ).CreateEmailNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateGchatNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_gchat_notification_channel_request_v1" + ).CreateGchatNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateIbmEventNotificationsNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_ibm_event_notifications_notification_channel_request_v1" + ).CreateIbmEventNotificationsNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateMsTeamsNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_ms_teams_notification_channel_request_v1" + ).CreateMsTeamsNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateOpsgenieNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_opsgenie_notification_channel_request_v1" + ).CreateOpsgenieNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreatePagerDutyNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_pager_duty_notification_channel_request_v1" + ).CreatePagerDutyNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreatePrometheusAlertManagerNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_prometheus_alert_manager_notification_channel_request_v1" + ).CreatePrometheusAlertManagerNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateSlackNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_slack_notification_channel_request_v1" + ).CreateSlackNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateSnsNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_sns_notification_channel_request_v1" + ).CreateSnsNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateTeamEmailNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_team_email_notification_channel_request_v1" + ).CreateTeamEmailNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateVictorOpsNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_victor_ops_notification_channel_request_v1" + ).CreateVictorOpsNotificationChannelRequestV1.from_dict(obj) + if object_type == "CreateWebhookNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.create_webhook_notification_channel_request_v1" + ).CreateWebhookNotificationChannelRequestV1.from_dict(obj) + + raise ValueError( + "CreateNotificationChannelRequestV1 failed to lookup discriminator value from " + + json.dumps(obj) + + ". Discriminator property name: " + + cls.__discriminator_property_name + + ", mapping: " + + json.dumps(cls.__discriminator_value_class_map) + ) diff --git a/sysdig_client/models/create_opsgenie_notification_channel_request_v1.py b/sysdig_client/models/create_opsgenie_notification_channel_request_v1.py new file mode 100644 index 00000000..3775fafd --- /dev/null +++ b/sysdig_client/models/create_opsgenie_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.opsgenie_notification_channel_options_v1 import OpsgenieNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class CreateOpsgenieNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateOpsgenieNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: OpsgenieNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateOpsgenieNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateOpsgenieNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": OpsgenieNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_pager_duty_notification_channel_request_v1.py b/sysdig_client/models/create_pager_duty_notification_channel_request_v1.py new file mode 100644 index 00000000..8d93f050 --- /dev/null +++ b/sysdig_client/models/create_pager_duty_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.pager_duty_notification_channel_options_v1 import PagerDutyNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class CreatePagerDutyNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreatePagerDutyNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: PagerDutyNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreatePagerDutyNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreatePagerDutyNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": PagerDutyNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_policy_request.py b/sysdig_client/models/create_policy_request.py new file mode 100644 index 00000000..5611afdf --- /dev/null +++ b/sysdig_client/models/create_policy_request.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.bundle_ref import BundleRef +from sysdig_client.models.new_stage import NewStage +from typing import Set +from typing_extensions import Self + + +class CreatePolicyRequest(BaseModel): + """ + A Policy definition + """ # noqa: E501 + + name: Annotated[str, Field(min_length=0, strict=True, max_length=1024)] = Field(description="human readable policy name") + description: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=4096)]] = Field( + default=None, description="policy description" + ) + bundles: Annotated[List[BundleRef], Field(min_length=0, max_length=1024)] = Field(description="bundles defining this policy") + stages: Optional[Annotated[List[NewStage], Field(min_length=0, max_length=1024)]] = Field( + default=None, + description="array of stages for the policy. An empty array means the policy is applied only when specifically requested by its identifier. ", + ) + __properties: ClassVar[List[str]] = ["name", "description", "bundles", "stages"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreatePolicyRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in bundles (list) + _items = [] + if self.bundles: + for _item_bundles in self.bundles: + if _item_bundles: + _items.append(_item_bundles.to_dict()) + _dict["bundles"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in stages (list) + _items = [] + if self.stages: + for _item_stages in self.stages: + if _item_stages: + _items.append(_item_stages.to_dict()) + _dict["stages"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreatePolicyRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "description": obj.get("description"), + "bundles": [BundleRef.from_dict(_item) for _item in obj["bundles"]] if obj.get("bundles") is not None else None, + "stages": [NewStage.from_dict(_item) for _item in obj["stages"]] if obj.get("stages") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_pricing_request_v1.py b/sysdig_client/models/create_pricing_request_v1.py new file mode 100644 index 00000000..7da66935 --- /dev/null +++ b/sysdig_client/models/create_pricing_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.pricing_type import PricingType +from sysdig_client.models.unit_pricing_v1 import UnitPricingV1 +from typing import Set +from typing_extensions import Self + + +class CreatePricingRequestV1(BaseModel): + """ + CreatePricingRequestV1 + """ # noqa: E501 + + type: PricingType + cluster_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the cluster. Required when `type` is `CLUSTER`.", alias="clusterName" + ) + name: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The name of the pricing configuration.") + unit_pricing: UnitPricingV1 = Field(description="The unit pricing configuration used to compute costs.", alias="unitPricing") + spot_label: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of a node label that is used to identify the node as a spot node.", alias="spotLabel" + ) + spot_label_value: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The value of the spot node label.", alias="spotLabelValue" + ) + __properties: ClassVar[List[str]] = ["type", "clusterName", "name", "unitPricing", "spotLabel", "spotLabelValue"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreatePricingRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of unit_pricing + if self.unit_pricing: + _dict["unitPricing"] = self.unit_pricing.to_dict() + # set to None if cluster_name (nullable) is None + # and model_fields_set contains the field + if self.cluster_name is None and "cluster_name" in self.model_fields_set: + _dict["clusterName"] = None + + # set to None if spot_label (nullable) is None + # and model_fields_set contains the field + if self.spot_label is None and "spot_label" in self.model_fields_set: + _dict["spotLabel"] = None + + # set to None if spot_label_value (nullable) is None + # and model_fields_set contains the field + if self.spot_label_value is None and "spot_label_value" in self.model_fields_set: + _dict["spotLabelValue"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreatePricingRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "clusterName": obj.get("clusterName"), + "name": obj.get("name"), + "unitPricing": UnitPricingV1.from_dict(obj["unitPricing"]) if obj.get("unitPricing") is not None else None, + "spotLabel": obj.get("spotLabel"), + "spotLabelValue": obj.get("spotLabelValue"), + } + ) + return _obj diff --git a/sysdig_client/models/create_prometheus_alert_manager_notification_channel_request_v1.py b/sysdig_client/models/create_prometheus_alert_manager_notification_channel_request_v1.py new file mode 100644 index 00000000..69d6e83a --- /dev/null +++ b/sysdig_client/models/create_prometheus_alert_manager_notification_channel_request_v1.py @@ -0,0 +1,126 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.prometheus_alert_manager_notification_channel_options_v1 import ( + PrometheusAlertManagerNotificationChannelOptionsV1, +) +from typing import Set +from typing_extensions import Self + + +class CreatePrometheusAlertManagerNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreatePrometheusAlertManagerNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: PrometheusAlertManagerNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreatePrometheusAlertManagerNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreatePrometheusAlertManagerNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": PrometheusAlertManagerNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_qradar_integration_request.py b/sysdig_client/models/create_qradar_integration_request.py new file mode 100644 index 00000000..4819c957 --- /dev/null +++ b/sysdig_client/models/create_qradar_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_qradar import BaseConnectionInfoQradar +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateQradarIntegrationRequest(BaseModel): + """ + Create IBM QRadar Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: BaseConnectionInfoQradar = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateQradarIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateQradarIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": BaseConnectionInfoQradar.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_risk_accepted_request.py b/sysdig_client/models/create_risk_accepted_request.py new file mode 100644 index 00000000..29140c77 --- /dev/null +++ b/sysdig_client/models/create_risk_accepted_request.py @@ -0,0 +1,170 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_risk_accepted_request_all_of_context import CreateRiskAcceptedRequestAllOfContext +from typing import Set +from typing_extensions import Self + + +class CreateRiskAcceptedRequest(BaseModel): + """ + CreateRiskAcceptedRequest + """ # noqa: E501 + + entity_value: Annotated[str, Field(min_length=1, strict=True, max_length=512)] = Field( + description="A value to match with the entityType", alias="entityValue" + ) + expiration_date: Optional[date] = Field( + default=None, description="Date when the accepted risk will expire (in YYYY-MM-DD format)", alias="expirationDate" + ) + reason: StrictStr = Field(description="Reason for acceptance") + description: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Description of why the accepted risk was created" + ) + stages: Optional[Annotated[List[StrictStr], Field(min_length=0, max_length=3)]] = Field( + default=None, + description="List of stages where the risk acceptance is applied, empty list enables risk acceptance for all the stages", + ) + entity_type: StrictStr = Field(description="The entity where the Accepted Risk will be applied.", alias="entityType") + context: CreateRiskAcceptedRequestAllOfContext + __properties: ClassVar[List[str]] = [ + "entityValue", + "expirationDate", + "reason", + "description", + "stages", + "entityType", + "context", + ] + + @field_validator("reason") + def reason_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["RiskTransferred", "RiskAvoided", "RiskMitigated", "RiskOwned", "RiskNotRelevant", "Custom"]): + raise ValueError( + "must be one of enum values ('RiskTransferred', 'RiskAvoided', 'RiskMitigated', 'RiskOwned', 'RiskNotRelevant', 'Custom')" + ) + return value + + @field_validator("stages") + def stages_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + for i in value: + if i not in set(["runtime", "pipeline", "registry"]): + raise ValueError("each list item must be one of ('runtime', 'pipeline', 'registry')") + return value + + @field_validator("entity_type") + def entity_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set( + [ + "imageName", + "imagePrefix", + "imageSuffix", + "vulnerability", + "hostName", + "hostNameContains", + "imageNameContains", + "policyRule", + "package", + ] + ): + raise ValueError( + "must be one of enum values ('imageName', 'imagePrefix', 'imageSuffix', 'vulnerability', 'hostName', 'hostNameContains', 'imageNameContains', 'policyRule', 'package')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateRiskAcceptedRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of context + if self.context: + _dict["context"] = self.context.to_dict() + # set to None if stages (nullable) is None + # and model_fields_set contains the field + if self.stages is None and "stages" in self.model_fields_set: + _dict["stages"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateRiskAcceptedRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "entityValue": obj.get("entityValue"), + "expirationDate": obj.get("expirationDate"), + "reason": obj.get("reason"), + "description": obj.get("description"), + "stages": obj.get("stages"), + "entityType": obj.get("entityType"), + "context": CreateRiskAcceptedRequestAllOfContext.from_dict(obj["context"]) + if obj.get("context") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_risk_accepted_request_all_of_context.py b/sysdig_client/models/create_risk_accepted_request_all_of_context.py new file mode 100644 index 00000000..56f15b3b --- /dev/null +++ b/sysdig_client/models/create_risk_accepted_request_all_of_context.py @@ -0,0 +1,418 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.host_name import HostName +from sysdig_client.models.host_name_contains import HostNameContains +from sysdig_client.models.image_name import ImageName +from sysdig_client.models.image_name_contains import ImageNameContains +from sysdig_client.models.image_prefix import ImagePrefix +from sysdig_client.models.image_suffix import ImageSuffix +from sysdig_client.models.package_name import PackageName +from sysdig_client.models.package_name_version import PackageNameVersion +from sysdig_client.models.package_path import PackagePath +from sysdig_client.models.package_path_version import PackagePathVersion +from sysdig_client.models.package_version import PackageVersion +from typing import Union, Set +from typing_extensions import Literal, Self + +CREATERISKACCEPTEDREQUESTALLOFCONTEXT_ONE_OF_SCHEMAS = [ + "List[HostNameContains]", + "List[HostName]", + "List[ImageNameContains]", + "List[ImageName]", + "List[ImagePrefix]", + "List[ImageSuffix]", + "List[PackageNameVersion]", + "List[PackageName]", + "List[PackagePathVersion]", + "List[PackagePath]", + "List[PackageVersion]", + "List[object]", +] + + +class CreateRiskAcceptedRequestAllOfContext(BaseModel): + """ + If entityType is not `vulnerability`, `policyRule` or `package`, you should use `Empty Matcher` in the context. + """ + + # data type: List[object] + oneof_schema_1_validator: Optional[Annotated[List[Dict[str, Any]], Field(max_length=0)]] = Field( + default=None, description="To be used when `entityType` is not `vulnerability` or `policyRule`." + ) + # data type: List[ImageName] + oneof_schema_2_validator: Optional[Annotated[List[ImageName], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[ImageSuffix] + oneof_schema_3_validator: Optional[Annotated[List[ImageSuffix], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[ImagePrefix] + oneof_schema_4_validator: Optional[Annotated[List[ImagePrefix], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[ImageNameContains] + oneof_schema_5_validator: Optional[Annotated[List[ImageNameContains], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackageName] + oneof_schema_6_validator: Optional[Annotated[List[PackageName], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackageNameVersion] + oneof_schema_7_validator: Optional[Annotated[List[PackageNameVersion], Field(min_length=2, max_length=2)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[HostName] + oneof_schema_8_validator: Optional[Annotated[List[HostName], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context host name" + ) + # data type: List[HostNameContains] + oneof_schema_9_validator: Optional[Annotated[List[HostNameContains], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackagePath] + oneof_schema_10_validator: Optional[Annotated[List[PackagePath], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackageVersion] + oneof_schema_11_validator: Optional[Annotated[List[PackageVersion], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackagePathVersion] + oneof_schema_12_validator: Optional[Annotated[List[PackagePathVersion], Field(min_length=2, max_length=2)]] = Field( + default=None, description="Context to apply" + ) + actual_instance: Optional[ + Union[ + List[HostNameContains], + List[HostName], + List[ImageNameContains], + List[ImageName], + List[ImagePrefix], + List[ImageSuffix], + List[PackageNameVersion], + List[PackageName], + List[PackagePathVersion], + List[PackagePath], + List[PackageVersion], + List[object], + ] + ] = None + one_of_schemas: Set[str] = { + "List[HostNameContains]", + "List[HostName]", + "List[ImageNameContains]", + "List[ImageName]", + "List[ImagePrefix]", + "List[ImageSuffix]", + "List[PackageNameVersion]", + "List[PackageName]", + "List[PackagePathVersion]", + "List[PackagePath]", + "List[PackageVersion]", + "List[object]", + } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = CreateRiskAcceptedRequestAllOfContext.model_construct() + error_messages = [] + match = 0 + # validate data type: List[object] + try: + instance.oneof_schema_1_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[ImageName] + try: + instance.oneof_schema_2_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[ImageSuffix] + try: + instance.oneof_schema_3_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[ImagePrefix] + try: + instance.oneof_schema_4_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[ImageNameContains] + try: + instance.oneof_schema_5_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackageName] + try: + instance.oneof_schema_6_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackageNameVersion] + try: + instance.oneof_schema_7_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[HostName] + try: + instance.oneof_schema_8_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[HostNameContains] + try: + instance.oneof_schema_9_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackagePath] + try: + instance.oneof_schema_10_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackageVersion] + try: + instance.oneof_schema_11_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackagePathVersion] + try: + instance.oneof_schema_12_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in CreateRiskAcceptedRequestAllOfContext with oneOf schemas: List[HostNameContains], List[HostName], List[ImageNameContains], List[ImageName], List[ImagePrefix], List[ImageSuffix], List[PackageNameVersion], List[PackageName], List[PackagePathVersion], List[PackagePath], List[PackageVersion], List[object]. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in CreateRiskAcceptedRequestAllOfContext with oneOf schemas: List[HostNameContains], List[HostName], List[ImageNameContains], List[ImageName], List[ImagePrefix], List[ImageSuffix], List[PackageNameVersion], List[PackageName], List[PackagePathVersion], List[PackagePath], List[PackageVersion], List[object]. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into List[object] + try: + # validation + instance.oneof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_1_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[ImageName] + try: + # validation + instance.oneof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_2_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[ImageSuffix] + try: + # validation + instance.oneof_schema_3_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_3_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[ImagePrefix] + try: + # validation + instance.oneof_schema_4_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_4_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[ImageNameContains] + try: + # validation + instance.oneof_schema_5_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_5_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackageName] + try: + # validation + instance.oneof_schema_6_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_6_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackageNameVersion] + try: + # validation + instance.oneof_schema_7_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_7_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[HostName] + try: + # validation + instance.oneof_schema_8_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_8_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[HostNameContains] + try: + # validation + instance.oneof_schema_9_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_9_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackagePath] + try: + # validation + instance.oneof_schema_10_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_10_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackageVersion] + try: + # validation + instance.oneof_schema_11_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_11_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackagePathVersion] + try: + # validation + instance.oneof_schema_12_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_12_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into CreateRiskAcceptedRequestAllOfContext with oneOf schemas: List[HostNameContains], List[HostName], List[ImageNameContains], List[ImageName], List[ImagePrefix], List[ImageSuffix], List[PackageNameVersion], List[PackageName], List[PackagePathVersion], List[PackagePath], List[PackageVersion], List[object]. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into CreateRiskAcceptedRequestAllOfContext with oneOf schemas: List[HostNameContains], List[HostName], List[ImageNameContains], List[ImageName], List[ImagePrefix], List[ImageSuffix], List[PackageNameVersion], List[PackageName], List[PackagePathVersion], List[PackagePath], List[PackageVersion], List[object]. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[ + Union[ + Dict[str, Any], + List[HostNameContains], + List[HostName], + List[ImageNameContains], + List[ImageName], + List[ImagePrefix], + List[ImageSuffix], + List[PackageNameVersion], + List[PackageName], + List[PackagePathVersion], + List[PackagePath], + List[PackageVersion], + List[object], + ] + ]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/create_service_account_request_v1.py b/sysdig_client/models/create_service_account_request_v1.py new file mode 100644 index 00000000..3343e0db --- /dev/null +++ b/sysdig_client/models/create_service_account_request_v1.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateServiceAccountRequestV1(BaseModel): + """ + CreateServiceAccountRequestV1 + """ # noqa: E501 + + name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The display name of the Service Account." + ) + expiration_date: Optional[Annotated[int, Field(le=9223372036854775000, strict=True, ge=0)]] = Field( + default=None, + description="Time when the Service Account API key expires, | in number of milliseconds since January 1, 1970, 00:00:00 GMT", + alias="expirationDate", + ) + __properties: ClassVar[List[str]] = ["name", "expirationDate"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateServiceAccountRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateServiceAccountRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"name": obj.get("name"), "expirationDate": obj.get("expirationDate")}) + return _obj diff --git a/sysdig_client/models/create_service_accounts_notification_settings_request_v1.py b/sysdig_client/models/create_service_accounts_notification_settings_request_v1.py new file mode 100644 index 00000000..49e38e8b --- /dev/null +++ b/sysdig_client/models/create_service_accounts_notification_settings_request_v1.py @@ -0,0 +1,99 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateServiceAccountsNotificationSettingsRequestV1(BaseModel): + """ + CreateServiceAccountsNotificationSettingsRequestV1 + """ # noqa: E501 + + is_enabled: StrictBool = Field(description="Whether the notification settings are enabled or not.", alias="isEnabled") + notification_channel_ids: Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=10)] = Field( + description="The list of notification channel IDs to which the notifications are to be sent.\\ \\ Supported types are **EMAIL** and **SLACK**. ", + alias="notificationChannelIds", + ) + days_before_expiry: Optional[Annotated[List[Annotated[int, Field(le=60, strict=True, ge=1)]], Field(max_length=5)]] = Field( + default=None, + description="The number of days before the expiry of the service account when the notifications are to be sent.", + alias="daysBeforeExpiry", + ) + __properties: ClassVar[List[str]] = ["isEnabled", "notificationChannelIds", "daysBeforeExpiry"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateServiceAccountsNotificationSettingsRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateServiceAccountsNotificationSettingsRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "isEnabled": obj.get("isEnabled"), + "notificationChannelIds": obj.get("notificationChannelIds"), + "daysBeforeExpiry": obj.get("daysBeforeExpiry"), + } + ) + return _obj diff --git a/sysdig_client/models/create_slack_notification_channel_request_v1.py b/sysdig_client/models/create_slack_notification_channel_request_v1.py new file mode 100644 index 00000000..48613289 --- /dev/null +++ b/sysdig_client/models/create_slack_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.slack_create_notification_channel_options_v1 import SlackCreateNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class CreateSlackNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateSlackNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: SlackCreateNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateSlackNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateSlackNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": SlackCreateNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_sns_notification_channel_request_v1.py b/sysdig_client/models/create_sns_notification_channel_request_v1.py new file mode 100644 index 00000000..b6dd9e23 --- /dev/null +++ b/sysdig_client/models/create_sns_notification_channel_request_v1.py @@ -0,0 +1,122 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.sns_notification_channel_options_v1 import SnsNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class CreateSnsNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateSnsNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: SnsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateSnsNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateSnsNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": SnsNotificationChannelOptionsV1.from_dict(obj["options"]) if obj.get("options") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_splunk_integration_request.py b/sysdig_client/models/create_splunk_integration_request.py new file mode 100644 index 00000000..98fa8f65 --- /dev/null +++ b/sysdig_client/models/create_splunk_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.splunk_create_connection_info import SplunkCreateConnectionInfo +from typing import Set +from typing_extensions import Self + + +class CreateSplunkIntegrationRequest(BaseModel): + """ + Save Splunk Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: SplunkCreateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateSplunkIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateSplunkIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": SplunkCreateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_sso_settings_request_v1.py b/sysdig_client/models/create_sso_settings_request_v1.py new file mode 100644 index 00000000..41be2d4f --- /dev/null +++ b/sysdig_client/models/create_sso_settings_request_v1.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.product import Product +from sysdig_client.models.sso_settings_create_request_base_v1 import SsoSettingsCreateRequestBaseV1 +from typing import Set +from typing_extensions import Self + + +class CreateSsoSettingsRequestV1(BaseModel): + """ + CreateSsoSettingsRequestV1 + """ # noqa: E501 + + product: Product = Field( + description="The product to which SSO settings is applied to. SSO settings are configured per specific product." + ) + is_active: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the SSO settings is active.", alias="isActive" + ) + create_user_on_login: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the user will be created automatically if not found in the system.", + alias="createUserOnLogin", + ) + is_password_login_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the user will be able to login with password. Deprecated: use the API endpoint `/platform/v1/global-sso-settings` for this functionality. This is now a global setting: if this flag is defined here and this SSO setting is set to be active, the setting will be applied at global level.", + alias="isPasswordLoginEnabled", + ) + is_single_logout_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the single logout support is enabled.", alias="isSingleLogoutEnabled" + ) + is_group_mapping_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if group mapping support is enabled.", alias="isGroupMappingEnabled" + ) + group_mapping_attribute_name: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The group mapping attribute name.", alias="groupMappingAttributeName" + ) + config: SsoSettingsCreateRequestBaseV1 + __properties: ClassVar[List[str]] = [ + "product", + "isActive", + "createUserOnLogin", + "isPasswordLoginEnabled", + "isSingleLogoutEnabled", + "isGroupMappingEnabled", + "groupMappingAttributeName", + "config", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateSsoSettingsRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict["config"] = self.config.to_dict() + # set to None if group_mapping_attribute_name (nullable) is None + # and model_fields_set contains the field + if self.group_mapping_attribute_name is None and "group_mapping_attribute_name" in self.model_fields_set: + _dict["groupMappingAttributeName"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateSsoSettingsRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "product": obj.get("product"), + "isActive": obj.get("isActive"), + "createUserOnLogin": obj.get("createUserOnLogin"), + "isPasswordLoginEnabled": obj.get("isPasswordLoginEnabled"), + "isSingleLogoutEnabled": obj.get("isSingleLogoutEnabled"), + "isGroupMappingEnabled": obj.get("isGroupMappingEnabled"), + "groupMappingAttributeName": obj.get("groupMappingAttributeName"), + "config": SsoSettingsCreateRequestBaseV1.from_dict(obj["config"]) if obj.get("config") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_syslog_integration_request.py b/sysdig_client/models/create_syslog_integration_request.py new file mode 100644 index 00000000..bcab3c5f --- /dev/null +++ b/sysdig_client/models/create_syslog_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_syslog import BaseConnectionInfoSyslog +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateSyslogIntegrationRequest(BaseModel): + """ + Create Syslog Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: BaseConnectionInfoSyslog = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateSyslogIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateSyslogIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": BaseConnectionInfoSyslog.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_team_email_notification_channel_request_v1.py b/sysdig_client/models/create_team_email_notification_channel_request_v1.py new file mode 100644 index 00000000..62287ebd --- /dev/null +++ b/sysdig_client/models/create_team_email_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.team_email_notification_channel_options_v1 import TeamEmailNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class CreateTeamEmailNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateTeamEmailNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: TeamEmailNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateTeamEmailNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateTeamEmailNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": TeamEmailNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_team_request_v1.py b/sysdig_client/models/create_team_request_v1.py new file mode 100644 index 00000000..636c6fae --- /dev/null +++ b/sysdig_client/models/create_team_request_v1.py @@ -0,0 +1,169 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.additional_team_permissions_v1 import AdditionalTeamPermissionsV1 +from sysdig_client.models.product import Product +from sysdig_client.models.scope_v1 import ScopeV1 +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from sysdig_client.models.ui_settings_v1 import UiSettingsV1 +from typing import Set +from typing_extensions import Self + + +class CreateTeamRequestV1(BaseModel): + """ + CreateTeamRequestV1 + """ # noqa: E501 + + name: Annotated[str, Field(min_length=1, strict=True, max_length=256)] = Field( + description="The name of the team. It must be unique." + ) + description: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="A longer description of the team explaining what is it used for." + ) + is_default_team: Optional[StrictBool] = Field( + default=None, + description="Specifies if the team is the default team. The default team is used to automatically assign new users to a team.", + alias="isDefaultTeam", + ) + standard_team_role: Optional[TeamRoleV1] = Field( + default=None, + description="The standard team role assigned by default to users added to this team. **Mutually exclusive with customTeamRoleId**.\\ \\ *ROLE_TEAM_SERVICE_MANAGER is only supported in Secure.* ", + alias="standardTeamRole", + ) + custom_team_role_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, + description="The custom team role assigned by default to users added to this team. **Mutually exclusive with standardTeamRoleId**. ", + alias="customTeamRoleId", + ) + product: Product = Field( + description="The product to which the team is assigned to. Teams can only be part of a single product at a time." + ) + ui_settings: Optional[UiSettingsV1] = Field(default=None, alias="uiSettings") + is_all_zones: Optional[StrictBool] = Field( + default=None, + description="**True** if the users that are members of this team have access to all zones. **Mutually exclusive with zoneIds**.\\ \\ _Only supported in Secure features._ ", + alias="isAllZones", + ) + zone_ids: Optional[Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=20)]] = Field( + default=None, + description="The list of zones that users assigned to this team will have access to. **Mutually exclusive with allZones**.\\ \\ _Only supported in Secure features._ ", + alias="zoneIds", + ) + scopes: Optional[Annotated[List[ScopeV1], Field(max_length=512)]] = Field( + default=None, + description="Scopes is a list of different scope types and filter values that will be applied to resources when accessed through the team. ", + ) + additional_team_permissions: Optional[AdditionalTeamPermissionsV1] = Field(default=None, alias="additionalTeamPermissions") + __properties: ClassVar[List[str]] = [ + "name", + "description", + "isDefaultTeam", + "standardTeamRole", + "customTeamRoleId", + "product", + "uiSettings", + "isAllZones", + "zoneIds", + "scopes", + "additionalTeamPermissions", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateTeamRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of ui_settings + if self.ui_settings: + _dict["uiSettings"] = self.ui_settings.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in scopes (list) + _items = [] + if self.scopes: + for _item_scopes in self.scopes: + if _item_scopes: + _items.append(_item_scopes.to_dict()) + _dict["scopes"] = _items + # override the default output from pydantic by calling `to_dict()` of additional_team_permissions + if self.additional_team_permissions: + _dict["additionalTeamPermissions"] = self.additional_team_permissions.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateTeamRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "description": obj.get("description"), + "isDefaultTeam": obj.get("isDefaultTeam"), + "standardTeamRole": obj.get("standardTeamRole"), + "customTeamRoleId": obj.get("customTeamRoleId"), + "product": obj.get("product"), + "uiSettings": UiSettingsV1.from_dict(obj["uiSettings"]) if obj.get("uiSettings") is not None else None, + "isAllZones": obj.get("isAllZones"), + "zoneIds": obj.get("zoneIds"), + "scopes": [ScopeV1.from_dict(_item) for _item in obj["scopes"]] if obj.get("scopes") is not None else None, + "additionalTeamPermissions": AdditionalTeamPermissionsV1.from_dict(obj["additionalTeamPermissions"]) + if obj.get("additionalTeamPermissions") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_team_service_account_request_v1.py b/sysdig_client/models/create_team_service_account_request_v1.py new file mode 100644 index 00000000..d4f36a44 --- /dev/null +++ b/sysdig_client/models/create_team_service_account_request_v1.py @@ -0,0 +1,95 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateTeamServiceAccountRequestV1(BaseModel): + """ + CreateTeamServiceAccountRequestV1 + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The display name of the Service Account.") + expiration_date: Optional[Annotated[int, Field(le=9223372036854775000, strict=True, ge=0)]] = Field( + default=None, + description="Time when the Service Account API key expires, | in number of milliseconds since January 1, 1970, 00:00:00 GMT", + alias="expirationDate", + ) + team_role: Annotated[str, Field(strict=True, max_length=128)] = Field( + description="Team role to be assigned to the team service account. | It can be a string for predefined roles or an id of a custom role.", + alias="teamRole", + ) + __properties: ClassVar[List[str]] = ["name", "expirationDate", "teamRole"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateTeamServiceAccountRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateTeamServiceAccountRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"name": obj.get("name"), "expirationDate": obj.get("expirationDate"), "teamRole": obj.get("teamRole")} + ) + return _obj diff --git a/sysdig_client/models/create_user_request_v1.py b/sysdig_client/models/create_user_request_v1.py new file mode 100644 index 00000000..e4ad04d2 --- /dev/null +++ b/sysdig_client/models/create_user_request_v1.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.product import Product +from typing import Set +from typing_extensions import Self + + +class CreateUserRequestV1(BaseModel): + """ + Request to create the User + """ # noqa: E501 + + email: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="The email address of the user. If the activation flow is set, this address will be used to send the activation email. " + ) + first_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the user. ", alias="firstName" + ) + last_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The surname of the user. ", alias="lastName" + ) + is_admin: Optional[StrictBool] = Field( + default=False, description="**True** if the user has Administration permissions. ", alias="isAdmin" + ) + bypass_sso_enforcement: Optional[StrictBool] = Field( + default=False, + description="When **True**, the user can bypass SSO enforcement. **Warning:** This allows the user to log in without SSO even when username and password login is disabled. ", + alias="bypassSsoEnforcement", + ) + products: Optional[Annotated[List[Product], Field(max_length=2)]] = Field( + default=None, description="The user will be added to the default teams specified by this field." + ) + __properties: ClassVar[List[str]] = ["email", "firstName", "lastName", "isAdmin", "bypassSsoEnforcement", "products"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateUserRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateUserRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "email": obj.get("email"), + "firstName": obj.get("firstName"), + "lastName": obj.get("lastName"), + "isAdmin": obj.get("isAdmin") if obj.get("isAdmin") is not None else False, + "bypassSsoEnforcement": obj.get("bypassSsoEnforcement") if obj.get("bypassSsoEnforcement") is not None else False, + "products": obj.get("products"), + } + ) + return _obj diff --git a/sysdig_client/models/create_victor_ops_notification_channel_request_v1.py b/sysdig_client/models/create_victor_ops_notification_channel_request_v1.py new file mode 100644 index 00000000..c1e2dc9a --- /dev/null +++ b/sysdig_client/models/create_victor_ops_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.victor_ops_notification_channel_options_v1 import VictorOpsNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class CreateVictorOpsNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateVictorOpsNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: VictorOpsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateVictorOpsNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateVictorOpsNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": VictorOpsNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_webhook_integration_request.py b/sysdig_client/models/create_webhook_integration_request.py new file mode 100644 index 00000000..7b491bf1 --- /dev/null +++ b/sysdig_client/models/create_webhook_integration_request.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_webhook_integration_request_all_of_connection_info import ( + CreateWebhookIntegrationRequestAllOfConnectionInfo, +) +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class CreateWebhookIntegrationRequest(BaseModel): + """ + CreateWebhookIntegrationRequest + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: CreateWebhookIntegrationRequestAllOfConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateWebhookIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateWebhookIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": CreateWebhookIntegrationRequestAllOfConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_webhook_integration_request_all_of_connection_info.py b/sysdig_client/models/create_webhook_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..1392bdc9 --- /dev/null +++ b/sysdig_client/models/create_webhook_integration_request_all_of_connection_info.py @@ -0,0 +1,141 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Optional +from sysdig_client.models.authenticated_connection_info_webhook import AuthenticatedConnectionInfoWebhook +from sysdig_client.models.base_connection_info_webhook import BaseConnectionInfoWebhook +from typing import Union, Any, List, Set, TYPE_CHECKING, Dict +from typing_extensions import Literal, Self + +CREATEWEBHOOKINTEGRATIONREQUESTALLOFCONNECTIONINFO_ANY_OF_SCHEMAS = [ + "AuthenticatedConnectionInfoWebhook", + "BaseConnectionInfoWebhook", +] + + +class CreateWebhookIntegrationRequestAllOfConnectionInfo(BaseModel): + """ + CreateWebhookIntegrationRequestAllOfConnectionInfo + """ + + # data type: BaseConnectionInfoWebhook + anyof_schema_1_validator: Optional[BaseConnectionInfoWebhook] = None + # data type: AuthenticatedConnectionInfoWebhook + anyof_schema_2_validator: Optional[AuthenticatedConnectionInfoWebhook] = None + if TYPE_CHECKING: + actual_instance: Optional[Union[AuthenticatedConnectionInfoWebhook, BaseConnectionInfoWebhook]] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = {"AuthenticatedConnectionInfoWebhook", "BaseConnectionInfoWebhook"} + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_anyof(cls, v): + instance = CreateWebhookIntegrationRequestAllOfConnectionInfo.model_construct() + error_messages = [] + # validate data type: BaseConnectionInfoWebhook + if not isinstance(v, BaseConnectionInfoWebhook): + error_messages.append(f"Error! Input type `{type(v)}` is not `BaseConnectionInfoWebhook`") + else: + return v + + # validate data type: AuthenticatedConnectionInfoWebhook + if not isinstance(v, AuthenticatedConnectionInfoWebhook): + error_messages.append(f"Error! Input type `{type(v)}` is not `AuthenticatedConnectionInfoWebhook`") + else: + return v + + if error_messages: + # no match + raise ValueError( + "No match found when setting the actual_instance in CreateWebhookIntegrationRequestAllOfConnectionInfo with anyOf schemas: AuthenticatedConnectionInfoWebhook, BaseConnectionInfoWebhook. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # anyof_schema_1_validator: Optional[BaseConnectionInfoWebhook] = None + try: + instance.actual_instance = BaseConnectionInfoWebhook.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_2_validator: Optional[AuthenticatedConnectionInfoWebhook] = None + try: + instance.actual_instance = AuthenticatedConnectionInfoWebhook.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError( + "No match found when deserializing the JSON string into CreateWebhookIntegrationRequestAllOfConnectionInfo with anyOf schemas: AuthenticatedConnectionInfoWebhook, BaseConnectionInfoWebhook. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], AuthenticatedConnectionInfoWebhook, BaseConnectionInfoWebhook]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/create_webhook_notification_channel_request_v1.py b/sysdig_client/models/create_webhook_notification_channel_request_v1.py new file mode 100644 index 00000000..85024da2 --- /dev/null +++ b/sysdig_client/models/create_webhook_notification_channel_request_v1.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.webhook_notification_channel_options_v1 import WebhookNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class CreateWebhookNotificationChannelRequestV1(CreateNotificationChannelRequestV1): + """ + CreateWebhookNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: WebhookNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled", "type", "options"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateWebhookNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateWebhookNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "options": WebhookNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_zone_request_v1.py b/sysdig_client/models/create_zone_request_v1.py new file mode 100644 index 00000000..cd283eba --- /dev/null +++ b/sysdig_client/models/create_zone_request_v1.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.create_zone_scope_request_v1 import CreateZoneScopeRequestV1 +from typing import Set +from typing_extensions import Self + + +class CreateZoneRequestV1(BaseModel): + """ + CreateZoneRequestV1 + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The name of the Zone. It must be unique") + description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="The Zone description. It can be useful for adding extra information" + ) + scopes: Annotated[List[CreateZoneScopeRequestV1], Field(min_length=1, max_length=512)] = Field( + description="Zone attached scopes" + ) + __properties: ClassVar[List[str]] = ["name", "description", "scopes"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateZoneRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in scopes (list) + _items = [] + if self.scopes: + for _item_scopes in self.scopes: + if _item_scopes: + _items.append(_item_scopes.to_dict()) + _dict["scopes"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateZoneRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "description": obj.get("description"), + "scopes": [CreateZoneScopeRequestV1.from_dict(_item) for _item in obj["scopes"]] + if obj.get("scopes") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/create_zone_scope_request_v1.py b/sysdig_client/models/create_zone_scope_request_v1.py new file mode 100644 index 00000000..261174fd --- /dev/null +++ b/sysdig_client/models/create_zone_scope_request_v1.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CreateZoneScopeRequestV1(BaseModel): + """ + CreateZoneScopeRequestV1 + """ # noqa: E501 + + target_type: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="The target type of the Scope", alias="targetType" + ) + rules: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="Scoping rules to be applied" + ) + __properties: ClassVar[List[str]] = ["targetType", "rules"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateZoneScopeRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateZoneScopeRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"targetType": obj.get("targetType"), "rules": obj.get("rules")}) + return _obj diff --git a/sysdig_client/models/custom_job_v1.py b/sysdig_client/models/custom_job_v1.py new file mode 100644 index 00000000..b984dabf --- /dev/null +++ b/sysdig_client/models/custom_job_v1.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CustomJobV1(BaseModel): + """ + Custom Prometheus job name and enablement status + """ # noqa: E501 + + name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field(default=None, description="Job name") + enabled: Optional[StrictBool] = Field(default=None, description="Enablement status") + enablement_by_cluster: Optional[Dict[str, StrictBool]] = Field( + default=None, description="Enablement overrides by cluster", alias="enablementByCluster" + ) + __properties: ClassVar[List[str]] = ["name", "enabled", "enablementByCluster"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CustomJobV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CustomJobV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"name": obj.get("name"), "enabled": obj.get("enabled"), "enablementByCluster": obj.get("enablementByCluster")} + ) + return _obj diff --git a/sysdig_client/models/custom_jobs_enablement_v1.py b/sysdig_client/models/custom_jobs_enablement_v1.py new file mode 100644 index 00000000..d67742ba --- /dev/null +++ b/sysdig_client/models/custom_jobs_enablement_v1.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class CustomJobsEnablementV1(BaseModel): + """ + The enablement status of a custom Prometheus job + """ # noqa: E501 + + enabled: StrictBool = Field(description="Enablement status") + enablement_by_cluster: Optional[Dict[str, StrictBool]] = Field( + default=None, description="Enablement overrides by cluster", alias="enablementByCluster" + ) + __properties: ClassVar[List[str]] = ["enabled", "enablementByCluster"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CustomJobsEnablementV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CustomJobsEnablementV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"enabled": obj.get("enabled"), "enablementByCluster": obj.get("enablementByCluster")}) + return _obj diff --git a/sysdig_client/models/custom_monitor_event.py b/sysdig_client/models/custom_monitor_event.py new file mode 100644 index 00000000..f8fa8fc3 --- /dev/null +++ b/sysdig_client/models/custom_monitor_event.py @@ -0,0 +1,147 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.monitor_event import MonitorEvent +from sysdig_client.models.monitor_scope_label import MonitorScopeLabel +from typing import Set +from typing_extensions import Self + + +class CustomMonitorEvent(MonitorEvent): + """ + Monitor Custom Event + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=32)] = Field(description="The event id.") + created_on: datetime = Field(description="Timestamp when the event was created in the system", alias="createdOn") + occurred_at: datetime = Field( + description="Event logical timestamp (when the event occurred). For alert events, this is the time when the alert was triggered.", + alias="occurredAt", + ) + name: Annotated[str, Field(strict=True, max_length=64)] = Field(description="The event name") + description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="Description of the event." + ) + severity: Annotated[int, Field(le=7, strict=True, ge=0)] = Field( + description="The event severity. A lower value means more severe, with 0 being the highest severity and 7 being the lowest." + ) + scope_labels: Optional[Annotated[List[MonitorScopeLabel], Field(min_length=1, max_length=1024)]] = Field( + default=None, + description="List of scope labels, including those from initial scope and those coming from the enrichment process.", + alias="scopeLabels", + ) + scope: Optional[Annotated[str, Field(strict=True, max_length=50000)]] = Field(default=None, description="Initial event scope") + source: Optional[Annotated[str, Field(strict=True, max_length=32)]] = Field( + default=None, + description="The event source. Well known sources include kubernetes, docker, containerd. User created events have a value of api for this field, unless specifically overwritten at creation time", + ) + __properties: ClassVar[List[str]] = [ + "id", + "createdOn", + "occurredAt", + "name", + "description", + "severity", + "scopeLabels", + "scope", + "type", + "source", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CustomMonitorEvent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in scope_labels (list) + _items = [] + if self.scope_labels: + for _item_scope_labels in self.scope_labels: + if _item_scope_labels: + _items.append(_item_scope_labels.to_dict()) + _dict["scopeLabels"] = _items + # set to None if scope_labels (nullable) is None + # and model_fields_set contains the field + if self.scope_labels is None and "scope_labels" in self.model_fields_set: + _dict["scopeLabels"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CustomMonitorEvent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "createdOn": obj.get("createdOn"), + "occurredAt": obj.get("occurredAt"), + "name": obj.get("name"), + "description": obj.get("description"), + "severity": obj.get("severity"), + "scopeLabels": [MonitorScopeLabel.from_dict(_item) for _item in obj["scopeLabels"]] + if obj.get("scopeLabels") is not None + else None, + "scope": obj.get("scope"), + "type": obj.get("type"), + "source": obj.get("source"), + } + ) + return _obj diff --git a/sysdig_client/models/custom_webhook_notification_channel_options_v1.py b/sysdig_client/models/custom_webhook_notification_channel_options_v1.py new file mode 100644 index 00000000..5732c3b9 --- /dev/null +++ b/sysdig_client/models/custom_webhook_notification_channel_options_v1.py @@ -0,0 +1,129 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CustomWebhookNotificationChannelOptionsV1(BaseModel): + """ + The custom webhook notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + url: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The url to which the request should be sent") + template: Annotated[str, Field(strict=True, max_length=16384)] = Field( + description="The custom template used by this webhook, currently a JSON potentially enriched by Sysdig Templating Language" + ) + http_method: Optional[StrictStr] = Field( + default="POST", description="The HTTP method to use when doing the request to the target url", alias="httpMethod" + ) + is_allows_insecure_connections: Optional[StrictBool] = Field( + default=None, + description="Specifies if the channel allows insecure connections (e.g. plain http, self-signed https)", + alias="isAllowsInsecureConnections", + ) + additional_headers: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=255)]]] = Field( + default=None, description="Additional headers to send as part of the request to the target url", alias="additionalHeaders" + ) + __properties: ClassVar[List[str]] = [ + "hasHidingOfSensitiveInfo", + "url", + "template", + "httpMethod", + "isAllowsInsecureConnections", + "additionalHeaders", + ] + + @field_validator("http_method") + def http_method_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["GET", "POST", "PUT", "DELETE", "PATCH"]): + raise ValueError("must be one of enum values ('GET', 'POST', 'PUT', 'DELETE', 'PATCH')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CustomWebhookNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CustomWebhookNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "url": obj.get("url"), + "template": obj.get("template"), + "httpMethod": obj.get("httpMethod") if obj.get("httpMethod") is not None else "POST", + "isAllowsInsecureConnections": obj.get("isAllowsInsecureConnections"), + "additionalHeaders": obj.get("additionalHeaders"), + } + ) + return _obj diff --git a/sysdig_client/models/custom_webhook_notification_channel_response_v1.py b/sysdig_client/models/custom_webhook_notification_channel_response_v1.py new file mode 100644 index 00000000..9cc2076b --- /dev/null +++ b/sysdig_client/models/custom_webhook_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.custom_webhook_notification_channel_options_v1 import CustomWebhookNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from typing import Set +from typing_extensions import Self + + +class CustomWebhookNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + CustomWebhookNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: CustomWebhookNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CustomWebhookNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CustomWebhookNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "options": CustomWebhookNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/cvss_score.py b/sysdig_client/models/cvss_score.py new file mode 100644 index 00000000..f696dd56 --- /dev/null +++ b/sysdig_client/models/cvss_score.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class CvssScore(BaseModel): + """ + CvssScore + """ # noqa: E501 + + version: Annotated[str, Field(strict=True, max_length=255)] + score: Union[StrictFloat, StrictInt] = Field(description="CVSS score") + vector: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field(default=None, description="attack vector") + __properties: ClassVar[List[str]] = ["version", "score", "vector"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CvssScore from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CvssScore from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"version": obj.get("version"), "score": obj.get("score"), "vector": obj.get("vector")}) + return _obj diff --git a/sysdig_client/models/date_range.py b/sysdig_client/models/date_range.py new file mode 100644 index 00000000..e0ca6b7f --- /dev/null +++ b/sysdig_client/models/date_range.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class DateRange(BaseModel): + """ + A date range with inclusive start and end dates. + """ # noqa: E501 + + start_date: date = Field(description="The beginning of the date range.", alias="startDate") + end_date: date = Field(description="The end of the date range.", alias="endDate") + __properties: ClassVar[List[str]] = ["startDate", "endDate"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DateRange from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DateRange from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"startDate": obj.get("startDate"), "endDate": obj.get("endDate")}) + return _obj diff --git a/sysdig_client/models/deny_cve.py b/sysdig_client/models/deny_cve.py new file mode 100644 index 00000000..b2fc04f9 --- /dev/null +++ b/sysdig_client/models/deny_cve.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.deny_cve_extra import DenyCveExtra +from typing import Optional, Set +from typing_extensions import Self + + +class DenyCve(BaseModel): + """ + Predicate expressing \"any of these CVEs is present\". + """ # noqa: E501 + + type: StrictStr + extra: DenyCveExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["denyCVE"]): + raise ValueError("must be one of enum values ('denyCVE')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DenyCve from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DenyCve from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"type": obj.get("type"), "extra": DenyCveExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/deny_cve_extra.py b/sysdig_client/models/deny_cve_extra.py new file mode 100644 index 00000000..8a53db15 --- /dev/null +++ b/sysdig_client/models/deny_cve_extra.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class DenyCveExtra(BaseModel): + """ + DenyCveExtra + """ # noqa: E501 + + vuln_ids: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=1024)]], Field(min_length=1, max_length=1024)] + ] = Field(default=None, alias="vulnIds") + __properties: ClassVar[List[str]] = ["vulnIds"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DenyCveExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DenyCveExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"vulnIds": obj.get("vulnIds")}) + return _obj diff --git a/sysdig_client/models/deny_pkg.py b/sysdig_client/models/deny_pkg.py new file mode 100644 index 00000000..5d9c66a4 --- /dev/null +++ b/sysdig_client/models/deny_pkg.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.deny_pkg_extra import DenyPkgExtra +from typing import Optional, Set +from typing_extensions import Self + + +class DenyPkg(BaseModel): + """ + Predicate expressing \"any of these packages is present\". + """ # noqa: E501 + + type: StrictStr + extra: DenyPkgExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["denyPkg"]): + raise ValueError("must be one of enum values ('denyPkg')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DenyPkg from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DenyPkg from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"type": obj.get("type"), "extra": DenyPkgExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/deny_pkg_extra.py b/sysdig_client/models/deny_pkg_extra.py new file mode 100644 index 00000000..6e0fb343 --- /dev/null +++ b/sysdig_client/models/deny_pkg_extra.py @@ -0,0 +1,98 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.deny_pkg_extra_packages_inner import DenyPkgExtraPackagesInner +from typing import Optional, Set +from typing_extensions import Self + + +class DenyPkgExtra(BaseModel): + """ + DenyPkgExtra + """ # noqa: E501 + + packages: Annotated[List[DenyPkgExtraPackagesInner], Field(min_length=1, max_length=1024)] + __properties: ClassVar[List[str]] = ["packages"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DenyPkgExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in packages (list) + _items = [] + if self.packages: + for _item_packages in self.packages: + if _item_packages: + _items.append(_item_packages.to_dict()) + _dict["packages"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DenyPkgExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "packages": [DenyPkgExtraPackagesInner.from_dict(_item) for _item in obj["packages"]] + if obj.get("packages") is not None + else None + } + ) + return _obj diff --git a/sysdig_client/models/deny_pkg_extra_packages_inner.py b/sysdig_client/models/deny_pkg_extra_packages_inner.py new file mode 100644 index 00000000..986b274b --- /dev/null +++ b/sysdig_client/models/deny_pkg_extra_packages_inner.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class DenyPkgExtraPackagesInner(BaseModel): + """ + DenyPkgExtraPackagesInner + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Package name") + version: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field(default=None, description="Package version") + __properties: ClassVar[List[str]] = ["name", "version"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DenyPkgExtraPackagesInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DenyPkgExtraPackagesInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"name": obj.get("name"), "version": obj.get("version")}) + return _obj diff --git a/sysdig_client/models/dependency.py b/sysdig_client/models/dependency.py new file mode 100644 index 00000000..1c4be771 --- /dev/null +++ b/sysdig_client/models/dependency.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Dependency(BaseModel): + """ + Defines the direct dependencies of a component or service. Components or services that do not have their own dependencies MUST be declared as empty elements within the graph. Components or services that are not represented in the dependency graph MAY have unknown dependencies. It is RECOMMENDED that implementations assume this to be opaque and not an indicator of a object being dependency-free. It is RECOMMENDED to leverage compositions to indicate unknown dependency graphs. + """ # noqa: E501 + + ref: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="References a component or service by its bom-ref attribute" + ) + depends_on: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=1000000)]] = Field( + default=None, + description="The bom-ref identifiers of the components or services that are dependencies of this dependency object.", + alias="dependsOn", + ) + __properties: ClassVar[List[str]] = ["ref", "dependsOn"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Dependency from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Dependency from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"ref": obj.get("ref"), "dependsOn": obj.get("dependsOn")}) + return _obj diff --git a/sysdig_client/models/disable_jobs_and_metrics_v1.py b/sysdig_client/models/disable_jobs_and_metrics_v1.py new file mode 100644 index 00000000..85e73255 --- /dev/null +++ b/sysdig_client/models/disable_jobs_and_metrics_v1.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.disable_metric_v1 import DisableMetricV1 +from typing import Set +from typing_extensions import Self + + +class DisableJobsAndMetricsV1(BaseModel): + """ + Get Disabled Metrics by Job name Response + """ # noqa: E501 + + job_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="The Prometheus Job for which the collection of one or more metrics is disabled. ", + alias="jobName", + ) + metrics: Optional[Annotated[List[DisableMetricV1], Field(max_length=1000)]] = Field( + default=None, description="List of metrics to be disabled. " + ) + __properties: ClassVar[List[str]] = ["jobName", "metrics"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DisableJobsAndMetricsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in metrics (list) + _items = [] + if self.metrics: + for _item_metrics in self.metrics: + if _item_metrics: + _items.append(_item_metrics.to_dict()) + _dict["metrics"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DisableJobsAndMetricsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "jobName": obj.get("jobName"), + "metrics": [DisableMetricV1.from_dict(_item) for _item in obj["metrics"]] + if obj.get("metrics") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/disable_metric_v1.py b/sysdig_client/models/disable_metric_v1.py new file mode 100644 index 00000000..68f48863 --- /dev/null +++ b/sysdig_client/models/disable_metric_v1.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class DisableMetricV1(BaseModel): + """ + Get Disabled Metrics by Job name Response. + """ # noqa: E501 + + metric_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the metric to be disabled or re-enabled. ", alias="metricName" + ) + is_disabled: Optional[StrictBool] = Field( + default=None, + description="Set as `true` to disable a metric. \\ Set as `false` to re-enable a metric. ", + alias="isDisabled", + ) + __properties: ClassVar[List[str]] = ["metricName", "isDisabled"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DisableMetricV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DisableMetricV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"metricName": obj.get("metricName"), "isDisabled": obj.get("isDisabled")}) + return _obj diff --git a/sysdig_client/models/drift_prevented_action.py b/sysdig_client/models/drift_prevented_action.py new file mode 100644 index 00000000..33a215b0 --- /dev/null +++ b/sysdig_client/models/drift_prevented_action.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_type import ActionType +from typing import Set +from typing_extensions import Self + + +class DriftPreventedAction(BaseModel): + """ + Automatic action preventing the execution of a file not present in the original container image. + """ # noqa: E501 + + type: ActionType + is_successful: Optional[StrictBool] = Field( + default=None, description="Whether or not the action was completed successfully.", alias="isSuccessful" + ) + err_msg: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="When `isSuccessful` is `false`, details on why the action failed. ", alias="errMsg" + ) + __properties: ClassVar[List[str]] = ["type", "isSuccessful", "errMsg"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DriftPreventedAction from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DriftPreventedAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "isSuccessful": obj.get("isSuccessful"), "errMsg": obj.get("errMsg")}) + return _obj diff --git a/sysdig_client/models/email_notification_channel_options_v1.py b/sysdig_client/models/email_notification_channel_options_v1.py new file mode 100644 index 00000000..a2e7c5be --- /dev/null +++ b/sysdig_client/models/email_notification_channel_options_v1.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class EmailNotificationChannelOptionsV1(BaseModel): + """ + The email notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + email_recipients: Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(min_length=1, max_length=100)] = ( + Field(description="List of email recipients to which notifications should be sent", alias="emailRecipients") + ) + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "emailRecipients"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of EmailNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of EmailNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), "emailRecipients": obj.get("emailRecipients")} + ) + return _obj diff --git a/sysdig_client/models/email_notification_channel_response_v1.py b/sysdig_client/models/email_notification_channel_response_v1.py new file mode 100644 index 00000000..1f1bbe22 --- /dev/null +++ b/sysdig_client/models/email_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.email_notification_channel_options_v1 import EmailNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from typing import Set +from typing_extensions import Self + + +class EmailNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + EmailNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: EmailNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of EmailNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of EmailNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": EmailNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/entity_definition.py b/sysdig_client/models/entity_definition.py new file mode 100644 index 00000000..74687094 --- /dev/null +++ b/sysdig_client/models/entity_definition.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.entity_definition_definition import EntityDefinitionDefinition +from typing import Set +from typing_extensions import Self + + +class EntityDefinition(BaseModel): + """ + Defines the structure and metadata of a field in the query result. + """ # noqa: E501 + + type: Annotated[str, Field(strict=True, max_length=128)] = Field(description="Type of the entity.") + alias: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field( + default=None, description="The alias used in the query." + ) + definition: EntityDefinitionDefinition + __properties: ClassVar[List[str]] = ["type", "alias", "definition"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of EntityDefinition from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of definition + if self.definition: + _dict["definition"] = self.definition.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of EntityDefinition from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "alias": obj.get("alias"), + "definition": EntityDefinitionDefinition.from_dict(obj["definition"]) + if obj.get("definition") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/entity_definition_definition.py b/sysdig_client/models/entity_definition_definition.py new file mode 100644 index 00000000..daeb0e86 --- /dev/null +++ b/sysdig_client/models/entity_definition_definition.py @@ -0,0 +1,105 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class EntityDefinitionDefinition(BaseModel): + """ + Detailed definition of the field. + """ # noqa: E501 + + def_type: StrictStr = Field(description="Type of the definition.") + name: Annotated[str, Field(strict=True, max_length=128)] = Field(description="Name of the field.") + type: StrictStr = Field(description="Data type of the field.") + hidden: Optional[StrictBool] = Field(default=None, description="Indicates if the field is hidden from view.") + __properties: ClassVar[List[str]] = ["def_type", "name", "type", "hidden"] + + @field_validator("def_type") + def def_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["Entity", "Field", "Function", "Query", "Relationship", "Union"]): + raise ValueError("must be one of enum values ('Entity', 'Field', 'Function', 'Query', 'Relationship', 'Union')") + return value + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["String", "BigInt", "Integer", "DateTime", "Float", "Boolean", "Enum", "List"]): + raise ValueError( + "must be one of enum values ('String', 'BigInt', 'Integer', 'DateTime', 'Float', 'Boolean', 'Enum', 'List')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of EntityDefinitionDefinition from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of EntityDefinitionDefinition from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"def_type": obj.get("def_type"), "name": obj.get("name"), "type": obj.get("type"), "hidden": obj.get("hidden")} + ) + return _obj diff --git a/sysdig_client/models/entries_response.py b/sysdig_client/models/entries_response.py new file mode 100644 index 00000000..aaacdfc1 --- /dev/null +++ b/sysdig_client/models/entries_response.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.entries_response_data_inner import EntriesResponseDataInner +from sysdig_client.models.page import Page +from typing import Set +from typing_extensions import Self + + +class EntriesResponse(BaseModel): + """ + The response to a GET entries call + """ # noqa: E501 + + page: Optional[Page] = None + data: Optional[Annotated[List[EntriesResponseDataInner], Field(max_length=200)]] = Field( + default=None, description="The actual data contained in one of the supported types of entry" + ) + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of EntriesResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of EntriesResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": Page.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [EntriesResponseDataInner.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/entries_response_data_inner.py b/sysdig_client/models/entries_response_data_inner.py new file mode 100644 index 00000000..656cb9aa --- /dev/null +++ b/sysdig_client/models/entries_response_data_inner.py @@ -0,0 +1,168 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Optional +from sysdig_client.models.command import Command +from sysdig_client.models.connection import Connection +from sysdig_client.models.fileaccess import Fileaccess +from sysdig_client.models.kubernetes import Kubernetes +from typing import Union, Any, List, Set, TYPE_CHECKING, Dict +from typing_extensions import Literal, Self + +ENTRIESRESPONSEDATAINNER_ANY_OF_SCHEMAS = ["Command", "Connection", "Fileaccess", "Kubernetes"] + + +class EntriesResponseDataInner(BaseModel): + """ + EntriesResponseDataInner + """ + + # data type: Command + anyof_schema_1_validator: Optional[Command] = None + # data type: Connection + anyof_schema_2_validator: Optional[Connection] = None + # data type: Fileaccess + anyof_schema_3_validator: Optional[Fileaccess] = None + # data type: Kubernetes + anyof_schema_4_validator: Optional[Kubernetes] = None + if TYPE_CHECKING: + actual_instance: Optional[Union[Command, Connection, Fileaccess, Kubernetes]] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = {"Command", "Connection", "Fileaccess", "Kubernetes"} + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_anyof(cls, v): + instance = EntriesResponseDataInner.model_construct() + error_messages = [] + # validate data type: Command + if not isinstance(v, Command): + error_messages.append(f"Error! Input type `{type(v)}` is not `Command`") + else: + return v + + # validate data type: Connection + if not isinstance(v, Connection): + error_messages.append(f"Error! Input type `{type(v)}` is not `Connection`") + else: + return v + + # validate data type: Fileaccess + if not isinstance(v, Fileaccess): + error_messages.append(f"Error! Input type `{type(v)}` is not `Fileaccess`") + else: + return v + + # validate data type: Kubernetes + if not isinstance(v, Kubernetes): + error_messages.append(f"Error! Input type `{type(v)}` is not `Kubernetes`") + else: + return v + + if error_messages: + # no match + raise ValueError( + "No match found when setting the actual_instance in EntriesResponseDataInner with anyOf schemas: Command, Connection, Fileaccess, Kubernetes. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # anyof_schema_1_validator: Optional[Command] = None + try: + instance.actual_instance = Command.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_2_validator: Optional[Connection] = None + try: + instance.actual_instance = Connection.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_3_validator: Optional[Fileaccess] = None + try: + instance.actual_instance = Fileaccess.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_4_validator: Optional[Kubernetes] = None + try: + instance.actual_instance = Kubernetes.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError( + "No match found when deserializing the JSON string into EntriesResponseDataInner with anyOf schemas: Command, Connection, Fileaccess, Kubernetes. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], Command, Connection, Fileaccess, Kubernetes]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/entry.py b/sysdig_client/models/entry.py new file mode 100644 index 00000000..89eda659 --- /dev/null +++ b/sysdig_client/models/entry.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class Entry(BaseModel): + """ + The base structure of an Activity Audit entry + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=32)] = Field(description="The audit event id.") + timestamp: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Timestamp the audit event occured, expressed in nanoseconds." + ) + __properties: ClassVar[List[str]] = ["id", "timestamp"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Entry from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Entry from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"id": obj.get("id"), "timestamp": obj.get("timestamp")}) + return _obj diff --git a/sysdig_client/models/entry_point_module_v1.py b/sysdig_client/models/entry_point_module_v1.py new file mode 100644 index 00000000..e8ee9422 --- /dev/null +++ b/sysdig_client/models/entry_point_module_v1.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class EntryPointModuleV1(str, Enum): + """ + The Module is the area in Sysdig Monitor. + """ + + """ + allowed enum values + """ + ALERTS = "Alerts" + DASHBOARDS = "Dashboards" + EVENTS = "Events" + EXPLORE = "Explore" + OVERVIEW = "Overview" + SETTINGS = "Settings" + DASHBOARDTEMPLATES = "DashboardTemplates" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of EntryPointModuleV1 from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/entry_point_v1.py b/sysdig_client/models/entry_point_v1.py new file mode 100644 index 00000000..e946c36a --- /dev/null +++ b/sysdig_client/models/entry_point_v1.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.entry_point_module_v1 import EntryPointModuleV1 +from typing import Set +from typing_extensions import Self + + +class EntryPointV1(BaseModel): + """ + The page you see after logging into Sysdig UI. It is defined by a Module and a Selection. **The Entry Point is not supported in Sysdig Secure.** + """ # noqa: E501 + + module: Optional[EntryPointModuleV1] = None + selection: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field( + default=None, + description="The selection is the specific page within the Module, usually defined by the resource ID. It is supported only supported by **Dashboards** and **DashboardTemplates** Modules. ", + ) + __properties: ClassVar[List[str]] = ["module", "selection"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of EntryPointV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if selection (nullable) is None + # and model_fields_set contains the field + if self.selection is None and "selection" in self.model_fields_set: + _dict["selection"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of EntryPointV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"module": obj.get("module"), "selection": obj.get("selection")}) + return _obj diff --git a/sysdig_client/models/entry_response.py b/sysdig_client/models/entry_response.py new file mode 100644 index 00000000..36e76f0f --- /dev/null +++ b/sysdig_client/models/entry_response.py @@ -0,0 +1,175 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.command import Command +from sysdig_client.models.connection import Connection +from sysdig_client.models.fileaccess import Fileaccess +from sysdig_client.models.kubernetes import Kubernetes +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +ENTRYRESPONSE_ONE_OF_SCHEMAS = ["Command", "Connection", "Fileaccess", "Kubernetes"] + + +class EntryResponse(BaseModel): + """ + The response to a GET entry call + """ + + # data type: Command + oneof_schema_1_validator: Optional[Command] = None + # data type: Connection + oneof_schema_2_validator: Optional[Connection] = None + # data type: Fileaccess + oneof_schema_3_validator: Optional[Fileaccess] = None + # data type: Kubernetes + oneof_schema_4_validator: Optional[Kubernetes] = None + actual_instance: Optional[Union[Command, Connection, Fileaccess, Kubernetes]] = None + one_of_schemas: Set[str] = {"Command", "Connection", "Fileaccess", "Kubernetes"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = EntryResponse.model_construct() + error_messages = [] + match = 0 + # validate data type: Command + if not isinstance(v, Command): + error_messages.append(f"Error! Input type `{type(v)}` is not `Command`") + else: + match += 1 + # validate data type: Connection + if not isinstance(v, Connection): + error_messages.append(f"Error! Input type `{type(v)}` is not `Connection`") + else: + match += 1 + # validate data type: Fileaccess + if not isinstance(v, Fileaccess): + error_messages.append(f"Error! Input type `{type(v)}` is not `Fileaccess`") + else: + match += 1 + # validate data type: Kubernetes + if not isinstance(v, Kubernetes): + error_messages.append(f"Error! Input type `{type(v)}` is not `Kubernetes`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in EntryResponse with oneOf schemas: Command, Connection, Fileaccess, Kubernetes. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in EntryResponse with oneOf schemas: Command, Connection, Fileaccess, Kubernetes. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into Command + try: + instance.actual_instance = Command.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into Connection + try: + instance.actual_instance = Connection.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into Fileaccess + try: + instance.actual_instance = Fileaccess.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into Kubernetes + try: + instance.actual_instance = Kubernetes.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into EntryResponse with oneOf schemas: Command, Connection, Fileaccess, Kubernetes. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into EntryResponse with oneOf schemas: Command, Connection, Fileaccess, Kubernetes. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], Command, Connection, Fileaccess, Kubernetes]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/error.py b/sysdig_client/models/error.py new file mode 100644 index 00000000..ef2858ec --- /dev/null +++ b/sysdig_client/models/error.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Error(BaseModel): + """ + Error + """ # noqa: E501 + + type: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field(default=None, description="The error code.") + message: Optional[Annotated[str, Field(strict=True, max_length=8192)]] = Field( + default=None, description="A human readable error message." + ) + details: Optional[Annotated[List[Any], Field(max_length=512)]] = Field( + default=None, description="A list of details related to the error." + ) + __properties: ClassVar[List[str]] = ["type", "message", "details"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Error from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Error from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "message": obj.get("message"), "details": obj.get("details")}) + return _obj diff --git a/sysdig_client/models/event.py b/sysdig_client/models/event.py new file mode 100644 index 00000000..e9e691d4 --- /dev/null +++ b/sysdig_client/models/event.py @@ -0,0 +1,180 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action import Action +from sysdig_client.models.category import Category +from sysdig_client.models.event_content import EventContent +from sysdig_client.models.originator import Originator +from sysdig_client.models.source import Source +from sysdig_client.models.source_details import SourceDetails +from typing import Set +from typing_extensions import Self + + +class Event(BaseModel): + """ + Event feed + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=32)] = Field(description="The event id.") + cursor: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, + description="The cursor that can be used to fetch a set of events surrounding this same event. By providing this value as `cursor` in a GET `secureEvents` request, you will get the set of events surrounding this current event. ", + ) + timestamp: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="The event timestamp in nanoseconds." + ) + originator: Originator + category: Category + source: Source + source_details: Optional[SourceDetails] = Field(default=None, alias="sourceDetails") + raw_event_originator: Optional[Annotated[str, Field(strict=True, max_length=32)]] = Field( + default=None, + description="The agent type, hosting the `engine`, that generated the event after the raw event - `admissionController` - Admission Controller, part of the Cluster Shield - `agentless` - Agentless - `cloudConnector` - Cloud Connector - `linuxAgent` - Linux Host Agent - `serverlessAgent` - Serverless workloads Agent (CaaS) generated events - `windowsAgent` - Windows Host Agent ", + alias="rawEventOriginator", + ) + raw_event_category: Optional[Annotated[str, Field(strict=True, max_length=32)]] = Field( + default=None, + description="The semantic category (area) of the event in the Sysdig product: - `kspm` - Kubernetes Security Posture Management events - `runtime` - Threat detection events ", + alias="rawEventCategory", + ) + engine: Optional[Annotated[str, Field(strict=True, max_length=32)]] = Field( + default=None, + description="The engine used to generate the event out of the raw signal: - `drift` - engine to detect container drifts - `falco` - Falco open source engine - `list` - list matching engine for list matching rules - `machineLearning` - ML engine - `malware` - malware detection engine ", + ) + name: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="Name of the policy the event is generated after." + ) + description: Annotated[str, Field(strict=True, max_length=1024)] = Field( + description="Description of the policy the event is generated after." + ) + severity: Annotated[int, Field(le=7, strict=True, ge=0)] = Field( + description="The policy severity: - `0-3` - High - `4-5` - Medium - `6` - Low - `7` - Info " + ) + actions: Optional[Annotated[List[Action], Field(max_length=1000)]] = Field( + default=None, description="actions that have been triggered by the event" + ) + content: Optional[EventContent] = None + labels: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=256)]]] = Field( + default=None, description="Key value pairs of values." + ) + __properties: ClassVar[List[str]] = [ + "id", + "cursor", + "timestamp", + "originator", + "category", + "source", + "sourceDetails", + "rawEventOriginator", + "rawEventCategory", + "engine", + "name", + "description", + "severity", + "actions", + "content", + "labels", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Event from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of source_details + if self.source_details: + _dict["sourceDetails"] = self.source_details.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in actions (list) + _items = [] + if self.actions: + for _item_actions in self.actions: + if _item_actions: + _items.append(_item_actions.to_dict()) + _dict["actions"] = _items + # override the default output from pydantic by calling `to_dict()` of content + if self.content: + _dict["content"] = self.content.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Event from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "cursor": obj.get("cursor"), + "timestamp": obj.get("timestamp"), + "originator": obj.get("originator"), + "category": obj.get("category"), + "source": obj.get("source"), + "sourceDetails": SourceDetails.from_dict(obj["sourceDetails"]) if obj.get("sourceDetails") is not None else None, + "rawEventOriginator": obj.get("rawEventOriginator"), + "rawEventCategory": obj.get("rawEventCategory"), + "engine": obj.get("engine"), + "name": obj.get("name"), + "description": obj.get("description"), + "severity": obj.get("severity"), + "actions": [Action.from_dict(_item) for _item in obj["actions"]] if obj.get("actions") is not None else None, + "content": EventContent.from_dict(obj["content"]) if obj.get("content") is not None else None, + "labels": obj.get("labels"), + } + ) + return _obj diff --git a/sysdig_client/models/event_content.py b/sysdig_client/models/event_content.py new file mode 100644 index 00000000..6dfd08c4 --- /dev/null +++ b/sysdig_client/models/event_content.py @@ -0,0 +1,240 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.agentless_ml_runtime_detection_content import AgentlessMlRuntimeDetectionContent +from sysdig_client.models.agentless_runtime_detection_content import AgentlessRuntimeDetectionContent +from sysdig_client.models.k8s_admission_review_content import K8sAdmissionReviewContent +from sysdig_client.models.stateful_detections_content import StatefulDetectionsContent +from sysdig_client.models.workload_ml_runtime_detection_content import WorkloadMlRuntimeDetectionContent +from sysdig_client.models.workload_runtime_detection_content import WorkloadRuntimeDetectionContent +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +EVENTCONTENT_ONE_OF_SCHEMAS = [ + "AgentlessMlRuntimeDetectionContent", + "AgentlessRuntimeDetectionContent", + "K8sAdmissionReviewContent", + "StatefulDetectionsContent", + "WorkloadMlRuntimeDetectionContent", + "WorkloadRuntimeDetectionContent", +] + + +class EventContent(BaseModel): + """ + Event data. It contains fields from the original event and attributes generated at the engine level. + """ + + # data type: K8sAdmissionReviewContent + oneof_schema_1_validator: Optional[K8sAdmissionReviewContent] = None + # data type: AgentlessRuntimeDetectionContent + oneof_schema_2_validator: Optional[AgentlessRuntimeDetectionContent] = None + # data type: WorkloadRuntimeDetectionContent + oneof_schema_3_validator: Optional[WorkloadRuntimeDetectionContent] = None + # data type: WorkloadMlRuntimeDetectionContent + oneof_schema_4_validator: Optional[WorkloadMlRuntimeDetectionContent] = None + # data type: AgentlessMlRuntimeDetectionContent + oneof_schema_5_validator: Optional[AgentlessMlRuntimeDetectionContent] = None + # data type: StatefulDetectionsContent + oneof_schema_6_validator: Optional[StatefulDetectionsContent] = None + actual_instance: Optional[ + Union[ + AgentlessMlRuntimeDetectionContent, + AgentlessRuntimeDetectionContent, + K8sAdmissionReviewContent, + StatefulDetectionsContent, + WorkloadMlRuntimeDetectionContent, + WorkloadRuntimeDetectionContent, + ] + ] = None + one_of_schemas: Set[str] = { + "AgentlessMlRuntimeDetectionContent", + "AgentlessRuntimeDetectionContent", + "K8sAdmissionReviewContent", + "StatefulDetectionsContent", + "WorkloadMlRuntimeDetectionContent", + "WorkloadRuntimeDetectionContent", + } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + discriminator_value_class_map: Dict[str, str] = {} + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = EventContent.model_construct() + error_messages = [] + match = 0 + # validate data type: K8sAdmissionReviewContent + if not isinstance(v, K8sAdmissionReviewContent): + error_messages.append(f"Error! Input type `{type(v)}` is not `K8sAdmissionReviewContent`") + else: + match += 1 + # validate data type: AgentlessRuntimeDetectionContent + if not isinstance(v, AgentlessRuntimeDetectionContent): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentlessRuntimeDetectionContent`") + else: + match += 1 + # validate data type: WorkloadRuntimeDetectionContent + if not isinstance(v, WorkloadRuntimeDetectionContent): + error_messages.append(f"Error! Input type `{type(v)}` is not `WorkloadRuntimeDetectionContent`") + else: + match += 1 + # validate data type: WorkloadMlRuntimeDetectionContent + if not isinstance(v, WorkloadMlRuntimeDetectionContent): + error_messages.append(f"Error! Input type `{type(v)}` is not `WorkloadMlRuntimeDetectionContent`") + else: + match += 1 + # validate data type: AgentlessMlRuntimeDetectionContent + if not isinstance(v, AgentlessMlRuntimeDetectionContent): + error_messages.append(f"Error! Input type `{type(v)}` is not `AgentlessMlRuntimeDetectionContent`") + else: + match += 1 + # validate data type: StatefulDetectionsContent + if not isinstance(v, StatefulDetectionsContent): + error_messages.append(f"Error! Input type `{type(v)}` is not `StatefulDetectionsContent`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in EventContent with oneOf schemas: AgentlessMlRuntimeDetectionContent, AgentlessRuntimeDetectionContent, K8sAdmissionReviewContent, StatefulDetectionsContent, WorkloadMlRuntimeDetectionContent, WorkloadRuntimeDetectionContent. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in EventContent with oneOf schemas: AgentlessMlRuntimeDetectionContent, AgentlessRuntimeDetectionContent, K8sAdmissionReviewContent, StatefulDetectionsContent, WorkloadMlRuntimeDetectionContent, WorkloadRuntimeDetectionContent. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into K8sAdmissionReviewContent + try: + instance.actual_instance = K8sAdmissionReviewContent.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentlessRuntimeDetectionContent + try: + instance.actual_instance = AgentlessRuntimeDetectionContent.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into WorkloadRuntimeDetectionContent + try: + instance.actual_instance = WorkloadRuntimeDetectionContent.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into WorkloadMlRuntimeDetectionContent + try: + instance.actual_instance = WorkloadMlRuntimeDetectionContent.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into AgentlessMlRuntimeDetectionContent + try: + instance.actual_instance = AgentlessMlRuntimeDetectionContent.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into StatefulDetectionsContent + try: + instance.actual_instance = StatefulDetectionsContent.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into EventContent with oneOf schemas: AgentlessMlRuntimeDetectionContent, AgentlessRuntimeDetectionContent, K8sAdmissionReviewContent, StatefulDetectionsContent, WorkloadMlRuntimeDetectionContent, WorkloadRuntimeDetectionContent. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into EventContent with oneOf schemas: AgentlessMlRuntimeDetectionContent, AgentlessRuntimeDetectionContent, K8sAdmissionReviewContent, StatefulDetectionsContent, WorkloadMlRuntimeDetectionContent, WorkloadRuntimeDetectionContent. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[ + Union[ + Dict[str, Any], + AgentlessMlRuntimeDetectionContent, + AgentlessRuntimeDetectionContent, + K8sAdmissionReviewContent, + StatefulDetectionsContent, + WorkloadMlRuntimeDetectionContent, + WorkloadRuntimeDetectionContent, + ] + ]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/event_content_type.py b/sysdig_client/models/event_content_type.py new file mode 100644 index 00000000..f2d2f5dd --- /dev/null +++ b/sysdig_client/models/event_content_type.py @@ -0,0 +1,39 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class EventContentType(str, Enum): + """ + The type of the event content. + """ + + """ + allowed enum values + """ + WORKLOADRUNTIMEDETECTION = "workloadRuntimeDetection" + WORKLOADMLRUNTIMEDETECTION = "workloadMLRuntimeDetection" + AGENTLESSMLRUNTIMEDETECTION = "agentlessMLRuntimeDetection" + K8SADMISSIONREVIEW = "k8sAdmissionReview" + AGENTLESSRUNTIMEDETECTION = "agentlessRuntimeDetection" + STATEFULDETECTIONS = "statefulDetections" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of EventContentType from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/events_feed_page.py b/sysdig_client/models/events_feed_page.py new file mode 100644 index 00000000..34eaf38c --- /dev/null +++ b/sysdig_client/models/events_feed_page.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class EventsFeedPage(BaseModel): + """ + Pagination information. + """ # noqa: E501 + + total: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="The number of events matching the search criteria. This number is always major or equal to the number of events returned. " + ) + prev: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="`prev` is a string pointing to the previous page of data. Use this as the `cursor` to get the previous page of data. ", + ) + next: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="`next` is a string pointing to the next page of data. Use this as the `cursor` to scroll paginated results and get the next page of data. If not included, the current response is the last page. ", + ) + __properties: ClassVar[List[str]] = ["total", "prev", "next"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of EventsFeedPage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of EventsFeedPage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"total": obj.get("total"), "prev": obj.get("prev"), "next": obj.get("next")}) + return _obj diff --git a/sysdig_client/models/exploit.py b/sysdig_client/models/exploit.py new file mode 100644 index 00000000..06199183 --- /dev/null +++ b/sysdig_client/models/exploit.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Exploit(BaseModel): + """ + Exploit + """ # noqa: E501 + + publication_date: Optional[datetime] = Field(default=None, description="exploit publication date", alias="publicationDate") + links: Annotated[List[Annotated[str, Field(strict=True, max_length=8192)]], Field(min_length=0, max_length=8192)] + __properties: ClassVar[List[str]] = ["publicationDate", "links"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Exploit from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Exploit from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"publicationDate": obj.get("publicationDate"), "links": obj.get("links")}) + return _obj diff --git a/sysdig_client/models/failure.py b/sysdig_client/models/failure.py new file mode 100644 index 00000000..e0ba00f8 --- /dev/null +++ b/sysdig_client/models/failure.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class Failure(BaseModel): + """ + The reason a Response Action failed to execute. + """ # noqa: E501 + + failure_reason: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="The reason for the failure.", alias="failureReason" + ) + log_message: Annotated[str, Field(strict=True, max_length=1024)] = Field( + description="The log message of the action failure.", alias="logMessage" + ) + __properties: ClassVar[List[str]] = ["failureReason", "logMessage"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Failure from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Failure from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"failureReason": obj.get("failureReason"), "logMessage": obj.get("logMessage")}) + return _obj diff --git a/sysdig_client/models/fileaccess.py b/sysdig_client/models/fileaccess.py new file mode 100644 index 00000000..4a529e0f --- /dev/null +++ b/sysdig_client/models/fileaccess.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Fileaccess(BaseModel): + """ + Represents a file access operation. + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=32)] = Field(description="The audit event id.") + timestamp: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Timestamp the audit event occured, expressed in nanoseconds." + ) + type: StrictStr = Field(description="The entry type") + hostname: Annotated[str, Field(strict=True, max_length=200)] = Field(description="The Kubernetes hostname.") + container_id: Optional[Annotated[str, Field(strict=True, max_length=200)]] = Field( + default=None, + description="The container id. `containerId` is present only if the audit event was collected in a container context. ", + alias="containerId", + ) + comm: Annotated[str, Field(strict=True, max_length=20)] = Field(description="The name of the command.") + pid: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Id of the process owning the connection." + ) + directory: Annotated[str, Field(strict=True, max_length=200)] = Field(description="The Directory for the file access.") + filename: Annotated[str, Field(strict=True, max_length=50)] = Field(description="The Filename involved in file access.") + permissions: Annotated[str, Field(strict=True, max_length=3)] = Field(description="The Permissions of the file access.") + tty: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="TTY number." + ) + labels: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=200)]]] = Field( + default=None, description="Key value pairs of labels." + ) + __properties: ClassVar[List[str]] = [ + "id", + "timestamp", + "type", + "hostname", + "containerId", + "comm", + "pid", + "directory", + "filename", + "permissions", + "tty", + "labels", + ] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["fileaccess"]): + raise ValueError("must be one of enum values ('fileaccess')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Fileaccess from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Fileaccess from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "timestamp": obj.get("timestamp"), + "type": obj.get("type"), + "hostname": obj.get("hostname"), + "containerId": obj.get("containerId"), + "comm": obj.get("comm"), + "pid": obj.get("pid"), + "directory": obj.get("directory"), + "filename": obj.get("filename"), + "permissions": obj.get("permissions"), + "tty": obj.get("tty"), + "labels": obj.get("labels"), + } + ) + return _obj diff --git a/sysdig_client/models/gchat_notification_channel_options_v1.py b/sysdig_client/models/gchat_notification_channel_options_v1.py new file mode 100644 index 00000000..b7ec0b60 --- /dev/null +++ b/sysdig_client/models/gchat_notification_channel_options_v1.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class GchatNotificationChannelOptionsV1(BaseModel): + """ + The Google Chat notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + url: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Google Chat Webhook URL") + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "url"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GchatNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GchatNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), "url": obj.get("url")}) + return _obj diff --git a/sysdig_client/models/gchat_notification_channel_response_v1.py b/sysdig_client/models/gchat_notification_channel_response_v1.py new file mode 100644 index 00000000..013b0402 --- /dev/null +++ b/sysdig_client/models/gchat_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.gchat_notification_channel_options_v1 import GchatNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from typing import Set +from typing_extensions import Self + + +class GchatNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + GchatNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: GchatNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GchatNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GchatNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": GchatNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_access_keys_paginated_response_v1.py b/sysdig_client/models/get_access_keys_paginated_response_v1.py new file mode 100644 index 00000000..0a6f9aae --- /dev/null +++ b/sysdig_client/models/get_access_keys_paginated_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.access_key_response_v1 import AccessKeyResponseV1 +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class GetAccessKeysPaginatedResponseV1(BaseModel): + """ + GetAccessKeysPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[AccessKeyResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetAccessKeysPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetAccessKeysPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [AccessKeyResponseV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_amazon_sqs_integration_response.py b/sysdig_client/models/get_amazon_sqs_integration_response.py new file mode 100644 index 00000000..575e65fe --- /dev/null +++ b/sysdig_client/models/get_amazon_sqs_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_amazon_sqs import BaseConnectionInfoAmazonSqs +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetAmazonSqsIntegrationResponse(BaseModel): + """ + Get Amazon SQS Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoAmazonSqs = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetAmazonSqsIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetAmazonSqsIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoAmazonSqs.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_bundle_response.py b/sysdig_client/models/get_bundle_response.py new file mode 100644 index 00000000..8e8869cf --- /dev/null +++ b/sysdig_client/models/get_bundle_response.py @@ -0,0 +1,119 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.bundle_rule import BundleRule +from typing import Set +from typing_extensions import Self + + +class GetBundleResponse(BaseModel): + """ + Bundle definition + """ # noqa: E501 + + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field(description="The Bundle ID") + name: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field(description="The human readable Bundle name") + identifier: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field( + description="The Policy identifier generated from the name" + ) + description: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=4096)]] = Field( + default=None, description="The Bundle description" + ) + bundle_type: StrictStr = Field( + description="Specifies whether the Bundle was defined by the Customer or by Sysdig", alias="bundleType" + ) + rules: Annotated[List[BundleRule], Field(min_length=1, max_length=1024)] = Field(description="The Rules defining this Bundle") + __properties: ClassVar[List[str]] = ["id", "name", "identifier", "description", "bundleType", "rules"] + + @field_validator("bundle_type") + def bundle_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["predefined", "custom"]): + raise ValueError("must be one of enum values ('predefined', 'custom')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetBundleResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in rules (list) + _items = [] + if self.rules: + for _item_rules in self.rules: + if _item_rules: + _items.append(_item_rules.to_dict()) + _dict["rules"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetBundleResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "name": obj.get("name"), + "identifier": obj.get("identifier"), + "description": obj.get("description"), + "bundleType": obj.get("bundleType"), + "rules": [BundleRule.from_dict(_item) for _item in obj["rules"]] if obj.get("rules") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_chronicle_integration_response.py b/sysdig_client/models/get_chronicle_integration_response.py new file mode 100644 index 00000000..7023dbff --- /dev/null +++ b/sysdig_client/models/get_chronicle_integration_response.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.get_chronicle_integration_response_all_of_connection_info import ( + GetChronicleIntegrationResponseAllOfConnectionInfo, +) +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetChronicleIntegrationResponse(BaseModel): + """ + Get Google Chronicle Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: GetChronicleIntegrationResponseAllOfConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetChronicleIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetChronicleIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": GetChronicleIntegrationResponseAllOfConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_chronicle_integration_response_all_of_connection_info.py b/sysdig_client/models/get_chronicle_integration_response_all_of_connection_info.py new file mode 100644 index 00000000..efc32865 --- /dev/null +++ b/sysdig_client/models/get_chronicle_integration_response_all_of_connection_info.py @@ -0,0 +1,150 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.base_connection_info_chronicle import BaseConnectionInfoChronicle +from sysdig_client.models.base_connection_info_chronicle_v2 import BaseConnectionInfoChronicleV2 +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +GETCHRONICLEINTEGRATIONRESPONSEALLOFCONNECTIONINFO_ONE_OF_SCHEMAS = [ + "BaseConnectionInfoChronicle", + "BaseConnectionInfoChronicleV2", +] + + +class GetChronicleIntegrationResponseAllOfConnectionInfo(BaseModel): + """ + GetChronicleIntegrationResponseAllOfConnectionInfo + """ + + # data type: BaseConnectionInfoChronicle + oneof_schema_1_validator: Optional[BaseConnectionInfoChronicle] = None + # data type: BaseConnectionInfoChronicleV2 + oneof_schema_2_validator: Optional[BaseConnectionInfoChronicleV2] = None + actual_instance: Optional[Union[BaseConnectionInfoChronicle, BaseConnectionInfoChronicleV2]] = None + one_of_schemas: Set[str] = {"BaseConnectionInfoChronicle", "BaseConnectionInfoChronicleV2"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = GetChronicleIntegrationResponseAllOfConnectionInfo.model_construct() + error_messages = [] + match = 0 + # validate data type: BaseConnectionInfoChronicle + if not isinstance(v, BaseConnectionInfoChronicle): + error_messages.append(f"Error! Input type `{type(v)}` is not `BaseConnectionInfoChronicle`") + else: + match += 1 + # validate data type: BaseConnectionInfoChronicleV2 + if not isinstance(v, BaseConnectionInfoChronicleV2): + error_messages.append(f"Error! Input type `{type(v)}` is not `BaseConnectionInfoChronicleV2`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in GetChronicleIntegrationResponseAllOfConnectionInfo with oneOf schemas: BaseConnectionInfoChronicle, BaseConnectionInfoChronicleV2. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in GetChronicleIntegrationResponseAllOfConnectionInfo with oneOf schemas: BaseConnectionInfoChronicle, BaseConnectionInfoChronicleV2. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into BaseConnectionInfoChronicle + try: + instance.actual_instance = BaseConnectionInfoChronicle.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into BaseConnectionInfoChronicleV2 + try: + instance.actual_instance = BaseConnectionInfoChronicleV2.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into GetChronicleIntegrationResponseAllOfConnectionInfo with oneOf schemas: BaseConnectionInfoChronicle, BaseConnectionInfoChronicleV2. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into GetChronicleIntegrationResponseAllOfConnectionInfo with oneOf schemas: BaseConnectionInfoChronicle, BaseConnectionInfoChronicleV2. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], BaseConnectionInfoChronicle, BaseConnectionInfoChronicleV2]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/get_custom_jobs_paginated_response_v1.py b/sysdig_client/models/get_custom_jobs_paginated_response_v1.py new file mode 100644 index 00000000..3b671fc2 --- /dev/null +++ b/sysdig_client/models/get_custom_jobs_paginated_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.custom_job_v1 import CustomJobV1 +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class GetCustomJobsPaginatedResponseV1(BaseModel): + """ + GetCustomJobsPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[CustomJobV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetCustomJobsPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetCustomJobsPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [CustomJobV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_elasticsearch_integration_response.py b/sysdig_client/models/get_elasticsearch_integration_response.py new file mode 100644 index 00000000..8c235831 --- /dev/null +++ b/sysdig_client/models/get_elasticsearch_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_elasticsearch import BaseConnectionInfoElasticsearch +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetElasticsearchIntegrationResponse(BaseModel): + """ + Get Elastic Search Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoElasticsearch = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetElasticsearchIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetElasticsearchIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoElasticsearch.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_google_pub_sub_integration_response.py b/sysdig_client/models/get_google_pub_sub_integration_response.py new file mode 100644 index 00000000..5d9ed647 --- /dev/null +++ b/sysdig_client/models/get_google_pub_sub_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_google_pub_sub import BaseConnectionInfoGooglePubSub +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetGooglePubSubIntegrationResponse(BaseModel): + """ + Get Google Pub/Sub Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoGooglePubSub = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetGooglePubSubIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetGooglePubSubIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoGooglePubSub.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_google_scc_integration_response.py b/sysdig_client/models/get_google_scc_integration_response.py new file mode 100644 index 00000000..8f5f0d7f --- /dev/null +++ b/sysdig_client/models/get_google_scc_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_google_scc import BaseConnectionInfoGoogleScc +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetGoogleSccIntegrationResponse(BaseModel): + """ + Get Google SCC Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoGoogleScc = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetGoogleSccIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetGoogleSccIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoGoogleScc.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_inhibition_rules_paginated_response_v1.py b/sysdig_client/models/get_inhibition_rules_paginated_response_v1.py new file mode 100644 index 00000000..6e0f5cdf --- /dev/null +++ b/sysdig_client/models/get_inhibition_rules_paginated_response_v1.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.inhibition_rule_response_v1 import InhibitionRuleResponseV1 +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class GetInhibitionRulesPaginatedResponseV1(BaseModel): + """ + GetInhibitionRulesPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[InhibitionRuleResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetInhibitionRulesPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetInhibitionRulesPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [InhibitionRuleResponseV1.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_kafka_integration_response.py b/sysdig_client/models/get_kafka_integration_response.py new file mode 100644 index 00000000..3cf57313 --- /dev/null +++ b/sysdig_client/models/get_kafka_integration_response.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.get_kafka_integration_response_all_of_connection_info import ( + GetKafkaIntegrationResponseAllOfConnectionInfo, +) +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetKafkaIntegrationResponse(BaseModel): + """ + Get Kafka Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: GetKafkaIntegrationResponseAllOfConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetKafkaIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetKafkaIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": GetKafkaIntegrationResponseAllOfConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_kafka_integration_response_all_of_connection_info.py b/sysdig_client/models/get_kafka_integration_response_all_of_connection_info.py new file mode 100644 index 00000000..8d3f3f9f --- /dev/null +++ b/sysdig_client/models/get_kafka_integration_response_all_of_connection_info.py @@ -0,0 +1,154 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class GetKafkaIntegrationResponseAllOfConnectionInfo(BaseModel): + """ + GetKafkaIntegrationResponseAllOfConnectionInfo + """ # noqa: E501 + + brokers: Annotated[List[Annotated[str, Field(strict=True, max_length=256)]], Field(max_length=32)] = Field( + description="Kafka server endpoint. A Kafka cluster may provide several brokers; it follows the 'hostname: port' (without protocol scheme)." + ) + topic: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="Kafka topic where you want to store the forwarded data" + ) + balancer: Optional[StrictStr] = Field( + default="murmur2", + description="Algorithm that the client uses to multiplex data between the multiple Brokers. For compatibility with the Java client, Murmur2 is used as the default partitioner", + ) + compression: Optional[StrictStr] = Field(default=None, description="Compression standard used for the data") + is_tls_enabled: Optional[StrictBool] = Field(default=None, alias="isTlsEnabled") + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + auth: StrictStr = Field(description="The authentication method to optionally use. Currently supporting only GSSAPI") + principal: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI principal") + realm: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI realm") + service: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI Service name") + krb5: Annotated[str, Field(strict=True, max_length=1048576)] = Field(description="Kerberos krb5.conf file content for GSSAPI") + __properties: ClassVar[List[str]] = [ + "brokers", + "topic", + "balancer", + "compression", + "isTlsEnabled", + "isInsecure", + "auth", + "principal", + "realm", + "service", + "krb5", + ] + + @field_validator("balancer") + def balancer_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["roundrobin", "leastbytes", "hash", "crc32", "murmur2"]): + raise ValueError("must be one of enum values ('roundrobin', 'leastbytes', 'hash', 'crc32', 'murmur2')") + return value + + @field_validator("compression") + def compression_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["lz4", "snappy", "zstd", "gzip"]): + raise ValueError("must be one of enum values ('lz4', 'snappy', 'zstd', 'gzip')") + return value + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["gssapi"]): + raise ValueError("must be one of enum values ('gssapi')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetKafkaIntegrationResponseAllOfConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetKafkaIntegrationResponseAllOfConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "brokers": obj.get("brokers"), + "topic": obj.get("topic"), + "balancer": obj.get("balancer") if obj.get("balancer") is not None else "murmur2", + "compression": obj.get("compression"), + "isTlsEnabled": obj.get("isTlsEnabled"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "auth": obj.get("auth"), + "principal": obj.get("principal"), + "realm": obj.get("realm"), + "service": obj.get("service"), + "krb5": obj.get("krb5"), + } + ) + return _obj diff --git a/sysdig_client/models/get_mcm_integration_response.py b/sysdig_client/models/get_mcm_integration_response.py new file mode 100644 index 00000000..bc60ccef --- /dev/null +++ b/sysdig_client/models/get_mcm_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_mcm import BaseConnectionInfoMcm +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetMcmIntegrationResponse(BaseModel): + """ + Get IBM Multicloud Manager Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoMcm = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetMcmIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetMcmIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoMcm.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_microsoft_sentinel_integration_response.py b/sysdig_client/models/get_microsoft_sentinel_integration_response.py new file mode 100644 index 00000000..e8ab59ad --- /dev/null +++ b/sysdig_client/models/get_microsoft_sentinel_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_microsoft_sentinel import BaseConnectionInfoMicrosoftSentinel +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetMicrosoftSentinelIntegrationResponse(BaseModel): + """ + Get Microsoft Sentinel Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoMicrosoftSentinel = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetMicrosoftSentinelIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetMicrosoftSentinelIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoMicrosoftSentinel.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_notification_channels_paginated_response_v1.py b/sysdig_client/models/get_notification_channels_paginated_response_v1.py new file mode 100644 index 00000000..d27e22c9 --- /dev/null +++ b/sysdig_client/models/get_notification_channels_paginated_response_v1.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class GetNotificationChannelsPaginatedResponseV1(BaseModel): + """ + GetNotificationChannelsPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[NotificationChannelResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetNotificationChannelsPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetNotificationChannelsPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [NotificationChannelResponseV1.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_permissions_response_v1.py b/sysdig_client/models/get_permissions_response_v1.py new file mode 100644 index 00000000..1fdb20b7 --- /dev/null +++ b/sysdig_client/models/get_permissions_response_v1.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.permission_v1 import PermissionV1 +from typing import Set +from typing_extensions import Self + + +class GetPermissionsResponseV1(BaseModel): + """ + Permissions response + """ # noqa: E501 + + permissions: Optional[Annotated[List[PermissionV1], Field(max_length=1000)]] = Field( + default=None, description="Set of permissions " + ) + total: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="Total number of permissions" + ) + __properties: ClassVar[List[str]] = ["permissions", "total"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetPermissionsResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) + _items = [] + if self.permissions: + for _item_permissions in self.permissions: + if _item_permissions: + _items.append(_item_permissions.to_dict()) + _dict["permissions"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetPermissionsResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "permissions": [PermissionV1.from_dict(_item) for _item in obj["permissions"]] + if obj.get("permissions") is not None + else None, + "total": obj.get("total"), + } + ) + return _obj diff --git a/sysdig_client/models/get_policy_response.py b/sysdig_client/models/get_policy_response.py new file mode 100644 index 00000000..e59657d4 --- /dev/null +++ b/sysdig_client/models/get_policy_response.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.bundle_ref import BundleRef +from sysdig_client.models.stage import Stage +from typing import Set +from typing_extensions import Self + + +class GetPolicyResponse(BaseModel): + """ + A Policy definition + """ # noqa: E501 + + id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field(description="the Policy ID") + name: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field(description="human readable policy name") + identifier: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field( + description="policy identifier generated from the name" + ) + description: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=1024)]] = Field( + default=None, description="policy description" + ) + bundles: Annotated[List[BundleRef], Field(min_length=0, max_length=1000)] = Field(description="bundles defining this policy") + stages: Annotated[List[Stage], Field(min_length=0, max_length=1000)] = Field( + description="array of stages for the policy. An empty array means the policy is applied only when specifically requested by its identifier. " + ) + __properties: ClassVar[List[str]] = ["id", "name", "identifier", "description", "bundles", "stages"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetPolicyResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in bundles (list) + _items = [] + if self.bundles: + for _item_bundles in self.bundles: + if _item_bundles: + _items.append(_item_bundles.to_dict()) + _dict["bundles"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in stages (list) + _items = [] + if self.stages: + for _item_stages in self.stages: + if _item_stages: + _items.append(_item_stages.to_dict()) + _dict["stages"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetPolicyResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "name": obj.get("name"), + "identifier": obj.get("identifier"), + "description": obj.get("description"), + "bundles": [BundleRef.from_dict(_item) for _item in obj["bundles"]] if obj.get("bundles") is not None else None, + "stages": [Stage.from_dict(_item) for _item in obj["stages"]] if obj.get("stages") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_pricing_paginated_response_v1.py b/sysdig_client/models/get_pricing_paginated_response_v1.py new file mode 100644 index 00000000..804812a7 --- /dev/null +++ b/sysdig_client/models/get_pricing_paginated_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from sysdig_client.models.pricing_response_v1 import PricingResponseV1 +from typing import Set +from typing_extensions import Self + + +class GetPricingPaginatedResponseV1(BaseModel): + """ + GetPricingPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[PricingResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetPricingPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetPricingPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [PricingResponseV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_pricing_projected_paginated_response_v1.py b/sysdig_client/models/get_pricing_projected_paginated_response_v1.py new file mode 100644 index 00000000..bb106d45 --- /dev/null +++ b/sysdig_client/models/get_pricing_projected_paginated_response_v1.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from sysdig_client.models.pricing_projected_response_v1 import PricingProjectedResponseV1 +from typing import Set +from typing_extensions import Self + + +class GetPricingProjectedPaginatedResponseV1(BaseModel): + """ + GetPricingProjectedPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[PricingProjectedResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetPricingProjectedPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetPricingProjectedPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [PricingProjectedResponseV1.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_qradar_integration_response.py b/sysdig_client/models/get_qradar_integration_response.py new file mode 100644 index 00000000..a2738d2c --- /dev/null +++ b/sysdig_client/models/get_qradar_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_qradar import BaseConnectionInfoQradar +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetQradarIntegrationResponse(BaseModel): + """ + Get IBM QRadar Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoQradar = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetQradarIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetQradarIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoQradar.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_query_range_v1_step_parameter.py b/sysdig_client/models/get_query_range_v1_step_parameter.py new file mode 100644 index 00000000..d5fd34e2 --- /dev/null +++ b/sysdig_client/models/get_query_range_v1_step_parameter.py @@ -0,0 +1,156 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from typing_extensions import Annotated +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +GETQUERYRANGEV1STEPPARAMETER_ONE_OF_SCHEMAS = ["int", "str"] + + +class GetQueryRangeV1StepParameter(BaseModel): + """ + GetQueryRangeV1StepParameter + """ + + # data type: str + oneof_schema_1_validator: Optional[Annotated[str, Field(strict=True, max_length=50)]] = Field( + default=None, description="Time defined as a Golang-style duration type" + ) + # data type: int + oneof_schema_2_validator: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + actual_instance: Optional[Union[int, str]] = None + one_of_schemas: Set[str] = {"int", "str"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = GetQueryRangeV1StepParameter.model_construct() + error_messages = [] + match = 0 + # validate data type: str + try: + instance.oneof_schema_1_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: int + try: + instance.oneof_schema_2_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in GetQueryRangeV1StepParameter with oneOf schemas: int, str. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in GetQueryRangeV1StepParameter with oneOf schemas: int, str. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into str + try: + # validation + instance.oneof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_1_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into int + try: + # validation + instance.oneof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_2_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into GetQueryRangeV1StepParameter with oneOf schemas: int, str. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into GetQueryRangeV1StepParameter with oneOf schemas: int, str. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], int, str]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/get_query_v1401_response.py b/sysdig_client/models/get_query_v1401_response.py new file mode 100644 index 00000000..b29f9f3c --- /dev/null +++ b/sysdig_client/models/get_query_v1401_response.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class GetQueryV1401Response(BaseModel): + """ + GetQueryV1401Response + """ # noqa: E501 + + timestamp: Annotated[int, Field(le=9999999999999, strict=True, ge=0)] = Field( + description="Epoch timestamp (milliseconds) when the error occurred." + ) + status: Annotated[int, Field(le=401, strict=True, ge=401)] = Field(description="HTTP status code of the response.") + error: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="A human-readable error message.") + path: Annotated[str, Field(strict=True, max_length=1024)] = Field( + description="The requested endpoint path that triggered the error." + ) + __properties: ClassVar[List[str]] = ["timestamp", "status", "error", "path"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value not in set([401]): + raise ValueError("must be one of enum values (401)") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetQueryV1401Response from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetQueryV1401Response from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"timestamp": obj.get("timestamp"), "status": obj.get("status"), "error": obj.get("error"), "path": obj.get("path")} + ) + return _obj diff --git a/sysdig_client/models/get_roles_paginated_response_v1.py b/sysdig_client/models/get_roles_paginated_response_v1.py new file mode 100644 index 00000000..308da35a --- /dev/null +++ b/sysdig_client/models/get_roles_paginated_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from sysdig_client.models.role_response_v1 import RoleResponseV1 +from typing import Set +from typing_extensions import Self + + +class GetRolesPaginatedResponseV1(BaseModel): + """ + GetRolesPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[RoleResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetRolesPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetRolesPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [RoleResponseV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_service_accounts_paginated_response_v1.py b/sysdig_client/models/get_service_accounts_paginated_response_v1.py new file mode 100644 index 00000000..7b349d8f --- /dev/null +++ b/sysdig_client/models/get_service_accounts_paginated_response_v1.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from sysdig_client.models.service_account_response_v1 import ServiceAccountResponseV1 +from typing import Set +from typing_extensions import Self + + +class GetServiceAccountsPaginatedResponseV1(BaseModel): + """ + GetServiceAccountsPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[ServiceAccountResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetServiceAccountsPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetServiceAccountsPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [ServiceAccountResponseV1.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_splunk_integration_response.py b/sysdig_client/models/get_splunk_integration_response.py new file mode 100644 index 00000000..dd474d49 --- /dev/null +++ b/sysdig_client/models/get_splunk_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_splunk import BaseConnectionInfoSplunk +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetSplunkIntegrationResponse(BaseModel): + """ + Get Splunk Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoSplunk = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetSplunkIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetSplunkIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoSplunk.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_syslog_integration_response.py b/sysdig_client/models/get_syslog_integration_response.py new file mode 100644 index 00000000..fa6fe89f --- /dev/null +++ b/sysdig_client/models/get_syslog_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_syslog import BaseConnectionInfoSyslog +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetSyslogIntegrationResponse(BaseModel): + """ + Get Syslog Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoSyslog = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetSyslogIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetSyslogIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoSyslog.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_team_users_paginated_response_v1.py b/sysdig_client/models/get_team_users_paginated_response_v1.py new file mode 100644 index 00000000..d29f5e65 --- /dev/null +++ b/sysdig_client/models/get_team_users_paginated_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from sysdig_client.models.team_user_response_v1 import TeamUserResponseV1 +from typing import Set +from typing_extensions import Self + + +class GetTeamUsersPaginatedResponseV1(BaseModel): + """ + GetTeamUsersPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[TeamUserResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetTeamUsersPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetTeamUsersPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [TeamUserResponseV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_teams_paginated_response_v1.py b/sysdig_client/models/get_teams_paginated_response_v1.py new file mode 100644 index 00000000..9baf7a71 --- /dev/null +++ b/sysdig_client/models/get_teams_paginated_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from sysdig_client.models.team_response_v1 import TeamResponseV1 +from typing import Set +from typing_extensions import Self + + +class GetTeamsPaginatedResponseV1(BaseModel): + """ + GetTeamsPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[TeamResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetTeamsPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetTeamsPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [TeamResponseV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_users_paginated_response_v1.py b/sysdig_client/models/get_users_paginated_response_v1.py new file mode 100644 index 00000000..ac16bb49 --- /dev/null +++ b/sysdig_client/models/get_users_paginated_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from sysdig_client.models.user_response_v1 import UserResponseV1 +from typing import Set +from typing_extensions import Self + + +class GetUsersPaginatedResponseV1(BaseModel): + """ + GetUsersPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[UserResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetUsersPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetUsersPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [UserResponseV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/get_webhook_integration_response.py b/sysdig_client/models/get_webhook_integration_response.py new file mode 100644 index 00000000..b09e906b --- /dev/null +++ b/sysdig_client/models/get_webhook_integration_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_webhook import BaseConnectionInfoWebhook +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class GetWebhookIntegrationResponse(BaseModel): + """ + Get Webhook Integration Response + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: StrictBool = Field(description="If the forwarding should be enabled or not", alias="isEnabled") + type: IntegrationType + channels: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The ID of the integration") + connection_info: BaseConnectionInfoWebhook = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "id", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GetWebhookIntegrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GetWebhookIntegrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "id": obj.get("id"), + "connectionInfo": BaseConnectionInfoWebhook.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/global_sso_settings_request_v1.py b/sysdig_client/models/global_sso_settings_request_v1.py new file mode 100644 index 00000000..8449b731 --- /dev/null +++ b/sysdig_client/models/global_sso_settings_request_v1.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class GlobalSsoSettingsRequestV1(BaseModel): + """ + GlobalSsoSettingsRequestV1 + """ # noqa: E501 + + is_password_login_enabled: StrictBool = Field( + description="Set to `true` to enable password login when SSO is enabled, or `false` to disable it.", + alias="isPasswordLoginEnabled", + ) + __properties: ClassVar[List[str]] = ["isPasswordLoginEnabled"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GlobalSsoSettingsRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GlobalSsoSettingsRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"isPasswordLoginEnabled": obj.get("isPasswordLoginEnabled")}) + return _obj diff --git a/sysdig_client/models/global_sso_settings_response_v1.py b/sysdig_client/models/global_sso_settings_response_v1.py new file mode 100644 index 00000000..b6ce2bf5 --- /dev/null +++ b/sysdig_client/models/global_sso_settings_response_v1.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class GlobalSsoSettingsResponseV1(BaseModel): + """ + GlobalSsoSettingsResponseV1 + """ # noqa: E501 + + is_password_login_enabled: Optional[StrictBool] = Field( + default=None, description="Indicates whether password login is enabled.", alias="isPasswordLoginEnabled" + ) + __properties: ClassVar[List[str]] = ["isPasswordLoginEnabled"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GlobalSsoSettingsResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GlobalSsoSettingsResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"isPasswordLoginEnabled": obj.get("isPasswordLoginEnabled")}) + return _obj diff --git a/sysdig_client/models/google_pub_sub_create_connection_info.py b/sysdig_client/models/google_pub_sub_create_connection_info.py new file mode 100644 index 00000000..be491794 --- /dev/null +++ b/sysdig_client/models/google_pub_sub_create_connection_info.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class GooglePubSubCreateConnectionInfo(BaseModel): + """ + GooglePubSubCreateConnectionInfo + """ # noqa: E501 + + project: Annotated[str, Field(strict=True, max_length=16)] = Field(description="GCP project ID hosting the target pub/sub") + topic: Annotated[str, Field(strict=True, max_length=16)] = Field(description="pub/sub topic onto which publish the data") + ordering_key: Optional[Annotated[str, Field(strict=True, max_length=16)]] = Field( + default=None, description="The key to use to order the messages. Required to enable ordered delivery", alias="orderingKey" + ) + attributes: Optional[Annotated[List[KeyValueObject], Field(max_length=128)]] = Field( + default=None, + description='Extra headers to add to the request. Each header mapping requires 2 keys: "key" for the header key and "value" for its value', + ) + credentials_json: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="JSON credentials for the service account Sysdig will use to send data", alias="credentialsJson" + ) + __properties: ClassVar[List[str]] = ["project", "topic", "orderingKey", "attributes", "credentialsJson"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GooglePubSubCreateConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) + _items = [] + if self.attributes: + for _item_attributes in self.attributes: + if _item_attributes: + _items.append(_item_attributes.to_dict()) + _dict["attributes"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GooglePubSubCreateConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "project": obj.get("project"), + "topic": obj.get("topic"), + "orderingKey": obj.get("orderingKey"), + "attributes": [KeyValueObject.from_dict(_item) for _item in obj["attributes"]] + if obj.get("attributes") is not None + else None, + "credentialsJson": obj.get("credentialsJson"), + } + ) + return _obj diff --git a/sysdig_client/models/google_pub_sub_create_connection_info1.py b/sysdig_client/models/google_pub_sub_create_connection_info1.py new file mode 100644 index 00000000..ec4646db --- /dev/null +++ b/sysdig_client/models/google_pub_sub_create_connection_info1.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class GooglePubSubCreateConnectionInfo1(BaseModel): + """ + GooglePubSubCreateConnectionInfo1 + """ # noqa: E501 + + project: Annotated[str, Field(strict=True, max_length=16)] = Field(description="GCP project ID hosting the target pub/sub") + topic: Annotated[str, Field(strict=True, max_length=16)] = Field(description="pub/sub topic onto which publish the data") + ordering_key: Optional[Annotated[str, Field(strict=True, max_length=16)]] = Field( + default=None, description="The key to use to order the messages. Required to enable ordered delivery", alias="orderingKey" + ) + attributes: Optional[Annotated[List[KeyValueObject], Field(max_length=128)]] = Field( + default=None, + description='Extra headers to add to the request. Each header mapping requires 2 keys: "key" for the header key and "value" for its value', + ) + credentials_json: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="JSON credentials for the service account Sysdig will use to send data", alias="credentialsJson" + ) + __properties: ClassVar[List[str]] = ["project", "topic", "orderingKey", "attributes", "credentialsJson"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GooglePubSubCreateConnectionInfo1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) + _items = [] + if self.attributes: + for _item_attributes in self.attributes: + if _item_attributes: + _items.append(_item_attributes.to_dict()) + _dict["attributes"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GooglePubSubCreateConnectionInfo1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "project": obj.get("project"), + "topic": obj.get("topic"), + "orderingKey": obj.get("orderingKey"), + "attributes": [KeyValueObject.from_dict(_item) for _item in obj["attributes"]] + if obj.get("attributes") is not None + else None, + "credentialsJson": obj.get("credentialsJson"), + } + ) + return _obj diff --git a/sysdig_client/models/google_scc_create_connection_info.py b/sysdig_client/models/google_scc_create_connection_info.py new file mode 100644 index 00000000..56286d97 --- /dev/null +++ b/sysdig_client/models/google_scc_create_connection_info.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class GoogleSCCCreateConnectionInfo(BaseModel): + """ + GoogleSCCCreateConnectionInfo + """ # noqa: E501 + + organization: Annotated[str, Field(strict=True, max_length=16)] = Field(description="ID of your GCP organization") + security_marks: Optional[Annotated[List[KeyValueObject], Field(max_length=256)]] = Field( + default=None, + description="additional annotations to add to assets or findings as they get forwarded to Security Command Center", + alias="securityMarks", + ) + credentials_json: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="JSON credentials for the service account Sysdig will use to send data", alias="credentialsJson" + ) + __properties: ClassVar[List[str]] = ["organization", "securityMarks", "credentialsJson"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GoogleSCCCreateConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in security_marks (list) + _items = [] + if self.security_marks: + for _item_security_marks in self.security_marks: + if _item_security_marks: + _items.append(_item_security_marks.to_dict()) + _dict["securityMarks"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GoogleSCCCreateConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "organization": obj.get("organization"), + "securityMarks": [KeyValueObject.from_dict(_item) for _item in obj["securityMarks"]] + if obj.get("securityMarks") is not None + else None, + "credentialsJson": obj.get("credentialsJson"), + } + ) + return _obj diff --git a/sysdig_client/models/google_scc_create_connection_info1.py b/sysdig_client/models/google_scc_create_connection_info1.py new file mode 100644 index 00000000..264b0939 --- /dev/null +++ b/sysdig_client/models/google_scc_create_connection_info1.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class GoogleSCCCreateConnectionInfo1(BaseModel): + """ + GoogleSCCCreateConnectionInfo1 + """ # noqa: E501 + + organization: Annotated[str, Field(strict=True, max_length=16)] = Field(description="ID of your GCP organization") + security_marks: Optional[Annotated[List[KeyValueObject], Field(max_length=256)]] = Field( + default=None, + description="additional annotations to add to assets or findings as they get forwarded to Security Command Center", + alias="securityMarks", + ) + credentials_json: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="JSON credentials for the service account Sysdig will use to send data", alias="credentialsJson" + ) + __properties: ClassVar[List[str]] = ["organization", "securityMarks", "credentialsJson"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GoogleSCCCreateConnectionInfo1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in security_marks (list) + _items = [] + if self.security_marks: + for _item_security_marks in self.security_marks: + if _item_security_marks: + _items.append(_item_security_marks.to_dict()) + _dict["securityMarks"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GoogleSCCCreateConnectionInfo1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "organization": obj.get("organization"), + "securityMarks": [KeyValueObject.from_dict(_item) for _item in obj["securityMarks"]] + if obj.get("securityMarks") is not None + else None, + "credentialsJson": obj.get("credentialsJson"), + } + ) + return _obj diff --git a/sysdig_client/models/group_mapping_response_v1.py b/sysdig_client/models/group_mapping_response_v1.py new file mode 100644 index 00000000..24ee4b19 --- /dev/null +++ b/sysdig_client/models/group_mapping_response_v1.py @@ -0,0 +1,149 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.team_map_v1 import TeamMapV1 +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from typing import Set +from typing_extensions import Self + + +class GroupMappingResponseV1(BaseModel): + """ + GroupMappingResponseV1 + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + group_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The group name matching the external provider name.", alias="groupName" + ) + standard_team_role: Optional[TeamRoleV1] = Field( + default=None, + description="The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**. ", + alias="standardTeamRole", + ) + custom_team_role_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, + description="The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. ", + alias="customTeamRoleId", + ) + is_admin: Optional[StrictBool] = Field( + default=None, description="Flag that indicates if the group is an admin group.", alias="isAdmin" + ) + team_map: Optional[TeamMapV1] = Field(default=None, alias="teamMap") + weight: Optional[Annotated[int, Field(le=32767, strict=True, ge=1)]] = Field( + default=None, + description="The weight of the group mapping that is used to determine the priority - a lower number has higher priority.", + ) + date_created: Optional[datetime] = Field( + default=None, description="The date in which this group mapping was created in ISO 8601 format.", alias="dateCreated" + ) + last_updated: Optional[datetime] = Field( + default=None, description="The date in which this group mapping was last updated in ISO 8601 format.", alias="lastUpdated" + ) + __properties: ClassVar[List[str]] = [ + "id", + "groupName", + "standardTeamRole", + "customTeamRoleId", + "isAdmin", + "teamMap", + "weight", + "dateCreated", + "lastUpdated", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GroupMappingResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of team_map + if self.team_map: + _dict["teamMap"] = self.team_map.to_dict() + # set to None if standard_team_role (nullable) is None + # and model_fields_set contains the field + if self.standard_team_role is None and "standard_team_role" in self.model_fields_set: + _dict["standardTeamRole"] = None + + # set to None if custom_team_role_id (nullable) is None + # and model_fields_set contains the field + if self.custom_team_role_id is None and "custom_team_role_id" in self.model_fields_set: + _dict["customTeamRoleId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GroupMappingResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "groupName": obj.get("groupName"), + "standardTeamRole": obj.get("standardTeamRole"), + "customTeamRoleId": obj.get("customTeamRoleId"), + "isAdmin": obj.get("isAdmin"), + "teamMap": TeamMapV1.from_dict(obj["teamMap"]) if obj.get("teamMap") is not None else None, + "weight": obj.get("weight"), + "dateCreated": obj.get("dateCreated"), + "lastUpdated": obj.get("lastUpdated"), + } + ) + return _obj diff --git a/sysdig_client/models/group_mapping_settings_v1.py b/sysdig_client/models/group_mapping_settings_v1.py new file mode 100644 index 00000000..0c140b15 --- /dev/null +++ b/sysdig_client/models/group_mapping_settings_v1.py @@ -0,0 +1,117 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class GroupMappingSettingsV1(BaseModel): + """ + The request to save group mapping settings. Currently settings for conflict resolution strategies are supported. + """ # noqa: E501 + + no_mapping_strategy: StrictStr = Field(description="Strategy for handling no mappings. ", alias="noMappingStrategy") + different_roles_same_team_strategy: StrictStr = Field( + description="Strategy for handling different roles on the same team. ", alias="differentRolesSameTeamStrategy" + ) + no_mappings_error_redirect_url: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="Redirect URL when NO_MAPPINGS_ERROR_REDIRECT is selected. ", alias="noMappingsErrorRedirectUrl" + ) + __properties: ClassVar[List[str]] = ["noMappingStrategy", "differentRolesSameTeamStrategy", "noMappingsErrorRedirectUrl"] + + @field_validator("no_mapping_strategy") + def no_mapping_strategy_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["UNAUTHORIZED", "DEFAULT_TEAM_DEFAULT_ROLE", "NO_MAPPINGS_ERROR_REDIRECT"]): + raise ValueError( + "must be one of enum values ('UNAUTHORIZED', 'DEFAULT_TEAM_DEFAULT_ROLE', 'NO_MAPPINGS_ERROR_REDIRECT')" + ) + return value + + @field_validator("different_roles_same_team_strategy") + def different_roles_same_team_strategy_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["UNAUTHORIZED", "FIRST_MATCH", "WEIGHTED", "WEIGHTED_BY_TEAM"]): + raise ValueError("must be one of enum values ('UNAUTHORIZED', 'FIRST_MATCH', 'WEIGHTED', 'WEIGHTED_BY_TEAM')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GroupMappingSettingsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if no_mappings_error_redirect_url (nullable) is None + # and model_fields_set contains the field + if self.no_mappings_error_redirect_url is None and "no_mappings_error_redirect_url" in self.model_fields_set: + _dict["noMappingsErrorRedirectUrl"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GroupMappingSettingsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "noMappingStrategy": obj.get("noMappingStrategy"), + "differentRolesSameTeamStrategy": obj.get("differentRolesSameTeamStrategy"), + "noMappingsErrorRedirectUrl": obj.get("noMappingsErrorRedirectUrl"), + } + ) + return _obj diff --git a/sysdig_client/models/group_mappings_paginated_response_v1.py b/sysdig_client/models/group_mappings_paginated_response_v1.py new file mode 100644 index 00000000..f0b79b76 --- /dev/null +++ b/sysdig_client/models/group_mappings_paginated_response_v1.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.group_mapping_response_v1 import GroupMappingResponseV1 +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class GroupMappingsPaginatedResponseV1(BaseModel): + """ + GroupMappingsPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[GroupMappingResponseV1], Field(max_length=8192)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GroupMappingsPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GroupMappingsPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [GroupMappingResponseV1.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/gssapi_connection_info_kafka.py b/sysdig_client/models/gssapi_connection_info_kafka.py new file mode 100644 index 00000000..7eda73ed --- /dev/null +++ b/sysdig_client/models/gssapi_connection_info_kafka.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class GssapiConnectionInfoKafka(BaseModel): + """ + GssapiConnectionInfoKafka + """ # noqa: E501 + + auth: StrictStr = Field(description="The authentication method to optionally use. Currently supporting only GSSAPI") + principal: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI principal") + realm: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI realm") + service: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI Service name") + krb5: Annotated[str, Field(strict=True, max_length=1048576)] = Field(description="Kerberos krb5.conf file content for GSSAPI") + __properties: ClassVar[List[str]] = ["auth", "principal", "realm", "service", "krb5"] + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["gssapi"]): + raise ValueError("must be one of enum values ('gssapi')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GssapiConnectionInfoKafka from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GssapiConnectionInfoKafka from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "auth": obj.get("auth"), + "principal": obj.get("principal"), + "realm": obj.get("realm"), + "service": obj.get("service"), + "krb5": obj.get("krb5"), + } + ) + return _obj diff --git a/sysdig_client/models/host_metadata.py b/sysdig_client/models/host_metadata.py new file mode 100644 index 00000000..45c37954 --- /dev/null +++ b/sysdig_client/models/host_metadata.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class HostMetadata(BaseModel): + """ + HostMetadata + """ # noqa: E501 + + architecture: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field( + default=None, description="host architecture" + ) + host_id: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="host id", alias="hostId") + host_name: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="host name", alias="hostName") + os: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="host os") + __properties: ClassVar[List[str]] = ["architecture", "hostId", "hostName", "os"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of HostMetadata from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of HostMetadata from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "architecture": obj.get("architecture"), + "hostId": obj.get("hostId"), + "hostName": obj.get("hostName"), + "os": obj.get("os"), + } + ) + return _obj diff --git a/sysdig_client/models/host_name.py b/sysdig_client/models/host_name.py new file mode 100644 index 00000000..6c32f358 --- /dev/null +++ b/sysdig_client/models/host_name.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class HostName(BaseModel): + """ + HostName + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["hostName"]): + raise ValueError("must be one of enum values ('hostName')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of HostName from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of HostName from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/host_name_contains.py b/sysdig_client/models/host_name_contains.py new file mode 100644 index 00000000..b74253a2 --- /dev/null +++ b/sysdig_client/models/host_name_contains.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class HostNameContains(BaseModel): + """ + HostNameContains + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["hostNameContains"]): + raise ValueError("must be one of enum values ('hostNameContains')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of HostNameContains from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of HostNameContains from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/ibm_event_notifications_notification_channel_options_v1.py b/sysdig_client/models/ibm_event_notifications_notification_channel_options_v1.py new file mode 100644 index 00000000..408a6016 --- /dev/null +++ b/sysdig_client/models/ibm_event_notifications_notification_channel_options_v1.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class IbmEventNotificationsNotificationChannelOptionsV1(BaseModel): + """ + The IBM Event Notifications notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + instance_id: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="The IBM Event Notification Service Instance Id", alias="instanceId" + ) + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "instanceId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IbmEventNotificationsNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IbmEventNotificationsNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), "instanceId": obj.get("instanceId")} + ) + return _obj diff --git a/sysdig_client/models/ibm_event_notifications_notification_channel_response_v1.py b/sysdig_client/models/ibm_event_notifications_notification_channel_response_v1.py new file mode 100644 index 00000000..4f3d5062 --- /dev/null +++ b/sysdig_client/models/ibm_event_notifications_notification_channel_response_v1.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.ibm_event_notifications_notification_channel_options_v1 import ( + IbmEventNotificationsNotificationChannelOptionsV1, +) +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from typing import Set +from typing_extensions import Self + + +class IbmEventNotificationsNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + IbmEventNotificationsNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: IbmEventNotificationsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IbmEventNotificationsNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IbmEventNotificationsNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": IbmEventNotificationsNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/ibm_multicloud_cloud_create_connection_info.py b/sysdig_client/models/ibm_multicloud_cloud_create_connection_info.py new file mode 100644 index 00000000..0c1bd16e --- /dev/null +++ b/sysdig_client/models/ibm_multicloud_cloud_create_connection_info.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class IBMMulticloudCloudCreateConnectionInfo(BaseModel): + """ + IBMMulticloudCloudCreateConnectionInfo + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="The URL, including protocol and port (if non standard), to your IBM Cloud Pak for Multicloud Management API endpoint" + ) + account_id: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default="id-mycluster-account", description="IBM Account ID", alias="accountId" + ) + provider_id: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default="sysdig-secure", description="The provider the findings will be associated to", alias="providerId" + ) + note_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="The note to use. If unspecified, a note with `policy-event` ID will be created and used", + alias="noteName", + ) + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + api_key: Annotated[str, Field(strict=True, max_length=256)] = Field(description="IBM Cloud API Key", alias="apiKey") + __properties: ClassVar[List[str]] = ["endpoint", "accountId", "providerId", "noteName", "isInsecure", "apiKey"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IBMMulticloudCloudCreateConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IBMMulticloudCloudCreateConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "accountId": obj.get("accountId") if obj.get("accountId") is not None else "id-mycluster-account", + "providerId": obj.get("providerId") if obj.get("providerId") is not None else "sysdig-secure", + "noteName": obj.get("noteName"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "apiKey": obj.get("apiKey"), + } + ) + return _obj diff --git a/sysdig_client/models/ibm_multicloud_cloud_create_connection_info1.py b/sysdig_client/models/ibm_multicloud_cloud_create_connection_info1.py new file mode 100644 index 00000000..e3b77b93 --- /dev/null +++ b/sysdig_client/models/ibm_multicloud_cloud_create_connection_info1.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class IBMMulticloudCloudCreateConnectionInfo1(BaseModel): + """ + IBMMulticloudCloudCreateConnectionInfo1 + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="The URL, including protocol and port (if non standard), to your IBM Cloud Pak for Multicloud Management API endpoint" + ) + account_id: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default="id-mycluster-account", description="IBM Account ID", alias="accountId" + ) + provider_id: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default="sysdig-secure", description="The provider the findings will be associated to", alias="providerId" + ) + note_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="The note to use. If unspecified, a note with `policy-event` ID will be created and used", + alias="noteName", + ) + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + api_key: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="IBM Cloud API Key", alias="apiKey" + ) + __properties: ClassVar[List[str]] = ["endpoint", "accountId", "providerId", "noteName", "isInsecure", "apiKey"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IBMMulticloudCloudCreateConnectionInfo1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IBMMulticloudCloudCreateConnectionInfo1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "accountId": obj.get("accountId") if obj.get("accountId") is not None else "id-mycluster-account", + "providerId": obj.get("providerId") if obj.get("providerId") is not None else "sysdig-secure", + "noteName": obj.get("noteName"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "apiKey": obj.get("apiKey"), + } + ) + return _obj diff --git a/sysdig_client/models/image.py b/sysdig_client/models/image.py new file mode 100644 index 00000000..e76e43fd --- /dev/null +++ b/sysdig_client/models/image.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.vulnerability_summary import VulnerabilitySummary +from typing import Optional, Set +from typing_extensions import Self + + +class Image(BaseModel): + """ + An Image resource that returns as part of of the image summary. + """ # noqa: E501 + + hash: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Resource unique identifier") + name: Annotated[str, Field(strict=True, max_length=8192)] = Field(description="Resource name") + type: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The resource type") + pull_string: Annotated[str, Field(strict=True, max_length=8192)] = Field( + description="The pull string for the image.", alias="pullString" + ) + vulnerability_summary: VulnerabilitySummary = Field(alias="vulnerabilitySummary") + in_use_vulnerability_summary: VulnerabilitySummary = Field(alias="inUseVulnerabilitySummary") + vm_api_endpoint: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="A link that provides vulnerability management information about an image (Images only).", + alias="vmApiEndpoint", + ) + __properties: ClassVar[List[str]] = [ + "hash", + "name", + "type", + "pullString", + "vulnerabilitySummary", + "inUseVulnerabilitySummary", + "vmApiEndpoint", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Image from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of vulnerability_summary + if self.vulnerability_summary: + _dict["vulnerabilitySummary"] = self.vulnerability_summary.to_dict() + # override the default output from pydantic by calling `to_dict()` of in_use_vulnerability_summary + if self.in_use_vulnerability_summary: + _dict["inUseVulnerabilitySummary"] = self.in_use_vulnerability_summary.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Image from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hash": obj.get("hash"), + "name": obj.get("name"), + "type": obj.get("type"), + "pullString": obj.get("pullString"), + "vulnerabilitySummary": VulnerabilitySummary.from_dict(obj["vulnerabilitySummary"]) + if obj.get("vulnerabilitySummary") is not None + else None, + "inUseVulnerabilitySummary": VulnerabilitySummary.from_dict(obj["inUseVulnerabilitySummary"]) + if obj.get("inUseVulnerabilitySummary") is not None + else None, + "vmApiEndpoint": obj.get("vmApiEndpoint"), + } + ) + return _obj diff --git a/sysdig_client/models/image_config_creation_date_with_age.py b/sysdig_client/models/image_config_creation_date_with_age.py new file mode 100644 index 00000000..53732ae0 --- /dev/null +++ b/sysdig_client/models/image_config_creation_date_with_age.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.image_config_creation_date_with_age_extra import ImageConfigCreationDateWithAgeExtra +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigCreationDateWithAge(BaseModel): + """ + Predicate expressing \"the image has been created before the specified amount of days\". + """ # noqa: E501 + + type: StrictStr + extra: ImageConfigCreationDateWithAgeExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigCreationDateWithAge"]): + raise ValueError("must be one of enum values ('imageConfigCreationDateWithAge')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigCreationDateWithAge from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigCreationDateWithAge from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": ImageConfigCreationDateWithAgeExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/image_config_creation_date_with_age_extra.py b/sysdig_client/models/image_config_creation_date_with_age_extra.py new file mode 100644 index 00000000..158170f5 --- /dev/null +++ b/sysdig_client/models/image_config_creation_date_with_age_extra.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ImageConfigCreationDateWithAgeExtra(BaseModel): + """ + ImageConfigCreationDateWithAgeExtra + """ # noqa: E501 + + key: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=1)]] = None + __properties: ClassVar[List[str]] = ["key"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigCreationDateWithAgeExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigCreationDateWithAgeExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"key": obj.get("key")}) + return _obj diff --git a/sysdig_client/models/image_config_default_user_is_not.py b/sysdig_client/models/image_config_default_user_is_not.py new file mode 100644 index 00000000..01915d53 --- /dev/null +++ b/sysdig_client/models/image_config_default_user_is_not.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.image_config_default_user_is_not_extra import ImageConfigDefaultUserIsNotExtra +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigDefaultUserIsNot(BaseModel): + """ + Predicate expressing \"the container user does not default to the specified user\". + """ # noqa: E501 + + type: StrictStr + extra: ImageConfigDefaultUserIsNotExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigDefaultUserIsNot"]): + raise ValueError("must be one of enum values ('imageConfigDefaultUserIsNot')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserIsNot from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserIsNot from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": ImageConfigDefaultUserIsNotExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/image_config_default_user_is_not_extra.py b/sysdig_client/models/image_config_default_user_is_not_extra.py new file mode 100644 index 00000000..328b3065 --- /dev/null +++ b/sysdig_client/models/image_config_default_user_is_not_extra.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigDefaultUserIsNotExtra(BaseModel): + """ + ImageConfigDefaultUserIsNotExtra + """ # noqa: E501 + + user: Annotated[str, Field(strict=True, max_length=1024)] + __properties: ClassVar[List[str]] = ["user"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserIsNotExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserIsNotExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"user": obj.get("user")}) + return _obj diff --git a/sysdig_client/models/image_config_default_user_is_root.py b/sysdig_client/models/image_config_default_user_is_root.py new file mode 100644 index 00000000..62bb563f --- /dev/null +++ b/sysdig_client/models/image_config_default_user_is_root.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigDefaultUserIsRoot(BaseModel): + """ + Predicate expressing \"the container user defaults to root user\". + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigDefaultUserIsRoot"]): + raise ValueError("must be one of enum values ('imageConfigDefaultUserIsRoot')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserIsRoot from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserIsRoot from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/image_config_default_user_list.py b/sysdig_client/models/image_config_default_user_list.py new file mode 100644 index 00000000..3bd9e632 --- /dev/null +++ b/sysdig_client/models/image_config_default_user_list.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.image_config_default_user_list_extra import ImageConfigDefaultUserListExtra +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigDefaultUserList(BaseModel): + """ + Configuration to set the default user for the specified image. + """ # noqa: E501 + + type: StrictStr + extra: ImageConfigDefaultUserListExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigDefaultUserList"]): + raise ValueError("must be one of enum values ('imageConfigDefaultUserList')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserList from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserList from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": ImageConfigDefaultUserListExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/image_config_default_user_list_extra.py b/sysdig_client/models/image_config_default_user_list_extra.py new file mode 100644 index 00000000..a72ae612 --- /dev/null +++ b/sysdig_client/models/image_config_default_user_list_extra.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigDefaultUserListExtra(BaseModel): + """ + ImageConfigDefaultUserListExtra + """ # noqa: E501 + + operator: StrictStr + users: Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=256)]], Field(min_length=0, max_length=1024)] + __properties: ClassVar[List[str]] = ["operator", "users"] + + @field_validator("operator") + def operator_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["IN", "NOT_IN"]): + raise ValueError("must be one of enum values ('IN', 'NOT_IN')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserListExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigDefaultUserListExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"operator": obj.get("operator"), "users": obj.get("users")}) + return _obj diff --git a/sysdig_client/models/image_config_env_variable_contains.py b/sysdig_client/models/image_config_env_variable_contains.py new file mode 100644 index 00000000..55e08c78 --- /dev/null +++ b/sysdig_client/models/image_config_env_variable_contains.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.image_config_env_variable_contains_extra import ImageConfigEnvVariableContainsExtra +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigEnvVariableContains(BaseModel): + """ + Predicate expressing \"the container has the specified environment variable and value\". + """ # noqa: E501 + + type: StrictStr + extra: ImageConfigEnvVariableContainsExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigEnvVariableContains"]): + raise ValueError("must be one of enum values ('imageConfigEnvVariableContains')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableContains from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableContains from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": ImageConfigEnvVariableContainsExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/image_config_env_variable_contains_extra.py b/sysdig_client/models/image_config_env_variable_contains_extra.py new file mode 100644 index 00000000..698d0b4a --- /dev/null +++ b/sysdig_client/models/image_config_env_variable_contains_extra.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ImageConfigEnvVariableContainsExtra(BaseModel): + """ + ImageConfigEnvVariableContainsExtra + """ # noqa: E501 + + key: Annotated[str, Field(strict=True, max_length=1024)] + value: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = None + __properties: ClassVar[List[str]] = ["key", "value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableContainsExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableContainsExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"key": obj.get("key"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/image_config_env_variable_exists.py b/sysdig_client/models/image_config_env_variable_exists.py new file mode 100644 index 00000000..63ff5516 --- /dev/null +++ b/sysdig_client/models/image_config_env_variable_exists.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.image_config_env_variable_exists_extra import ImageConfigEnvVariableExistsExtra +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigEnvVariableExists(BaseModel): + """ + Predicate expressing \"the container has the specified environment variable\". + """ # noqa: E501 + + type: StrictStr + extra: ImageConfigEnvVariableExistsExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigEnvVariableExists"]): + raise ValueError("must be one of enum values ('imageConfigEnvVariableExists')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableExists from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableExists from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": ImageConfigEnvVariableExistsExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/image_config_env_variable_exists_extra.py b/sysdig_client/models/image_config_env_variable_exists_extra.py new file mode 100644 index 00000000..6df305e4 --- /dev/null +++ b/sysdig_client/models/image_config_env_variable_exists_extra.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigEnvVariableExistsExtra(BaseModel): + """ + ImageConfigEnvVariableExistsExtra + """ # noqa: E501 + + key: Annotated[str, Field(strict=True, max_length=1024)] + __properties: ClassVar[List[str]] = ["key"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableExistsExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableExistsExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"key": obj.get("key")}) + return _obj diff --git a/sysdig_client/models/image_config_env_variable_not_exists.py b/sysdig_client/models/image_config_env_variable_not_exists.py new file mode 100644 index 00000000..643efaa4 --- /dev/null +++ b/sysdig_client/models/image_config_env_variable_not_exists.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.image_config_env_variable_exists_extra import ImageConfigEnvVariableExistsExtra +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigEnvVariableNotExists(BaseModel): + """ + Predicate expressing \"the container does not have the specified environment variable\". + """ # noqa: E501 + + type: StrictStr + extra: ImageConfigEnvVariableExistsExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigEnvVariableNotExists"]): + raise ValueError("must be one of enum values ('imageConfigEnvVariableNotExists')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableNotExists from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigEnvVariableNotExists from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": ImageConfigEnvVariableExistsExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/image_config_failure.py b/sysdig_client/models/image_config_failure.py new file mode 100644 index 00000000..9da36447 --- /dev/null +++ b/sysdig_client/models/image_config_failure.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ImageConfigFailure(BaseModel): + """ + ImageConfigFailure + """ # noqa: E501 + + description: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="image configuration failure description" + ) + remediation: Annotated[str, Field(strict=True, max_length=255)] = Field(description="image configuration failure remediation") + arguments: Dict[str, Any] + package_ref: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="reference to the affected package", alias="packageRef" + ) + vulnerability_ref: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="reference to the vulnerability", alias="vulnerabilityRef" + ) + risk_accept_refs: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(min_length=0, max_length=2147483647)] + ] = Field(default=None, description="list of accepted risks for the failure", alias="riskAcceptRefs") + __properties: ClassVar[List[str]] = [ + "description", + "remediation", + "arguments", + "packageRef", + "vulnerabilityRef", + "riskAcceptRefs", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigFailure from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigFailure from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "description": obj.get("description"), + "remediation": obj.get("remediation"), + "arguments": obj.get("arguments"), + "packageRef": obj.get("packageRef"), + "vulnerabilityRef": obj.get("vulnerabilityRef"), + "riskAcceptRefs": obj.get("riskAcceptRefs"), + } + ) + return _obj diff --git a/sysdig_client/models/image_config_instruction_is_pkg_manager.py b/sysdig_client/models/image_config_instruction_is_pkg_manager.py new file mode 100644 index 00000000..e6ef05b1 --- /dev/null +++ b/sysdig_client/models/image_config_instruction_is_pkg_manager.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigInstructionIsPkgManager(BaseModel): + """ + Predicate expressing \"the image history contains a package manager command (eg. apk, npm, rpm, etc)\". + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigInstructionIsPkgManager"]): + raise ValueError("must be one of enum values ('imageConfigInstructionIsPkgManager')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigInstructionIsPkgManager from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigInstructionIsPkgManager from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/image_config_instruction_not_recommended.py b/sysdig_client/models/image_config_instruction_not_recommended.py new file mode 100644 index 00000000..267dd91e --- /dev/null +++ b/sysdig_client/models/image_config_instruction_not_recommended.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigInstructionNotRecommended(BaseModel): + """ + Predicate expressing \"the image history contains not recommended instruction (ADD, ...)\". + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigInstructionNotRecommended"]): + raise ValueError("must be one of enum values ('imageConfigInstructionNotRecommended')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigInstructionNotRecommended from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigInstructionNotRecommended from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/image_config_label_exists.py b/sysdig_client/models/image_config_label_exists.py new file mode 100644 index 00000000..7d318820 --- /dev/null +++ b/sysdig_client/models/image_config_label_exists.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.image_config_label_exists_extra import ImageConfigLabelExistsExtra +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigLabelExists(BaseModel): + """ + Predicate expressing \"the image has the specified label\". + """ # noqa: E501 + + type: StrictStr + extra: ImageConfigLabelExistsExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigLabelExists"]): + raise ValueError("must be one of enum values ('imageConfigLabelExists')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigLabelExists from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigLabelExists from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": ImageConfigLabelExistsExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/image_config_label_exists_extra.py b/sysdig_client/models/image_config_label_exists_extra.py new file mode 100644 index 00000000..2ff32047 --- /dev/null +++ b/sysdig_client/models/image_config_label_exists_extra.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigLabelExistsExtra(BaseModel): + """ + ImageConfigLabelExistsExtra + """ # noqa: E501 + + key: Annotated[str, Field(strict=True, max_length=1024)] + __properties: ClassVar[List[str]] = ["key"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigLabelExistsExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigLabelExistsExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"key": obj.get("key")}) + return _obj diff --git a/sysdig_client/models/image_config_label_not_contains.py b/sysdig_client/models/image_config_label_not_contains.py new file mode 100644 index 00000000..ff36f0e2 --- /dev/null +++ b/sysdig_client/models/image_config_label_not_contains.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.image_config_label_not_contains_extra import ImageConfigLabelNotContainsExtra +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigLabelNotContains(BaseModel): + """ + Predicate expressing \"the image has the specified label and value\". + """ # noqa: E501 + + type: StrictStr + extra: ImageConfigLabelNotContainsExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigLabelNotContains"]): + raise ValueError("must be one of enum values ('imageConfigLabelNotContains')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigLabelNotContains from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigLabelNotContains from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": ImageConfigLabelNotContainsExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/image_config_label_not_contains_extra.py b/sysdig_client/models/image_config_label_not_contains_extra.py new file mode 100644 index 00000000..8584e44b --- /dev/null +++ b/sysdig_client/models/image_config_label_not_contains_extra.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigLabelNotContainsExtra(BaseModel): + """ + ImageConfigLabelNotContainsExtra + """ # noqa: E501 + + key: Annotated[str, Field(strict=True, max_length=1024)] + value: Annotated[str, Field(strict=True, max_length=1024)] + __properties: ClassVar[List[str]] = ["key", "value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigLabelNotContainsExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigLabelNotContainsExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"key": obj.get("key"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/image_config_label_not_exists.py b/sysdig_client/models/image_config_label_not_exists.py new file mode 100644 index 00000000..6697128c --- /dev/null +++ b/sysdig_client/models/image_config_label_not_exists.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.image_config_label_not_exists_extra import ImageConfigLabelNotExistsExtra +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigLabelNotExists(BaseModel): + """ + Predicate expressing \"the image does not have the specified label\". + """ # noqa: E501 + + type: StrictStr + extra: ImageConfigLabelNotExistsExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigLabelNotExists"]): + raise ValueError("must be one of enum values ('imageConfigLabelNotExists')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigLabelNotExists from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigLabelNotExists from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": ImageConfigLabelNotExistsExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/image_config_label_not_exists_extra.py b/sysdig_client/models/image_config_label_not_exists_extra.py new file mode 100644 index 00000000..7e24b20d --- /dev/null +++ b/sysdig_client/models/image_config_label_not_exists_extra.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigLabelNotExistsExtra(BaseModel): + """ + ImageConfigLabelNotExistsExtra + """ # noqa: E501 + + key: Annotated[str, Field(strict=True, max_length=1024)] + __properties: ClassVar[List[str]] = ["key"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigLabelNotExistsExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigLabelNotExistsExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"key": obj.get("key")}) + return _obj diff --git a/sysdig_client/models/image_config_sensitive_information_and_secrets.py b/sysdig_client/models/image_config_sensitive_information_and_secrets.py new file mode 100644 index 00000000..2960a9dd --- /dev/null +++ b/sysdig_client/models/image_config_sensitive_information_and_secrets.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class ImageConfigSensitiveInformationAndSecrets(BaseModel): + """ + Predicate expressing \"the image contains sensitive information and secrets\". + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["imageConfigSensitiveInformationAndSecrets"]): + raise ValueError("must be one of enum values ('imageConfigSensitiveInformationAndSecrets')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageConfigSensitiveInformationAndSecrets from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageConfigSensitiveInformationAndSecrets from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/image_metadata.py b/sysdig_client/models/image_metadata.py new file mode 100644 index 00000000..d885f002 --- /dev/null +++ b/sysdig_client/models/image_metadata.py @@ -0,0 +1,146 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ImageMetadata(BaseModel): + """ + ImageMetadata + """ # noqa: E501 + + pull_string: Annotated[str, Field(strict=True, max_length=2048)] = Field(description="image pull string", alias="pullString") + image_id: Annotated[str, Field(strict=True, max_length=255)] = Field(description="image id", alias="imageId") + digest: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="image digest") + base_os: Annotated[str, Field(strict=True, max_length=255)] = Field(description="image base os", alias="baseOs") + size: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field(description="image size in bytes") + os: Annotated[str, Field(strict=True, max_length=255)] = Field(description="image os") + architecture: Optional[StrictStr] = Field(default=None, description="image architecture") + labels: Optional[Dict[str, Any]] = Field(default=None, description="image labels") + author: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="image author") + created_at: Annotated[str, Field(strict=True, max_length=100)] = Field(description="datetime of creation", alias="createdAt") + __properties: ClassVar[List[str]] = [ + "pullString", + "imageId", + "digest", + "baseOs", + "size", + "os", + "architecture", + "labels", + "author", + "createdAt", + ] + + @field_validator("architecture") + def architecture_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set( + [ + "ppc64", + "386", + "amd64", + "arm", + "arm64", + "wasm", + "loong64", + "mips", + "mipsle", + "mips64", + "mips64le", + "ppc64le", + "riscv64", + "s390x", + ] + ): + raise ValueError( + "must be one of enum values ('ppc64', '386', 'amd64', 'arm', 'arm64', 'wasm', 'loong64', 'mips', 'mipsle', 'mips64', 'mips64le', 'ppc64le', 'riscv64', 's390x')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageMetadata from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageMetadata from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "pullString": obj.get("pullString"), + "imageId": obj.get("imageId"), + "digest": obj.get("digest"), + "baseOs": obj.get("baseOs"), + "size": obj.get("size"), + "os": obj.get("os"), + "architecture": obj.get("architecture"), + "labels": obj.get("labels"), + "author": obj.get("author"), + "createdAt": obj.get("createdAt"), + } + ) + return _obj diff --git a/sysdig_client/models/image_name.py b/sysdig_client/models/image_name.py new file mode 100644 index 00000000..2e5fee80 --- /dev/null +++ b/sysdig_client/models/image_name.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ImageName(BaseModel): + """ + ImageName + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["imageName"]): + raise ValueError("must be one of enum values ('imageName')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageName from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageName from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/image_name_contains.py b/sysdig_client/models/image_name_contains.py new file mode 100644 index 00000000..2348897b --- /dev/null +++ b/sysdig_client/models/image_name_contains.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ImageNameContains(BaseModel): + """ + ImageNameContains + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["imageNameContains"]): + raise ValueError("must be one of enum values ('imageNameContains')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageNameContains from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageNameContains from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/image_prefix.py b/sysdig_client/models/image_prefix.py new file mode 100644 index 00000000..4cfdcf3d --- /dev/null +++ b/sysdig_client/models/image_prefix.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ImagePrefix(BaseModel): + """ + ImagePrefix + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["imagePrefix"]): + raise ValueError("must be one of enum values ('imagePrefix')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImagePrefix from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImagePrefix from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/image_suffix.py b/sysdig_client/models/image_suffix.py new file mode 100644 index 00000000..09b7f0aa --- /dev/null +++ b/sysdig_client/models/image_suffix.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ImageSuffix(BaseModel): + """ + ImageSuffix + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["imageSuffix"]): + raise ValueError("must be one of enum values ('imageSuffix')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ImageSuffix from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ImageSuffix from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/inhibition_rule_response_v1.py b/sysdig_client/models/inhibition_rule_response_v1.py new file mode 100644 index 00000000..953186ed --- /dev/null +++ b/sysdig_client/models/inhibition_rule_response_v1.py @@ -0,0 +1,183 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.label_matcher_v1 import LabelMatcherV1 +from typing import Set +from typing_extensions import Self + + +class InhibitionRuleResponseV1(BaseModel): + """ + InhibitionRuleResponseV1 + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description="Unique ID of the resource.") + version: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, description="The current version of the resource." + ) + created_on: Optional[datetime] = Field(default=None, description="Creation date.", alias="createdOn") + modified_on: Optional[datetime] = Field(default=None, description="Last modification date.", alias="modifiedOn") + customer_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of customer that owns the inhibition rule.", alias="customerId" + ) + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of team that owns the inhibition rule.", alias="teamId" + ) + is_enabled: Optional[StrictBool] = Field( + default=True, description="Indicates if the inhibition rule is enabled or not.", alias="isEnabled" + ) + name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Name of the inhibition rule." + ) + description: Optional[Annotated[str, Field(strict=True, max_length=8192)]] = Field( + default=None, description="Description of the inhibition rule." + ) + source_matchers: Optional[Annotated[List[LabelMatcherV1], Field(min_length=1, max_length=100)]] = Field( + default=None, + description="List of source matchers for which one or more alerts have to exist for the inhibition to take effect.", + alias="sourceMatchers", + ) + target_matchers: Optional[Annotated[List[LabelMatcherV1], Field(min_length=1, max_length=100)]] = Field( + default=None, + description="List of target matchers that have to be fulfilled by the target alerts to be muted.", + alias="targetMatchers", + ) + equal: Optional[ + Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=1024)]], Field(min_length=1, max_length=100)] + ] = Field( + default=None, + description="List of labels that must have an equal value in the source and target alert for the inhibition to take effect.", + ) + __properties: ClassVar[List[str]] = [ + "id", + "version", + "createdOn", + "modifiedOn", + "customerId", + "teamId", + "isEnabled", + "name", + "description", + "sourceMatchers", + "targetMatchers", + "equal", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InhibitionRuleResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in source_matchers (list) + _items = [] + if self.source_matchers: + for _item_source_matchers in self.source_matchers: + if _item_source_matchers: + _items.append(_item_source_matchers.to_dict()) + _dict["sourceMatchers"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in target_matchers (list) + _items = [] + if self.target_matchers: + for _item_target_matchers in self.target_matchers: + if _item_target_matchers: + _items.append(_item_target_matchers.to_dict()) + _dict["targetMatchers"] = _items + # set to None if name (nullable) is None + # and model_fields_set contains the field + if self.name is None and "name" in self.model_fields_set: + _dict["name"] = None + + # set to None if description (nullable) is None + # and model_fields_set contains the field + if self.description is None and "description" in self.model_fields_set: + _dict["description"] = None + + # set to None if equal (nullable) is None + # and model_fields_set contains the field + if self.equal is None and "equal" in self.model_fields_set: + _dict["equal"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InhibitionRuleResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "customerId": obj.get("customerId"), + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "name": obj.get("name"), + "description": obj.get("description"), + "sourceMatchers": [LabelMatcherV1.from_dict(_item) for _item in obj["sourceMatchers"]] + if obj.get("sourceMatchers") is not None + else None, + "targetMatchers": [LabelMatcherV1.from_dict(_item) for _item in obj["targetMatchers"]] + if obj.get("targetMatchers") is not None + else None, + "equal": obj.get("equal"), + } + ) + return _obj diff --git a/sysdig_client/models/integration_channel.py b/sysdig_client/models/integration_channel.py new file mode 100644 index 00000000..4214aa18 --- /dev/null +++ b/sysdig_client/models/integration_channel.py @@ -0,0 +1,37 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class IntegrationChannel(str, Enum): + """ + Type of data to forward + """ + + """ + allowed enum values + """ + SECURE_EVENTS_POLICIES = "SECURE_EVENTS_POLICIES" + ACTIVITY_AUDIT = "ACTIVITY_AUDIT" + MONITOR_EVENTS = "MONITOR_EVENTS" + PLATFORM_AUDIT = "PLATFORM_AUDIT" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of IntegrationChannel from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/integration_channels_response.py b/sysdig_client/models/integration_channels_response.py new file mode 100644 index 00000000..50b114f0 --- /dev/null +++ b/sysdig_client/models/integration_channels_response.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.integration_channel import IntegrationChannel +from typing import Optional, Set +from typing_extensions import Self + + +class IntegrationChannelsResponse(BaseModel): + """ + Integration Channels Response + """ # noqa: E501 + + data: Annotated[List[IntegrationChannel], Field(max_length=32)] = Field( + description="Data types to forward. Must be compatible with the specified Integration type" + ) + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IntegrationChannelsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IntegrationChannelsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"data": obj.get("data")}) + return _obj diff --git a/sysdig_client/models/integration_response.py b/sysdig_client/models/integration_response.py new file mode 100644 index 00000000..f4e1636e --- /dev/null +++ b/sysdig_client/models/integration_response.py @@ -0,0 +1,348 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.get_amazon_sqs_integration_response import GetAmazonSqsIntegrationResponse +from sysdig_client.models.get_chronicle_integration_response import GetChronicleIntegrationResponse +from sysdig_client.models.get_elasticsearch_integration_response import GetElasticsearchIntegrationResponse +from sysdig_client.models.get_google_pub_sub_integration_response import GetGooglePubSubIntegrationResponse +from sysdig_client.models.get_google_scc_integration_response import GetGoogleSccIntegrationResponse +from sysdig_client.models.get_kafka_integration_response import GetKafkaIntegrationResponse +from sysdig_client.models.get_mcm_integration_response import GetMcmIntegrationResponse +from sysdig_client.models.get_microsoft_sentinel_integration_response import GetMicrosoftSentinelIntegrationResponse +from sysdig_client.models.get_qradar_integration_response import GetQradarIntegrationResponse +from sysdig_client.models.get_splunk_integration_response import GetSplunkIntegrationResponse +from sysdig_client.models.get_syslog_integration_response import GetSyslogIntegrationResponse +from sysdig_client.models.get_webhook_integration_response import GetWebhookIntegrationResponse +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +INTEGRATIONRESPONSE_ONE_OF_SCHEMAS = [ + "GetAmazonSqsIntegrationResponse", + "GetChronicleIntegrationResponse", + "GetElasticsearchIntegrationResponse", + "GetGooglePubSubIntegrationResponse", + "GetGoogleSccIntegrationResponse", + "GetKafkaIntegrationResponse", + "GetMcmIntegrationResponse", + "GetMicrosoftSentinelIntegrationResponse", + "GetQradarIntegrationResponse", + "GetSplunkIntegrationResponse", + "GetSyslogIntegrationResponse", + "GetWebhookIntegrationResponse", +] + + +class IntegrationResponse(BaseModel): + """ + Get Integration Response + """ + + # data type: GetAmazonSqsIntegrationResponse + oneof_schema_1_validator: Optional[GetAmazonSqsIntegrationResponse] = None + # data type: GetChronicleIntegrationResponse + oneof_schema_2_validator: Optional[GetChronicleIntegrationResponse] = None + # data type: GetElasticsearchIntegrationResponse + oneof_schema_3_validator: Optional[GetElasticsearchIntegrationResponse] = None + # data type: GetGooglePubSubIntegrationResponse + oneof_schema_4_validator: Optional[GetGooglePubSubIntegrationResponse] = None + # data type: GetGoogleSccIntegrationResponse + oneof_schema_5_validator: Optional[GetGoogleSccIntegrationResponse] = None + # data type: GetKafkaIntegrationResponse + oneof_schema_6_validator: Optional[GetKafkaIntegrationResponse] = None + # data type: GetMcmIntegrationResponse + oneof_schema_7_validator: Optional[GetMcmIntegrationResponse] = None + # data type: GetMicrosoftSentinelIntegrationResponse + oneof_schema_8_validator: Optional[GetMicrosoftSentinelIntegrationResponse] = None + # data type: GetQradarIntegrationResponse + oneof_schema_9_validator: Optional[GetQradarIntegrationResponse] = None + # data type: GetSplunkIntegrationResponse + oneof_schema_10_validator: Optional[GetSplunkIntegrationResponse] = None + # data type: GetSyslogIntegrationResponse + oneof_schema_11_validator: Optional[GetSyslogIntegrationResponse] = None + # data type: GetWebhookIntegrationResponse + oneof_schema_12_validator: Optional[GetWebhookIntegrationResponse] = None + actual_instance: Optional[ + Union[ + GetAmazonSqsIntegrationResponse, + GetChronicleIntegrationResponse, + GetElasticsearchIntegrationResponse, + GetGooglePubSubIntegrationResponse, + GetGoogleSccIntegrationResponse, + GetKafkaIntegrationResponse, + GetMcmIntegrationResponse, + GetMicrosoftSentinelIntegrationResponse, + GetQradarIntegrationResponse, + GetSplunkIntegrationResponse, + GetSyslogIntegrationResponse, + GetWebhookIntegrationResponse, + ] + ] = None + one_of_schemas: Set[str] = { + "GetAmazonSqsIntegrationResponse", + "GetChronicleIntegrationResponse", + "GetElasticsearchIntegrationResponse", + "GetGooglePubSubIntegrationResponse", + "GetGoogleSccIntegrationResponse", + "GetKafkaIntegrationResponse", + "GetMcmIntegrationResponse", + "GetMicrosoftSentinelIntegrationResponse", + "GetQradarIntegrationResponse", + "GetSplunkIntegrationResponse", + "GetSyslogIntegrationResponse", + "GetWebhookIntegrationResponse", + } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + discriminator_value_class_map: Dict[str, str] = {} + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = IntegrationResponse.model_construct() + error_messages = [] + match = 0 + # validate data type: GetAmazonSqsIntegrationResponse + if not isinstance(v, GetAmazonSqsIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetAmazonSqsIntegrationResponse`") + else: + match += 1 + # validate data type: GetChronicleIntegrationResponse + if not isinstance(v, GetChronicleIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetChronicleIntegrationResponse`") + else: + match += 1 + # validate data type: GetElasticsearchIntegrationResponse + if not isinstance(v, GetElasticsearchIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetElasticsearchIntegrationResponse`") + else: + match += 1 + # validate data type: GetGooglePubSubIntegrationResponse + if not isinstance(v, GetGooglePubSubIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetGooglePubSubIntegrationResponse`") + else: + match += 1 + # validate data type: GetGoogleSccIntegrationResponse + if not isinstance(v, GetGoogleSccIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetGoogleSccIntegrationResponse`") + else: + match += 1 + # validate data type: GetKafkaIntegrationResponse + if not isinstance(v, GetKafkaIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetKafkaIntegrationResponse`") + else: + match += 1 + # validate data type: GetMcmIntegrationResponse + if not isinstance(v, GetMcmIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetMcmIntegrationResponse`") + else: + match += 1 + # validate data type: GetMicrosoftSentinelIntegrationResponse + if not isinstance(v, GetMicrosoftSentinelIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetMicrosoftSentinelIntegrationResponse`") + else: + match += 1 + # validate data type: GetQradarIntegrationResponse + if not isinstance(v, GetQradarIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetQradarIntegrationResponse`") + else: + match += 1 + # validate data type: GetSplunkIntegrationResponse + if not isinstance(v, GetSplunkIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetSplunkIntegrationResponse`") + else: + match += 1 + # validate data type: GetSyslogIntegrationResponse + if not isinstance(v, GetSyslogIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetSyslogIntegrationResponse`") + else: + match += 1 + # validate data type: GetWebhookIntegrationResponse + if not isinstance(v, GetWebhookIntegrationResponse): + error_messages.append(f"Error! Input type `{type(v)}` is not `GetWebhookIntegrationResponse`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in IntegrationResponse with oneOf schemas: GetAmazonSqsIntegrationResponse, GetChronicleIntegrationResponse, GetElasticsearchIntegrationResponse, GetGooglePubSubIntegrationResponse, GetGoogleSccIntegrationResponse, GetKafkaIntegrationResponse, GetMcmIntegrationResponse, GetMicrosoftSentinelIntegrationResponse, GetQradarIntegrationResponse, GetSplunkIntegrationResponse, GetSyslogIntegrationResponse, GetWebhookIntegrationResponse. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in IntegrationResponse with oneOf schemas: GetAmazonSqsIntegrationResponse, GetChronicleIntegrationResponse, GetElasticsearchIntegrationResponse, GetGooglePubSubIntegrationResponse, GetGoogleSccIntegrationResponse, GetKafkaIntegrationResponse, GetMcmIntegrationResponse, GetMicrosoftSentinelIntegrationResponse, GetQradarIntegrationResponse, GetSplunkIntegrationResponse, GetSyslogIntegrationResponse, GetWebhookIntegrationResponse. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into GetAmazonSqsIntegrationResponse + try: + instance.actual_instance = GetAmazonSqsIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetChronicleIntegrationResponse + try: + instance.actual_instance = GetChronicleIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetElasticsearchIntegrationResponse + try: + instance.actual_instance = GetElasticsearchIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetGooglePubSubIntegrationResponse + try: + instance.actual_instance = GetGooglePubSubIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetGoogleSccIntegrationResponse + try: + instance.actual_instance = GetGoogleSccIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetKafkaIntegrationResponse + try: + instance.actual_instance = GetKafkaIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetMcmIntegrationResponse + try: + instance.actual_instance = GetMcmIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetMicrosoftSentinelIntegrationResponse + try: + instance.actual_instance = GetMicrosoftSentinelIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetQradarIntegrationResponse + try: + instance.actual_instance = GetQradarIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetSplunkIntegrationResponse + try: + instance.actual_instance = GetSplunkIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetSyslogIntegrationResponse + try: + instance.actual_instance = GetSyslogIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into GetWebhookIntegrationResponse + try: + instance.actual_instance = GetWebhookIntegrationResponse.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into IntegrationResponse with oneOf schemas: GetAmazonSqsIntegrationResponse, GetChronicleIntegrationResponse, GetElasticsearchIntegrationResponse, GetGooglePubSubIntegrationResponse, GetGoogleSccIntegrationResponse, GetKafkaIntegrationResponse, GetMcmIntegrationResponse, GetMicrosoftSentinelIntegrationResponse, GetQradarIntegrationResponse, GetSplunkIntegrationResponse, GetSyslogIntegrationResponse, GetWebhookIntegrationResponse. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into IntegrationResponse with oneOf schemas: GetAmazonSqsIntegrationResponse, GetChronicleIntegrationResponse, GetElasticsearchIntegrationResponse, GetGooglePubSubIntegrationResponse, GetGoogleSccIntegrationResponse, GetKafkaIntegrationResponse, GetMcmIntegrationResponse, GetMicrosoftSentinelIntegrationResponse, GetQradarIntegrationResponse, GetSplunkIntegrationResponse, GetSyslogIntegrationResponse, GetWebhookIntegrationResponse. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[ + Union[ + Dict[str, Any], + GetAmazonSqsIntegrationResponse, + GetChronicleIntegrationResponse, + GetElasticsearchIntegrationResponse, + GetGooglePubSubIntegrationResponse, + GetGoogleSccIntegrationResponse, + GetKafkaIntegrationResponse, + GetMcmIntegrationResponse, + GetMicrosoftSentinelIntegrationResponse, + GetQradarIntegrationResponse, + GetSplunkIntegrationResponse, + GetSyslogIntegrationResponse, + GetWebhookIntegrationResponse, + ] + ]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/integration_response_v1.py b/sysdig_client/models/integration_response_v1.py new file mode 100644 index 00000000..1eccf009 --- /dev/null +++ b/sysdig_client/models/integration_response_v1.py @@ -0,0 +1,172 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 +from typing import Set +from typing_extensions import Self + + +class IntegrationResponseV1(BaseModel): + """ + IntegrationResponseV1 + """ # noqa: E501 + + id: Annotated[int, Field(strict=True, ge=0)] = Field(description="Integration id.") + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Integration name.") + created_at: datetime = Field(description="Integration creation date.", alias="createdAt") + modified_at: datetime = Field(description="Integration modification date.", alias="modifiedAt") + deleted_at: Optional[datetime] = Field(default=None, description="Integration deletion date.", alias="deletedAt") + customer_id: Annotated[int, Field(strict=True, ge=0)] = Field( + description="Customer identifier for which the integration was created.", alias="customerId" + ) + is_enabled: StrictBool = Field(description="Integration enabled status.", alias="isEnabled") + is_valid: StrictBool = Field(description="Integration valid status.", alias="isValid") + is_all_teams: StrictBool = Field( + description="**True** if the integration is enabled for all teams, **false** otherwise and the *teamIds* for which is accessible will be defined. ", + alias="isAllTeams", + ) + team_ids: Optional[Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=500)]] = Field( + default=None, description="The list of internal Sysdig team ids that the integration is enabled for.", alias="teamIds" + ) + jira_project_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Jira project id.", alias="jiraProjectId" + ) + jira_project_name: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Jira project name.", alias="jiraProjectName" + ) + jira_url: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Customer's Jira URL.", alias="jiraUrl") + jira_email: Annotated[str, Field(strict=True, max_length=512)] = Field(description="User's Jira email.", alias="jiraEmail") + jira_assignee: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="The default assignee account id for this integration.", alias="jiraAssignee" + ) + jira_labels: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=500)]] = Field( + default=None, description="The list of labels available for this integration.", alias="jiraLabels" + ) + parent_issue_type: Optional[IssueTypeResponseV1] = Field( + default=None, description="Parent issue type for the integration.", alias="parentIssueType" + ) + child_issue_type: Optional[IssueTypeResponseV1] = Field( + default=None, description="Child issue type for the integration.", alias="childIssueType" + ) + __properties: ClassVar[List[str]] = [ + "id", + "name", + "createdAt", + "modifiedAt", + "deletedAt", + "customerId", + "isEnabled", + "isValid", + "isAllTeams", + "teamIds", + "jiraProjectId", + "jiraProjectName", + "jiraUrl", + "jiraEmail", + "jiraAssignee", + "jiraLabels", + "parentIssueType", + "childIssueType", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IntegrationResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of parent_issue_type + if self.parent_issue_type: + _dict["parentIssueType"] = self.parent_issue_type.to_dict() + # override the default output from pydantic by calling `to_dict()` of child_issue_type + if self.child_issue_type: + _dict["childIssueType"] = self.child_issue_type.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IntegrationResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "name": obj.get("name"), + "createdAt": obj.get("createdAt"), + "modifiedAt": obj.get("modifiedAt"), + "deletedAt": obj.get("deletedAt"), + "customerId": obj.get("customerId"), + "isEnabled": obj.get("isEnabled"), + "isValid": obj.get("isValid"), + "isAllTeams": obj.get("isAllTeams"), + "teamIds": obj.get("teamIds"), + "jiraProjectId": obj.get("jiraProjectId"), + "jiraProjectName": obj.get("jiraProjectName"), + "jiraUrl": obj.get("jiraUrl"), + "jiraEmail": obj.get("jiraEmail"), + "jiraAssignee": obj.get("jiraAssignee"), + "jiraLabels": obj.get("jiraLabels"), + "parentIssueType": IssueTypeResponseV1.from_dict(obj["parentIssueType"]) + if obj.get("parentIssueType") is not None + else None, + "childIssueType": IssueTypeResponseV1.from_dict(obj["childIssueType"]) + if obj.get("childIssueType") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/integration_type.py b/sysdig_client/models/integration_type.py new file mode 100644 index 00000000..b0215c06 --- /dev/null +++ b/sysdig_client/models/integration_type.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class IntegrationType(str, Enum): + """ + The platform to which data will be forwarded + """ + + """ + allowed enum values + """ + SYSLOG = "SYSLOG" + SPLUNK = "SPLUNK" + MCM = "MCM" + QRADAR = "QRADAR" + WEBHOOK = "WEBHOOK" + KAFKA = "KAFKA" + CHRONICLE = "CHRONICLE" + SENTINEL = "SENTINEL" + SQS = "SQS" + PUBSUB = "PUBSUB" + SCC = "SCC" + ELASTIC = "ELASTIC" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of IntegrationType from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/integration_types_response.py b/sysdig_client/models/integration_types_response.py new file mode 100644 index 00000000..0a1bef18 --- /dev/null +++ b/sysdig_client/models/integration_types_response.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.integration_type import IntegrationType +from typing import Optional, Set +from typing_extensions import Self + + +class IntegrationTypesResponse(BaseModel): + """ + The list of supported integration types + """ # noqa: E501 + + data: Annotated[List[IntegrationType], Field(max_length=32)] + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IntegrationTypesResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IntegrationTypesResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"data": obj.get("data")}) + return _obj diff --git a/sysdig_client/models/invalid_certificate.py b/sysdig_client/models/invalid_certificate.py new file mode 100644 index 00000000..03a7a0bb --- /dev/null +++ b/sysdig_client/models/invalid_certificate.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class InvalidCertificate(BaseModel): + """ + InvalidCertificate + """ # noqa: E501 + + type: StrictStr + message: StrictStr + details: Optional[Annotated[List[Any], Field(max_length=1)]] = None + __properties: ClassVar[List[str]] = ["type", "message", "details"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["parsing_error"]): + raise ValueError("must be one of enum values ('parsing_error')") + return value + + @field_validator("message") + def message_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["could not parse the provided certificate"]): + raise ValueError("must be one of enum values ('could not parse the provided certificate')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InvalidCertificate from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InvalidCertificate from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "message": obj.get("message"), "details": obj.get("details")}) + return _obj diff --git a/sysdig_client/models/invalid_request.py b/sysdig_client/models/invalid_request.py new file mode 100644 index 00000000..7b860ebc --- /dev/null +++ b/sysdig_client/models/invalid_request.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class InvalidRequest(BaseModel): + """ + InvalidRequest + """ # noqa: E501 + + type: StrictStr + message: StrictStr + details: Optional[Annotated[List[Any], Field(max_length=1)]] = None + __properties: ClassVar[List[str]] = ["type", "message", "details"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["parsing_error"]): + raise ValueError("must be one of enum values ('parsing_error')") + return value + + @field_validator("message") + def message_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["could not parse the provided certificate"]): + raise ValueError("must be one of enum values ('could not parse the provided certificate')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InvalidRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InvalidRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "message": obj.get("message"), "details": obj.get("details")}) + return _obj diff --git a/sysdig_client/models/invalid_request1.py b/sysdig_client/models/invalid_request1.py new file mode 100644 index 00000000..6cdef4af --- /dev/null +++ b/sysdig_client/models/invalid_request1.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class InvalidRequest1(BaseModel): + """ + InvalidRequest1 + """ # noqa: E501 + + type: Annotated[str, Field(strict=True, max_length=256)] + message: Annotated[str, Field(strict=True, max_length=256)] + details: Optional[Annotated[List[Any], Field(max_length=1)]] = None + __properties: ClassVar[List[str]] = ["type", "message", "details"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InvalidRequest1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InvalidRequest1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "message": obj.get("message"), "details": obj.get("details")}) + return _obj diff --git a/sysdig_client/models/inventory_page.py b/sysdig_client/models/inventory_page.py new file mode 100644 index 00000000..238a2740 --- /dev/null +++ b/sysdig_client/models/inventory_page.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class InventoryPage(BaseModel): + """ + The total number of pages the matched the filter, and the next and previous page numbers. + """ # noqa: E501 + + next: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=2)]] = Field(default=None, description="The next page") + previous: Optional[Annotated[int, Field(le=2147483646, strict=True, ge=1)]] = Field( + default=None, description="The previous page" + ) + total: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field(description="Total page count") + __properties: ClassVar[List[str]] = ["next", "previous", "total"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InventoryPage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InventoryPage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"next": obj.get("next"), "previous": obj.get("previous"), "total": obj.get("total")}) + return _obj diff --git a/sysdig_client/models/inventory_resource.py b/sysdig_client/models/inventory_resource.py new file mode 100644 index 00000000..c7eca938 --- /dev/null +++ b/sysdig_client/models/inventory_resource.py @@ -0,0 +1,205 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.container_info import ContainerInfo +from sysdig_client.models.inventory_zone import InventoryZone +from sysdig_client.models.posture_policy_summary import PosturePolicySummary +from sysdig_client.models.vulnerability_summary import VulnerabilitySummary +from typing import Set +from typing_extensions import Self + + +class InventoryResource(BaseModel): + """ + An Inventory Resource + """ # noqa: E501 + + hash: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Resource unique identifier") + name: Annotated[str, Field(strict=True, max_length=8192)] = Field(description="Resource name") + platform: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="The resource platform (such as AWS, GCP, Kubernetes, or Azure)" + ) + type: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The resource type") + category: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The resource category") + last_seen: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Last scan date as unix timestamp", alias="lastSeen" + ) + is_exposed: Optional[StrictBool] = Field( + default=None, description="Indicates if a resource is exposed to the internet", alias="isExposed" + ) + validated_exposure: Optional[StrictBool] = Field( + default=None, + description="Indicates if a resource which is exposed to the internet could be reach by our network exposure validator", + alias="validatedExposure", + ) + labels: Annotated[List[Annotated[str, Field(strict=True, max_length=8192)]], Field(max_length=10000)] = Field( + description="The resource labels" + ) + metadata: Dict[str, Any] = Field(description="The resource metadata") + resource_origin: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="Where a resource was collected (Code, Deployed)", alias="resourceOrigin" + ) + posture_policy_summary: Optional[PosturePolicySummary] = Field(default=None, alias="posturePolicySummary") + vulnerability_summary: Optional[VulnerabilitySummary] = Field(default=None, alias="vulnerabilitySummary") + in_use_vulnerability_summary: Optional[VulnerabilitySummary] = Field(default=None, alias="inUseVulnerabilitySummary") + zones: Annotated[List[InventoryZone], Field(max_length=10000)] = Field(description="Resource zones") + config_api_endpoint: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="A link that provides the resource configuration.", alias="configApiEndpoint" + ) + posture_control_summary_api_endpoint: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="A link that provides the posture control summary.", alias="postureControlSummaryApiEndpoint" + ) + vm_api_endpoint: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="A link that provides vulnerability management information about an image (Images only).", + alias="vmApiEndpoint", + ) + container_info: Optional[Annotated[List[ContainerInfo], Field(max_length=10000)]] = Field( + default=None, + description="List of containers (with some of kubernetes metadata) belonging to this kubernetes workload. If resource is not kubernetes workload this fild will be empty.", + alias="containerInfo", + ) + __properties: ClassVar[List[str]] = [ + "hash", + "name", + "platform", + "type", + "category", + "lastSeen", + "isExposed", + "validatedExposure", + "labels", + "metadata", + "resourceOrigin", + "posturePolicySummary", + "vulnerabilitySummary", + "inUseVulnerabilitySummary", + "zones", + "configApiEndpoint", + "postureControlSummaryApiEndpoint", + "vmApiEndpoint", + "containerInfo", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InventoryResource from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of posture_policy_summary + if self.posture_policy_summary: + _dict["posturePolicySummary"] = self.posture_policy_summary.to_dict() + # override the default output from pydantic by calling `to_dict()` of vulnerability_summary + if self.vulnerability_summary: + _dict["vulnerabilitySummary"] = self.vulnerability_summary.to_dict() + # override the default output from pydantic by calling `to_dict()` of in_use_vulnerability_summary + if self.in_use_vulnerability_summary: + _dict["inUseVulnerabilitySummary"] = self.in_use_vulnerability_summary.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in zones (list) + _items = [] + if self.zones: + for _item_zones in self.zones: + if _item_zones: + _items.append(_item_zones.to_dict()) + _dict["zones"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in container_info (list) + _items = [] + if self.container_info: + for _item_container_info in self.container_info: + if _item_container_info: + _items.append(_item_container_info.to_dict()) + _dict["containerInfo"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InventoryResource from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hash": obj.get("hash"), + "name": obj.get("name"), + "platform": obj.get("platform"), + "type": obj.get("type"), + "category": obj.get("category"), + "lastSeen": obj.get("lastSeen"), + "isExposed": obj.get("isExposed"), + "validatedExposure": obj.get("validatedExposure"), + "labels": obj.get("labels"), + "metadata": obj.get("metadata"), + "resourceOrigin": obj.get("resourceOrigin"), + "posturePolicySummary": PosturePolicySummary.from_dict(obj["posturePolicySummary"]) + if obj.get("posturePolicySummary") is not None + else None, + "vulnerabilitySummary": VulnerabilitySummary.from_dict(obj["vulnerabilitySummary"]) + if obj.get("vulnerabilitySummary") is not None + else None, + "inUseVulnerabilitySummary": VulnerabilitySummary.from_dict(obj["inUseVulnerabilitySummary"]) + if obj.get("inUseVulnerabilitySummary") is not None + else None, + "zones": [InventoryZone.from_dict(_item) for _item in obj["zones"]] if obj.get("zones") is not None else None, + "configApiEndpoint": obj.get("configApiEndpoint"), + "postureControlSummaryApiEndpoint": obj.get("postureControlSummaryApiEndpoint"), + "vmApiEndpoint": obj.get("vmApiEndpoint"), + "containerInfo": [ContainerInfo.from_dict(_item) for _item in obj["containerInfo"]] + if obj.get("containerInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/inventory_resource_extended.py b/sysdig_client/models/inventory_resource_extended.py new file mode 100644 index 00000000..ab0d5858 --- /dev/null +++ b/sysdig_client/models/inventory_resource_extended.py @@ -0,0 +1,220 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.container_info import ContainerInfo +from sysdig_client.models.image import Image +from sysdig_client.models.inventory_zone import InventoryZone +from sysdig_client.models.posture_policy_summary import PosturePolicySummary +from sysdig_client.models.vulnerability_summary import VulnerabilitySummary +from typing import Set +from typing_extensions import Self + + +class InventoryResourceExtended(BaseModel): + """ + Extended information about an Inventory Resource + """ # noqa: E501 + + hash: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Resource unique identifier") + name: Annotated[str, Field(strict=True, max_length=8192)] = Field(description="Resource name") + platform: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="The resource platform (such as AWS, GCP, Kubernetes, or Azure)" + ) + type: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The resource type") + category: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The resource category") + last_seen: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Last scan date as unix timestamp", alias="lastSeen" + ) + is_exposed: Optional[StrictBool] = Field( + default=None, description="Indicates if a resource is exposed to the internet", alias="isExposed" + ) + validated_exposure: Optional[StrictBool] = Field( + default=None, + description="Indicates if a resource which is exposed to the internet could be reach by our network exposure validator", + alias="validatedExposure", + ) + labels: Annotated[List[Annotated[str, Field(strict=True, max_length=8192)]], Field(max_length=10000)] = Field( + description="The resource labels" + ) + metadata: Dict[str, Any] = Field(description="The resource metadata") + resource_origin: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="Where a resource was collected (Code, Deployed)", alias="resourceOrigin" + ) + posture_policy_summary: Optional[PosturePolicySummary] = Field(default=None, alias="posturePolicySummary") + vulnerability_summary: Optional[VulnerabilitySummary] = Field(default=None, alias="vulnerabilitySummary") + in_use_vulnerability_summary: Optional[VulnerabilitySummary] = Field(default=None, alias="inUseVulnerabilitySummary") + zones: Annotated[List[InventoryZone], Field(max_length=10000)] = Field(description="Resource zones") + config_api_endpoint: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="A link that provides the resource configuration.", alias="configApiEndpoint" + ) + posture_control_summary_api_endpoint: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="A link that provides the posture control summary.", alias="postureControlSummaryApiEndpoint" + ) + vm_api_endpoint: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="A link that provides vulnerability management information about an image (Images only).", + alias="vmApiEndpoint", + ) + container_info: Optional[Annotated[List[ContainerInfo], Field(max_length=10000)]] = Field( + default=None, + description="List of containers (with some of kubernetes metadata) belonging to this kubernetes workload. If resource is not kubernetes workload this fild will be empty.", + alias="containerInfo", + ) + image_summary: Optional[Annotated[List[Image], Field(max_length=10000)]] = Field( + default=None, description="Images used by the workload (Workloads only)", alias="imageSummary" + ) + __properties: ClassVar[List[str]] = [ + "hash", + "name", + "platform", + "type", + "category", + "lastSeen", + "isExposed", + "validatedExposure", + "labels", + "metadata", + "resourceOrigin", + "posturePolicySummary", + "vulnerabilitySummary", + "inUseVulnerabilitySummary", + "zones", + "configApiEndpoint", + "postureControlSummaryApiEndpoint", + "vmApiEndpoint", + "containerInfo", + "imageSummary", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InventoryResourceExtended from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of posture_policy_summary + if self.posture_policy_summary: + _dict["posturePolicySummary"] = self.posture_policy_summary.to_dict() + # override the default output from pydantic by calling `to_dict()` of vulnerability_summary + if self.vulnerability_summary: + _dict["vulnerabilitySummary"] = self.vulnerability_summary.to_dict() + # override the default output from pydantic by calling `to_dict()` of in_use_vulnerability_summary + if self.in_use_vulnerability_summary: + _dict["inUseVulnerabilitySummary"] = self.in_use_vulnerability_summary.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in zones (list) + _items = [] + if self.zones: + for _item_zones in self.zones: + if _item_zones: + _items.append(_item_zones.to_dict()) + _dict["zones"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in container_info (list) + _items = [] + if self.container_info: + for _item_container_info in self.container_info: + if _item_container_info: + _items.append(_item_container_info.to_dict()) + _dict["containerInfo"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in image_summary (list) + _items = [] + if self.image_summary: + for _item_image_summary in self.image_summary: + if _item_image_summary: + _items.append(_item_image_summary.to_dict()) + _dict["imageSummary"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InventoryResourceExtended from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hash": obj.get("hash"), + "name": obj.get("name"), + "platform": obj.get("platform"), + "type": obj.get("type"), + "category": obj.get("category"), + "lastSeen": obj.get("lastSeen"), + "isExposed": obj.get("isExposed"), + "validatedExposure": obj.get("validatedExposure"), + "labels": obj.get("labels"), + "metadata": obj.get("metadata"), + "resourceOrigin": obj.get("resourceOrigin"), + "posturePolicySummary": PosturePolicySummary.from_dict(obj["posturePolicySummary"]) + if obj.get("posturePolicySummary") is not None + else None, + "vulnerabilitySummary": VulnerabilitySummary.from_dict(obj["vulnerabilitySummary"]) + if obj.get("vulnerabilitySummary") is not None + else None, + "inUseVulnerabilitySummary": VulnerabilitySummary.from_dict(obj["inUseVulnerabilitySummary"]) + if obj.get("inUseVulnerabilitySummary") is not None + else None, + "zones": [InventoryZone.from_dict(_item) for _item in obj["zones"]] if obj.get("zones") is not None else None, + "configApiEndpoint": obj.get("configApiEndpoint"), + "postureControlSummaryApiEndpoint": obj.get("postureControlSummaryApiEndpoint"), + "vmApiEndpoint": obj.get("vmApiEndpoint"), + "containerInfo": [ContainerInfo.from_dict(_item) for _item in obj["containerInfo"]] + if obj.get("containerInfo") is not None + else None, + "imageSummary": [Image.from_dict(_item) for _item in obj["imageSummary"]] + if obj.get("imageSummary") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/inventory_resource_response.py b/sysdig_client/models/inventory_resource_response.py new file mode 100644 index 00000000..1ab21013 --- /dev/null +++ b/sysdig_client/models/inventory_resource_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.inventory_page import InventoryPage +from sysdig_client.models.inventory_resource import InventoryResource +from typing import Optional, Set +from typing_extensions import Self + + +class InventoryResourceResponse(BaseModel): + """ + A paged response of resources that match the filter. + """ # noqa: E501 + + data: Annotated[List[InventoryResource], Field(max_length=10000)] = Field(description="The resources that matches the filter") + page: InventoryPage + __properties: ClassVar[List[str]] = ["data", "page"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InventoryResourceResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InventoryResourceResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "data": [InventoryResource.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "page": InventoryPage.from_dict(obj["page"]) if obj.get("page") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/inventory_zone.py b/sysdig_client/models/inventory_zone.py new file mode 100644 index 00000000..0391ac04 --- /dev/null +++ b/sysdig_client/models/inventory_zone.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class InventoryZone(BaseModel): + """ + a Zone + """ # noqa: E501 + + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="The zone identifier") + name: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The zone name") + __properties: ClassVar[List[str]] = ["id", "name"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InventoryZone from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InventoryZone from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"id": obj.get("id"), "name": obj.get("name")}) + return _obj diff --git a/sysdig_client/models/ip_filter_response_v1.py b/sysdig_client/models/ip_filter_response_v1.py new file mode 100644 index 00000000..f2c602ab --- /dev/null +++ b/sysdig_client/models/ip_filter_response_v1.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class IpFilterResponseV1(BaseModel): + """ + IpFilterResponseV1 + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + ip_range: Optional[Annotated[str, Field(strict=True, max_length=43)]] = Field( + default=None, description="IP range in CIDR notation", alias="ipRange" + ) + note: Optional[Annotated[str, Field(strict=True, max_length=128)]] = None + is_enabled: Optional[StrictBool] = Field(default=None, alias="isEnabled") + is_allowed: Optional[StrictBool] = Field( + default=None, description="Whether the IP range is allowed or not.", alias="isAllowed" + ) + last_updated: Optional[datetime] = Field( + default=None, description="The date when IP filter was last updated.", alias="lastUpdated" + ) + __properties: ClassVar[List[str]] = ["id", "ipRange", "note", "isEnabled", "isAllowed", "lastUpdated"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IpFilterResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if note (nullable) is None + # and model_fields_set contains the field + if self.note is None and "note" in self.model_fields_set: + _dict["note"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IpFilterResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "ipRange": obj.get("ipRange"), + "note": obj.get("note"), + "isEnabled": obj.get("isEnabled"), + "isAllowed": obj.get("isAllowed"), + "lastUpdated": obj.get("lastUpdated"), + } + ) + return _obj diff --git a/sysdig_client/models/ip_filters_paginated_response_v1.py b/sysdig_client/models/ip_filters_paginated_response_v1.py new file mode 100644 index 00000000..d030c856 --- /dev/null +++ b/sysdig_client/models/ip_filters_paginated_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.ip_filter_response_v1 import IpFilterResponseV1 +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class IpFiltersPaginatedResponseV1(BaseModel): + """ + IpFiltersPaginatedResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[IpFilterResponseV1], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IpFiltersPaginatedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IpFiltersPaginatedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [IpFilterResponseV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/ip_filters_settings_v1.py b/sysdig_client/models/ip_filters_settings_v1.py new file mode 100644 index 00000000..2c08f9a6 --- /dev/null +++ b/sysdig_client/models/ip_filters_settings_v1.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class IpFiltersSettingsV1(BaseModel): + """ + Used to configure IP filters settings. + """ # noqa: E501 + + is_filtering_enabled: Optional[StrictBool] = Field( + default=None, description="Specifies if IP filtering is enabled.", alias="isFilteringEnabled" + ) + __properties: ClassVar[List[str]] = ["isFilteringEnabled"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IpFiltersSettingsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IpFiltersSettingsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"isFilteringEnabled": obj.get("isFilteringEnabled")}) + return _obj diff --git a/sysdig_client/models/issue_type_field_response_v1.py b/sysdig_client/models/issue_type_field_response_v1.py new file mode 100644 index 00000000..0b989193 --- /dev/null +++ b/sysdig_client/models/issue_type_field_response_v1.py @@ -0,0 +1,123 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.issue_type_field_response_v1_allowed_values_inner import IssueTypeFieldResponseV1AllowedValuesInner +from typing import Set +from typing_extensions import Self + + +class IssueTypeFieldResponseV1(BaseModel): + """ + IssueTypeFieldResponseV1 + """ # noqa: E501 + + id: Annotated[int, Field(strict=True, ge=0)] = Field(description="Issue type field id.") + jira_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Issue type field id on Jira.", alias="jiraId" + ) + jira_name: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Jira issue type field name.", alias="jiraName" + ) + type: StrictStr = Field(description="Issue type field type.") + is_required: StrictBool = Field(description="Indicates if the field is required.", alias="isRequired") + has_default_value: StrictBool = Field(description="Indicates if the field has a default value.", alias="hasDefaultValue") + allowed_values: Optional[Annotated[List[IssueTypeFieldResponseV1AllowedValuesInner], Field(max_length=500)]] = Field( + default=None, description="Allowed values for the field.", alias="allowedValues" + ) + __properties: ClassVar[List[str]] = ["id", "jiraId", "jiraName", "type", "isRequired", "hasDefaultValue", "allowedValues"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["user", "checkbox", "number", "label", "text", "document"]): + raise ValueError("must be one of enum values ('user', 'checkbox', 'number', 'label', 'text', 'document')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IssueTypeFieldResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in allowed_values (list) + _items = [] + if self.allowed_values: + for _item_allowed_values in self.allowed_values: + if _item_allowed_values: + _items.append(_item_allowed_values.to_dict()) + _dict["allowedValues"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IssueTypeFieldResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "jiraId": obj.get("jiraId"), + "jiraName": obj.get("jiraName"), + "type": obj.get("type"), + "isRequired": obj.get("isRequired"), + "hasDefaultValue": obj.get("hasDefaultValue"), + "allowedValues": [IssueTypeFieldResponseV1AllowedValuesInner.from_dict(_item) for _item in obj["allowedValues"]] + if obj.get("allowedValues") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/issue_type_field_response_v1_allowed_values_inner.py b/sysdig_client/models/issue_type_field_response_v1_allowed_values_inner.py new file mode 100644 index 00000000..c4438d9d --- /dev/null +++ b/sysdig_client/models/issue_type_field_response_v1_allowed_values_inner.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.checkbox_field_value_v1 import CheckboxFieldValueV1 +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +ISSUETYPEFIELDRESPONSEV1ALLOWEDVALUESINNER_ONE_OF_SCHEMAS = ["CheckboxFieldValueV1"] + + +class IssueTypeFieldResponseV1AllowedValuesInner(BaseModel): + """ + IssueTypeFieldResponseV1AllowedValuesInner + """ + + # data type: CheckboxFieldValueV1 + oneof_schema_1_validator: Optional[CheckboxFieldValueV1] = None + actual_instance: Optional[Union[CheckboxFieldValueV1]] = None + one_of_schemas: Set[str] = {"CheckboxFieldValueV1"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = IssueTypeFieldResponseV1AllowedValuesInner.model_construct() + error_messages = [] + match = 0 + # validate data type: CheckboxFieldValueV1 + if not isinstance(v, CheckboxFieldValueV1): + error_messages.append(f"Error! Input type `{type(v)}` is not `CheckboxFieldValueV1`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in IssueTypeFieldResponseV1AllowedValuesInner with oneOf schemas: CheckboxFieldValueV1. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in IssueTypeFieldResponseV1AllowedValuesInner with oneOf schemas: CheckboxFieldValueV1. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into CheckboxFieldValueV1 + try: + instance.actual_instance = CheckboxFieldValueV1.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into IssueTypeFieldResponseV1AllowedValuesInner with oneOf schemas: CheckboxFieldValueV1. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into IssueTypeFieldResponseV1AllowedValuesInner with oneOf schemas: CheckboxFieldValueV1. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], CheckboxFieldValueV1]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/issue_type_response_v1.py b/sysdig_client/models/issue_type_response_v1.py new file mode 100644 index 00000000..cfdee2eb --- /dev/null +++ b/sysdig_client/models/issue_type_response_v1.py @@ -0,0 +1,145 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.issue_type_field_response_v1 import IssueTypeFieldResponseV1 +from typing import Set +from typing_extensions import Self + + +class IssueTypeResponseV1(BaseModel): + """ + IssueTypeResponseV1 + """ # noqa: E501 + + id: Annotated[int, Field(strict=True, ge=0)] = Field(description="Issue type ID.") + jira_id: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Issue type ID on Jira.", alias="jiraId") + jira_name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Jira issue type name.", alias="jiraName") + jira_hierarchy_level: Annotated[int, Field(le=2147483647, strict=True, ge=1)] = Field( + description="Issue type hierarchy level on Jira.", alias="jiraHierarchyLevel" + ) + jira_open_status_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Jira status ID mapped to open status.", alias="jiraOpenStatusId" + ) + jira_in_progress_status_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Jira status ID mapped to in progress status.", alias="jiraInProgressStatusId" + ) + jira_closed_status_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Jira status ID mapped to closed status.", alias="jiraClosedStatusId" + ) + standard_fields: Annotated[List[IssueTypeFieldResponseV1], Field(max_length=500)] = Field( + description="Standard fields for the issue type.", alias="standardFields" + ) + custom_fields: Optional[Annotated[List[IssueTypeFieldResponseV1], Field(max_length=500)]] = Field( + default=None, description="Custom fields for the issue type.", alias="customFields" + ) + __properties: ClassVar[List[str]] = [ + "id", + "jiraId", + "jiraName", + "jiraHierarchyLevel", + "jiraOpenStatusId", + "jiraInProgressStatusId", + "jiraClosedStatusId", + "standardFields", + "customFields", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IssueTypeResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in standard_fields (list) + _items = [] + if self.standard_fields: + for _item_standard_fields in self.standard_fields: + if _item_standard_fields: + _items.append(_item_standard_fields.to_dict()) + _dict["standardFields"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in custom_fields (list) + _items = [] + if self.custom_fields: + for _item_custom_fields in self.custom_fields: + if _item_custom_fields: + _items.append(_item_custom_fields.to_dict()) + _dict["customFields"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IssueTypeResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "jiraId": obj.get("jiraId"), + "jiraName": obj.get("jiraName"), + "jiraHierarchyLevel": obj.get("jiraHierarchyLevel"), + "jiraOpenStatusId": obj.get("jiraOpenStatusId"), + "jiraInProgressStatusId": obj.get("jiraInProgressStatusId"), + "jiraClosedStatusId": obj.get("jiraClosedStatusId"), + "standardFields": [IssueTypeFieldResponseV1.from_dict(_item) for _item in obj["standardFields"]] + if obj.get("standardFields") is not None + else None, + "customFields": [IssueTypeFieldResponseV1.from_dict(_item) for _item in obj["customFields"]] + if obj.get("customFields") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/issue_types_response_v1.py b/sysdig_client/models/issue_types_response_v1.py new file mode 100644 index 00000000..95162b34 --- /dev/null +++ b/sysdig_client/models/issue_types_response_v1.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 +from typing import Set +from typing_extensions import Self + + +class IssueTypesResponseV1(BaseModel): + """ + IssueTypesResponseV1 + """ # noqa: E501 + + data: Optional[Annotated[List[IssueTypeResponseV1], Field(max_length=500)]] = Field( + default=None, description="List of issue types." + ) + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of IssueTypesResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of IssueTypesResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [IssueTypeResponseV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/job_response.py b/sysdig_client/models/job_response.py new file mode 100644 index 00000000..827270e4 --- /dev/null +++ b/sysdig_client/models/job_response.py @@ -0,0 +1,186 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.time_frame import TimeFrame +from typing import Set +from typing_extensions import Self + + +class JobResponse(BaseModel): + """ + Schema for a job response + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Unique identifier for the job.") + user_id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="ID of the user who created the job.", alias="userId" + ) + team_id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="ID of the team the job was created under.", alias="teamId" + ) + customer_id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="ID of the user associated with the job.", alias="customerId" + ) + iac_task_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of the IAC scheduled task.", alias="iacTaskId" + ) + schedule_id: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="ID of the schedule associated with the job", alias="scheduleId" + ) + report_id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field(description="ID of the report", alias="reportId") + is_report_template: StrictBool = Field(description="Indicates if the report is a template", alias="isReportTemplate") + report_format: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Format of the report", alias="reportFormat" + ) + job_type: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Type of the job", alias="jobType") + job_name: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Name of the job", alias="jobName" + ) + zones: Annotated[List[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], Field(max_length=10000)] = Field( + description="List of zone IDs" + ) + policies: Optional[Annotated[List[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], Field(max_length=10000)]] = Field( + default=None, description="List of policy IDs" + ) + status: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Status of the job") + timezone: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="Timezone of the request time frame" + ) + time_frame: Optional[TimeFrame] = Field(default=None, alias="timeFrame") + file_name: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="File name of the report", alias="fileName" + ) + file_path: Optional[Annotated[str, Field(strict=True, max_length=4096)]] = Field( + default=None, description="File path of the report", alias="filePath" + ) + created_by: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Email of the user who created the job", alias="createdBy" + ) + scheduled_on: datetime = Field(description="Timestamp when the job was scheduled", alias="scheduledOn") + started_on: Optional[datetime] = Field(default=None, description="Timestamp when the job was started", alias="startedOn") + completed_on: Optional[datetime] = Field( + default=None, description="Timestamp when the job was completed", alias="completedOn" + ) + __properties: ClassVar[List[str]] = [ + "id", + "userId", + "teamId", + "customerId", + "iacTaskId", + "scheduleId", + "reportId", + "isReportTemplate", + "reportFormat", + "jobType", + "jobName", + "zones", + "policies", + "status", + "timezone", + "timeFrame", + "fileName", + "filePath", + "createdBy", + "scheduledOn", + "startedOn", + "completedOn", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of JobResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of time_frame + if self.time_frame: + _dict["timeFrame"] = self.time_frame.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of JobResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "userId": obj.get("userId"), + "teamId": obj.get("teamId"), + "customerId": obj.get("customerId"), + "iacTaskId": obj.get("iacTaskId"), + "scheduleId": obj.get("scheduleId"), + "reportId": obj.get("reportId"), + "isReportTemplate": obj.get("isReportTemplate"), + "reportFormat": obj.get("reportFormat"), + "jobType": obj.get("jobType"), + "jobName": obj.get("jobName"), + "zones": obj.get("zones"), + "policies": obj.get("policies"), + "status": obj.get("status"), + "timezone": obj.get("timezone"), + "timeFrame": TimeFrame.from_dict(obj["timeFrame"]) if obj.get("timeFrame") is not None else None, + "fileName": obj.get("fileName"), + "filePath": obj.get("filePath"), + "createdBy": obj.get("createdBy"), + "scheduledOn": obj.get("scheduledOn"), + "startedOn": obj.get("startedOn"), + "completedOn": obj.get("completedOn"), + } + ) + return _obj diff --git a/sysdig_client/models/k8s_admission_review_content.py b/sysdig_client/models/k8s_admission_review_content.py new file mode 100644 index 00000000..1805b1eb --- /dev/null +++ b/sysdig_client/models/k8s_admission_review_content.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.event_content_type import EventContentType +from sysdig_client.models.k8s_admission_review_content_all_of_scan_result import K8sAdmissionReviewContentAllOfScanResult +from sysdig_client.models.zone import Zone +from typing import Set +from typing_extensions import Self + + +class K8sAdmissionReviewContent(BaseModel): + """ + Kubernetes admission requests-posture checks event content + """ # noqa: E501 + + type: EventContentType + namespace: Optional[Annotated[str, Field(strict=True, max_length=253)]] = Field( + default=None, description="Kubernetes namespace" + ) + cluster_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Kubernetes cluster name", alias="clusterName" + ) + resource_name: Optional[Annotated[str, Field(strict=True, max_length=253)]] = Field( + default=None, description="Kubernetes resource name", alias="resourceName" + ) + resource_kind: Optional[Annotated[str, Field(strict=True, max_length=63)]] = Field( + default=None, description="Kubernetes resource kind", alias="resourceKind" + ) + zones: Optional[Annotated[List[Zone], Field(max_length=1000)]] = Field( + default=None, description="List of zones that match the scope of the resource." + ) + scan_result: K8sAdmissionReviewContentAllOfScanResult = Field(alias="scanResult") + __properties: ClassVar[List[str]] = [ + "type", + "namespace", + "clusterName", + "resourceName", + "resourceKind", + "zones", + "scanResult", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of K8sAdmissionReviewContent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in zones (list) + _items = [] + if self.zones: + for _item_zones in self.zones: + if _item_zones: + _items.append(_item_zones.to_dict()) + _dict["zones"] = _items + # override the default output from pydantic by calling `to_dict()` of scan_result + if self.scan_result: + _dict["scanResult"] = self.scan_result.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of K8sAdmissionReviewContent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "namespace": obj.get("namespace"), + "clusterName": obj.get("clusterName"), + "resourceName": obj.get("resourceName"), + "resourceKind": obj.get("resourceKind"), + "zones": [Zone.from_dict(_item) for _item in obj["zones"]] if obj.get("zones") is not None else None, + "scanResult": K8sAdmissionReviewContentAllOfScanResult.from_dict(obj["scanResult"]) + if obj.get("scanResult") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/k8s_admission_review_content_all_of_scan_result.py b/sysdig_client/models/k8s_admission_review_content_all_of_scan_result.py new file mode 100644 index 00000000..452ced46 --- /dev/null +++ b/sysdig_client/models/k8s_admission_review_content_all_of_scan_result.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class K8sAdmissionReviewContentAllOfScanResult(BaseModel): + """ + K8sAdmissionReviewContentAllOfScanResult + """ # noqa: E501 + + __properties: ClassVar[List[str]] = [] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of K8sAdmissionReviewContentAllOfScanResult from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of K8sAdmissionReviewContentAllOfScanResult from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({}) + return _obj diff --git a/sysdig_client/models/kafka_plaintext.py b/sysdig_client/models/kafka_plaintext.py new file mode 100644 index 00000000..c6f38f4d --- /dev/null +++ b/sysdig_client/models/kafka_plaintext.py @@ -0,0 +1,83 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class KafkaPlaintext(BaseModel): + """ + KafkaPlaintext + """ # noqa: E501 + + is_tls_enabled: Optional[StrictBool] = Field(default=None, alias="isTlsEnabled") + __properties: ClassVar[List[str]] = ["isTlsEnabled"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of KafkaPlaintext from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of KafkaPlaintext from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"isTlsEnabled": obj.get("isTlsEnabled")}) + return _obj diff --git a/sysdig_client/models/kafka_tls_encrypted.py b/sysdig_client/models/kafka_tls_encrypted.py new file mode 100644 index 00000000..7c8374b1 --- /dev/null +++ b/sysdig_client/models/kafka_tls_encrypted.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class KafkaTlsEncrypted(BaseModel): + """ + KafkaTlsEncrypted + """ # noqa: E501 + + is_tls_enabled: Optional[StrictBool] = Field(default=None, alias="isTlsEnabled") + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + __properties: ClassVar[List[str]] = ["isTlsEnabled", "isInsecure"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of KafkaTlsEncrypted from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of KafkaTlsEncrypted from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "isTlsEnabled": obj.get("isTlsEnabled"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + } + ) + return _obj diff --git a/sysdig_client/models/key_value_object.py b/sysdig_client/models/key_value_object.py new file mode 100644 index 00000000..c71d7a67 --- /dev/null +++ b/sysdig_client/models/key_value_object.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class KeyValueObject(BaseModel): + """ + KeyValueObject + """ # noqa: E501 + + key: Annotated[str, Field(strict=True, max_length=512)] = Field(description="The key") + value: Annotated[str, Field(strict=True, max_length=512)] = Field(description="The value") + __properties: ClassVar[List[str]] = ["key", "value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of KeyValueObject from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of KeyValueObject from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"key": obj.get("key"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/kubernetes.py b/sysdig_client/models/kubernetes.py new file mode 100644 index 00000000..bfc8e366 --- /dev/null +++ b/sysdig_client/models/kubernetes.py @@ -0,0 +1,155 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.user import User +from typing import Set +from typing_extensions import Self + + +class Kubernetes(BaseModel): + """ + Represents a kubernetes audit event. + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=32)] = Field(description="The audit event id.") + timestamp: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="Timestamp the audit event occured, expressed in nanoseconds." + ) + type: StrictStr = Field(description="The entry type") + hostname: Annotated[str, Field(strict=True, max_length=200)] = Field(description="The Kubernetes hostname.") + container_id: Annotated[str, Field(strict=True, max_length=200)] = Field( + description="The container id. `containerId` is present only if the audit event was collected in a container context. ", + alias="containerId", + ) + resource: Annotated[str, Field(strict=True, max_length=20)] = Field(description="The Kubernetes resource.") + sub_resource: Annotated[str, Field(strict=True, max_length=20)] = Field( + description="The Kubernetes subresource.", alias="subResource" + ) + namespace: Annotated[str, Field(strict=True, max_length=50)] = Field(description="The Kubernetes namespace.") + name: Annotated[str, Field(strict=True, max_length=50)] = Field(description="The name of the resource.") + source_addresses: Annotated[List[Annotated[str, Field(strict=True, max_length=15)]], Field(max_length=100)] = Field( + alias="sourceAddresses" + ) + user: User + user_agent: Annotated[str, Field(strict=True, max_length=100)] = Field( + description="The user agent of the client", alias="userAgent" + ) + args: Dict[str, Any] = Field( + description="Arguments specific for the different types of Kubernetes audit entries. In case of `pods:exec`, `args` will contain the fields `command` and `container` representing the command called and the name of the container in the pod where the command was executed respectively. " + ) + labels: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=200)]]] = Field( + default=None, description="Key value pairs of labels." + ) + __properties: ClassVar[List[str]] = [ + "id", + "timestamp", + "type", + "hostname", + "containerId", + "resource", + "subResource", + "namespace", + "name", + "sourceAddresses", + "user", + "userAgent", + "args", + "labels", + ] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["kubernetes"]): + raise ValueError("must be one of enum values ('kubernetes')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Kubernetes from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of user + if self.user: + _dict["user"] = self.user.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Kubernetes from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "timestamp": obj.get("timestamp"), + "type": obj.get("type"), + "hostname": obj.get("hostname"), + "containerId": obj.get("containerId"), + "resource": obj.get("resource"), + "subResource": obj.get("subResource"), + "namespace": obj.get("namespace"), + "name": obj.get("name"), + "sourceAddresses": obj.get("sourceAddresses"), + "user": User.from_dict(obj["user"]) if obj.get("user") is not None else None, + "userAgent": obj.get("userAgent"), + "args": obj.get("args"), + "labels": obj.get("labels"), + } + ) + return _obj diff --git a/sysdig_client/models/label_matcher_v1.py b/sysdig_client/models/label_matcher_v1.py new file mode 100644 index 00000000..7f8d7295 --- /dev/null +++ b/sysdig_client/models/label_matcher_v1.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class LabelMatcherV1(BaseModel): + """ + Matcher to match alerts to inhibition rules. + """ # noqa: E501 + + label_name: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field( + description="Label to match.", alias="labelName" + ) + operator: StrictStr = Field(description="Match operator.") + value: Annotated[str, Field(min_length=0, strict=True, max_length=1024)] = Field( + description="Label value to match in case operator is of type equality, or regular expression in case of operator is of type regex." + ) + __properties: ClassVar[List[str]] = ["labelName", "operator", "value"] + + @field_validator("operator") + def operator_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["EQUALS", "NOT_EQUALS", "REGEXP_MATCHES", "NOT_REGEXP_MATCHES"]): + raise ValueError("must be one of enum values ('EQUALS', 'NOT_EQUALS', 'REGEXP_MATCHES', 'NOT_REGEXP_MATCHES')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of LabelMatcherV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of LabelMatcherV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"labelName": obj.get("labelName"), "operator": obj.get("operator"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/label_values_response_v1.py b/sysdig_client/models/label_values_response_v1.py new file mode 100644 index 00000000..4b9578b8 --- /dev/null +++ b/sysdig_client/models/label_values_response_v1.py @@ -0,0 +1,101 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class LabelValuesResponseV1(BaseModel): + """ + LabelValuesResponseV1 + """ # noqa: E501 + + status: Optional[StrictStr] = Field(default=None, description="Query status.") + data: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field( + default=None, description="List of values associated with the specified label." + ) + warnings: Optional[List[StrictStr]] = Field(default=None, description="A set of warning messages attached to the response.") + infos: Optional[List[StrictStr]] = Field(default=None, description="A set of information messages attached to the response.") + __properties: ClassVar[List[str]] = ["status", "data", "warnings", "infos"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["success", "error"]): + raise ValueError("must be one of enum values ('success', 'error')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of LabelValuesResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of LabelValuesResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"status": obj.get("status"), "data": obj.get("data"), "warnings": obj.get("warnings"), "infos": obj.get("infos")} + ) + return _obj diff --git a/sysdig_client/models/labels_response_v1.py b/sysdig_client/models/labels_response_v1.py new file mode 100644 index 00000000..690cda06 --- /dev/null +++ b/sysdig_client/models/labels_response_v1.py @@ -0,0 +1,101 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class LabelsResponseV1(BaseModel): + """ + LabelsResponseV1 + """ # noqa: E501 + + status: Optional[StrictStr] = Field(default=None, description="Query status.") + data: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field( + default=None, description="List of label names." + ) + warnings: Optional[List[StrictStr]] = Field(default=None, description="A set of warning messages attached to the response.") + infos: Optional[List[StrictStr]] = Field(default=None, description="A set of information messages attached to the response.") + __properties: ClassVar[List[str]] = ["status", "data", "warnings", "infos"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["success", "error"]): + raise ValueError("must be one of enum values ('success', 'error')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of LabelsResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of LabelsResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"status": obj.get("status"), "data": obj.get("data"), "warnings": obj.get("warnings"), "infos": obj.get("infos")} + ) + return _obj diff --git a/sysdig_client/models/layer.py b/sysdig_client/models/layer.py new file mode 100644 index 00000000..78636d54 --- /dev/null +++ b/sysdig_client/models/layer.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Layer(BaseModel): + """ + Layer + """ # noqa: E501 + + index: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field(default=None, description="layer's index") + digest: Annotated[str, Field(strict=True, max_length=255)] = Field(description="sha256 digest of the layer") + size: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="size of the layer in bytes" + ) + command: Optional[Annotated[str, Field(strict=True, max_length=65535)]] = Field(default=None, description="layer command") + base_images_ref: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(min_length=0, max_length=1024)] + ] = Field(default=None, description="base images refs", alias="baseImagesRef") + __properties: ClassVar[List[str]] = ["index", "digest", "size", "command", "baseImagesRef"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Layer from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if size (nullable) is None + # and model_fields_set contains the field + if self.size is None and "size" in self.model_fields_set: + _dict["size"] = None + + # set to None if command (nullable) is None + # and model_fields_set contains the field + if self.command is None and "command" in self.model_fields_set: + _dict["command"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Layer from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "index": obj.get("index"), + "digest": obj.get("digest"), + "size": obj.get("size"), + "command": obj.get("command"), + "baseImagesRef": obj.get("baseImagesRef"), + } + ) + return _obj diff --git a/sysdig_client/models/list_audit_events_response.py b/sysdig_client/models/list_audit_events_response.py new file mode 100644 index 00000000..479d4167 --- /dev/null +++ b/sysdig_client/models/list_audit_events_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.audit_event import AuditEvent +from sysdig_client.models.audit_page import AuditPage +from typing import Optional, Set +from typing_extensions import Self + + +class ListAuditEventsResponse(BaseModel): + """ + The list of events matching a search criteria. + """ # noqa: E501 + + page: AuditPage + data: Annotated[List[AuditEvent], Field(max_length=999)] = Field(description="The list of Audit events.") + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListAuditEventsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListAuditEventsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": AuditPage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [AuditEvent.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/list_bundles_response.py b/sysdig_client/models/list_bundles_response.py new file mode 100644 index 00000000..4cdc0711 --- /dev/null +++ b/sysdig_client/models/list_bundles_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.get_bundle_response import GetBundleResponse +from sysdig_client.models.policies_page import PoliciesPage +from typing import Optional, Set +from typing_extensions import Self + + +class ListBundlesResponse(BaseModel): + """ + Bundles list response + """ # noqa: E501 + + page: PoliciesPage + data: Annotated[List[GetBundleResponse], Field(min_length=0, max_length=1024)] = Field(description="Bundles collection") + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListBundlesResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListBundlesResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": PoliciesPage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [GetBundleResponse.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/list_events_response.py b/sysdig_client/models/list_events_response.py new file mode 100644 index 00000000..5dd508b7 --- /dev/null +++ b/sysdig_client/models/list_events_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.event import Event +from sysdig_client.models.events_feed_page import EventsFeedPage +from typing import Optional, Set +from typing_extensions import Self + + +class ListEventsResponse(BaseModel): + """ + The list of events matching a search criteria. + """ # noqa: E501 + + page: EventsFeedPage + data: Annotated[List[Event], Field(max_length=20000)] = Field(description="The list of events") + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListEventsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListEventsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": EventsFeedPage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [Event.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/list_integrations_response.py b/sysdig_client/models/list_integrations_response.py new file mode 100644 index 00000000..892c5edc --- /dev/null +++ b/sysdig_client/models/list_integrations_response.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.integration_response import IntegrationResponse +from typing import Optional, Set +from typing_extensions import Self + + +class ListIntegrationsResponse(BaseModel): + """ + ListIntegrationsResponse + """ # noqa: E501 + + data: Annotated[List[IntegrationResponse], Field(max_length=512)] + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListIntegrationsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListIntegrationsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [IntegrationResponse.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/list_job_and_disabled_metrics_v1.py b/sysdig_client/models/list_job_and_disabled_metrics_v1.py new file mode 100644 index 00000000..0efd2fd2 --- /dev/null +++ b/sysdig_client/models/list_job_and_disabled_metrics_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.metric_v1 import MetricV1 +from typing import Set +from typing_extensions import Self + + +class ListJobAndDisabledMetricsV1(BaseModel): + """ + Get Disabled Metrics by Job name Response. + """ # noqa: E501 + + job_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the Job reporting the metric. ", alias="jobName" + ) + metrics: Optional[Annotated[List[MetricV1], Field(max_length=1000)]] = Field( + default=None, description="List of metrics that are disabled for the Job. " + ) + __properties: ClassVar[List[str]] = ["jobName", "metrics"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListJobAndDisabledMetricsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in metrics (list) + _items = [] + if self.metrics: + for _item_metrics in self.metrics: + if _item_metrics: + _items.append(_item_metrics.to_dict()) + _dict["metrics"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListJobAndDisabledMetricsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "jobName": obj.get("jobName"), + "metrics": [MetricV1.from_dict(_item) for _item in obj["metrics"]] if obj.get("metrics") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/list_jobs.py b/sysdig_client/models/list_jobs.py new file mode 100644 index 00000000..eb39fc35 --- /dev/null +++ b/sysdig_client/models/list_jobs.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.job_response import JobResponse +from typing import Optional, Set +from typing_extensions import Self + + +class ListJobs(BaseModel): + """ + ListJobs + """ # noqa: E501 + + data: Annotated[List[JobResponse], Field(max_length=10000)] = Field(description="List of Jobs.") + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListJobs from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListJobs from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [JobResponse.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/list_monitor_events_response.py b/sysdig_client/models/list_monitor_events_response.py new file mode 100644 index 00000000..a5087c5d --- /dev/null +++ b/sysdig_client/models/list_monitor_events_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.monitor_event import MonitorEvent +from sysdig_client.models.monitor_events_page import MonitorEventsPage +from typing import Optional, Set +from typing_extensions import Self + + +class ListMonitorEventsResponse(BaseModel): + """ + The list of events matching a search criteria. + """ # noqa: E501 + + page: MonitorEventsPage + data: Annotated[List[MonitorEvent], Field(max_length=20000)] = Field(description="The list of events") + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListMonitorEventsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListMonitorEventsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": MonitorEventsPage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [MonitorEvent.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/list_policies_response.py b/sysdig_client/models/list_policies_response.py new file mode 100644 index 00000000..6332222b --- /dev/null +++ b/sysdig_client/models/list_policies_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.policies_page import PoliciesPage +from sysdig_client.models.policy_summary import PolicySummary +from typing import Optional, Set +from typing_extensions import Self + + +class ListPoliciesResponse(BaseModel): + """ + ListPoliciesResponse + """ # noqa: E501 + + page: PoliciesPage + data: Annotated[List[PolicySummary], Field(min_length=0, max_length=1024)] = Field(description="Policies collection") + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListPoliciesResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListPoliciesResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": PoliciesPage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [PolicySummary.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/list_risk_accepted_response.py b/sysdig_client/models/list_risk_accepted_response.py new file mode 100644 index 00000000..914d0675 --- /dev/null +++ b/sysdig_client/models/list_risk_accepted_response.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.list_risk_accepted_response_all_of_data import ListRiskAcceptedResponseAllOfData +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class ListRiskAcceptedResponse(BaseModel): + """ + ListRiskAcceptedResponse + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Annotated[List[ListRiskAcceptedResponseAllOfData], Field(max_length=200)] = Field(description="List of Accepted Risks") + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListRiskAcceptedResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListRiskAcceptedResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [ListRiskAcceptedResponseAllOfData.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/list_risk_accepted_response_all_of_data.py b/sysdig_client/models/list_risk_accepted_response_all_of_data.py new file mode 100644 index 00000000..0e689bc1 --- /dev/null +++ b/sysdig_client/models/list_risk_accepted_response_all_of_data.py @@ -0,0 +1,197 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date, datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.risk_accepted_response_all_of_context import RiskAcceptedResponseAllOfContext +from typing import Set +from typing_extensions import Self + + +class ListRiskAcceptedResponseAllOfData(BaseModel): + """ + ListRiskAcceptedResponseAllOfData + """ # noqa: E501 + + entity_type: StrictStr = Field(description="The entity where the Accepted Risk will be applied.", alias="entityType") + context: RiskAcceptedResponseAllOfContext + id: Annotated[str, Field(strict=True, max_length=512)] = Field(description="The Accepted Risk ID") + expiration_date: Optional[date] = Field( + default=None, description="Date when the accepted risk will expire (in YYYY-MM-DD format)", alias="expirationDate" + ) + created_at: Optional[datetime] = Field(default=None, description="Date when the Accepted Risk was created", alias="createdAt") + updated_at: Optional[datetime] = Field(default=None, description="Date when the Accepted Risk was updated", alias="updatedAt") + status: StrictStr = Field(description="Specifies whether the Accepted Risk is enabled or expired") + created_by: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field( + default=None, description="User who created the risk acceptance", alias="createdBy" + ) + updated_by: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field( + default=None, description="User who last updated the risk acceptance", alias="updatedBy" + ) + entity_value: Annotated[str, Field(min_length=1, strict=True, max_length=512)] = Field( + description="A value to match with the entityType", alias="entityValue" + ) + reason: StrictStr = Field(description="Reason for acceptance") + description: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Description of why the accepted risk was created" + ) + stages: Optional[Annotated[List[StrictStr], Field(min_length=0, max_length=3)]] = Field( + default=None, + description="List of stages where the risk acceptance is applied, empty list enables risk acceptance for all the stages", + ) + __properties: ClassVar[List[str]] = [ + "entityType", + "context", + "id", + "expirationDate", + "createdAt", + "updatedAt", + "status", + "createdBy", + "updatedBy", + "entityValue", + "reason", + "description", + "stages", + ] + + @field_validator("entity_type") + def entity_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set( + [ + "imageName", + "imagePrefix", + "imageSuffix", + "vulnerability", + "hostName", + "hostNameContains", + "imageNameContains", + "policyRule", + "package", + ] + ): + raise ValueError( + "must be one of enum values ('imageName', 'imagePrefix', 'imageSuffix', 'vulnerability', 'hostName', 'hostNameContains', 'imageNameContains', 'policyRule', 'package')" + ) + return value + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["active", "expired"]): + raise ValueError("must be one of enum values ('active', 'expired')") + return value + + @field_validator("reason") + def reason_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["RiskTransferred", "RiskAvoided", "RiskMitigated", "RiskOwned", "RiskNotRelevant", "Custom"]): + raise ValueError( + "must be one of enum values ('RiskTransferred', 'RiskAvoided', 'RiskMitigated', 'RiskOwned', 'RiskNotRelevant', 'Custom')" + ) + return value + + @field_validator("stages") + def stages_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + for i in value: + if i not in set(["runtime", "pipeline", "registry"]): + raise ValueError("each list item must be one of ('runtime', 'pipeline', 'registry')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListRiskAcceptedResponseAllOfData from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of context + if self.context: + _dict["context"] = self.context.to_dict() + # set to None if stages (nullable) is None + # and model_fields_set contains the field + if self.stages is None and "stages" in self.model_fields_set: + _dict["stages"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListRiskAcceptedResponseAllOfData from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "entityType": obj.get("entityType"), + "context": RiskAcceptedResponseAllOfContext.from_dict(obj["context"]) if obj.get("context") is not None else None, + "id": obj.get("id"), + "expirationDate": obj.get("expirationDate"), + "createdAt": obj.get("createdAt"), + "updatedAt": obj.get("updatedAt"), + "status": obj.get("status"), + "createdBy": obj.get("createdBy"), + "updatedBy": obj.get("updatedBy"), + "entityValue": obj.get("entityValue"), + "reason": obj.get("reason"), + "description": obj.get("description"), + "stages": obj.get("stages"), + } + ) + return _obj diff --git a/sysdig_client/models/list_schedules.py b/sysdig_client/models/list_schedules.py new file mode 100644 index 00000000..7a0ea8ba --- /dev/null +++ b/sysdig_client/models/list_schedules.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.schedule_response import ScheduleResponse +from typing import Optional, Set +from typing_extensions import Self + + +class ListSchedules(BaseModel): + """ + ListSchedules + """ # noqa: E501 + + data: Annotated[List[ScheduleResponse], Field(max_length=10000)] = Field(description="List of Schedules.") + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListSchedules from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListSchedules from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [ScheduleResponse.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/list_zones_response_v1.py b/sysdig_client/models/list_zones_response_v1.py new file mode 100644 index 00000000..c532eae5 --- /dev/null +++ b/sysdig_client/models/list_zones_response_v1.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.list_zones_response_v1_all_of_data import ListZonesResponseV1AllOfData +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class ListZonesResponseV1(BaseModel): + """ + ListZonesResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[ListZonesResponseV1AllOfData], Field(max_length=200)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListZonesResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListZonesResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [ListZonesResponseV1AllOfData.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/list_zones_response_v1_all_of_data.py b/sysdig_client/models/list_zones_response_v1_all_of_data.py new file mode 100644 index 00000000..572b49c2 --- /dev/null +++ b/sysdig_client/models/list_zones_response_v1_all_of_data.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.zone_scope import ZoneScope +from typing import Set +from typing_extensions import Self + + +class ListZonesResponseV1AllOfData(BaseModel): + """ + A paged list of Zones + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + name: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field(default=None, description="The name of the Zone") + description: Optional[Annotated[str, Field(strict=True, max_length=8192)]] = Field( + default=None, description="The description of the Zone" + ) + author: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Email of the user who created this Zone" + ) + last_modified_by: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Email of the user who last modified the Zone", alias="lastModifiedBy" + ) + last_updated: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, + description="Timestamp indicating the moment the Zone has been last updated.\\ It is expressed in milliseconds elapsed since January 1, 1970 UTC. ", + alias="lastUpdated", + ) + is_system: Optional[StrictBool] = Field( + default=None, description="Boolean value indicating if the Zone is a *System* one", alias="isSystem" + ) + scopes: Optional[Annotated[List[ZoneScope], Field(max_length=8192)]] = Field(default=None, description="Attached Zone Scopes") + __properties: ClassVar[List[str]] = [ + "id", + "name", + "description", + "author", + "lastModifiedBy", + "lastUpdated", + "isSystem", + "scopes", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListZonesResponseV1AllOfData from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in scopes (list) + _items = [] + if self.scopes: + for _item_scopes in self.scopes: + if _item_scopes: + _items.append(_item_scopes.to_dict()) + _dict["scopes"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListZonesResponseV1AllOfData from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "name": obj.get("name"), + "description": obj.get("description"), + "author": obj.get("author"), + "lastModifiedBy": obj.get("lastModifiedBy"), + "lastUpdated": obj.get("lastUpdated"), + "isSystem": obj.get("isSystem"), + "scopes": [ZoneScope.from_dict(_item) for _item in obj["scopes"]] if obj.get("scopes") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/malware_prevented_action.py b/sysdig_client/models/malware_prevented_action.py new file mode 100644 index 00000000..dc3d9d3a --- /dev/null +++ b/sysdig_client/models/malware_prevented_action.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_type import ActionType +from typing import Set +from typing_extensions import Self + + +class MalwarePreventedAction(BaseModel): + """ + Malware execution prevention + """ # noqa: E501 + + type: ActionType + is_successful: Optional[StrictBool] = Field( + default=None, description="Whether or not the action was completed successfully.", alias="isSuccessful" + ) + err_msg: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="When `isSuccessful` is `false`, details on why the action failed. ", alias="errMsg" + ) + __properties: ClassVar[List[str]] = ["type", "isSuccessful", "errMsg"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MalwarePreventedAction from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MalwarePreventedAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "isSuccessful": obj.get("isSuccessful"), "errMsg": obj.get("errMsg")}) + return _obj diff --git a/sysdig_client/models/metadata_response_v1.py b/sysdig_client/models/metadata_response_v1.py new file mode 100644 index 00000000..5188ec04 --- /dev/null +++ b/sysdig_client/models/metadata_response_v1.py @@ -0,0 +1,116 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.metadata_response_v1_data_value_inner import MetadataResponseV1DataValueInner +from typing import Set +from typing_extensions import Self + + +class MetadataResponseV1(BaseModel): + """ + MetadataResponseV1 + """ # noqa: E501 + + status: Optional[StrictStr] = Field(default=None, description="Query status.") + data: Optional[Dict[str, List[MetadataResponseV1DataValueInner]]] = Field( + default=None, description="Metric metadata indexed by metric name." + ) + warnings: Optional[List[StrictStr]] = Field(default=None, description="A set of warning messages attached to the response.") + infos: Optional[List[StrictStr]] = Field(default=None, description="A set of information messages attached to the response.") + __properties: ClassVar[List[str]] = ["status", "data", "warnings", "infos"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["success", "error"]): + raise ValueError("must be one of enum values ('success', 'error')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MetadataResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each value in data (dict of array) + _field_dict_of_array = {} + if self.data: + for _key_data in self.data: + if self.data[_key_data] is not None: + _field_dict_of_array[_key_data] = [_item.to_dict() for _item in self.data[_key_data]] + _dict["data"] = _field_dict_of_array + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MetadataResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "status": obj.get("status"), + "data": dict( + (_k, [MetadataResponseV1DataValueInner.from_dict(_item) for _item in _v] if _v is not None else None) + for _k, _v in obj.get("data", {}).items() + ), + "warnings": obj.get("warnings"), + "infos": obj.get("infos"), + } + ) + return _obj diff --git a/sysdig_client/models/metadata_response_v1_data_value_inner.py b/sysdig_client/models/metadata_response_v1_data_value_inner.py new file mode 100644 index 00000000..d40b2058 --- /dev/null +++ b/sysdig_client/models/metadata_response_v1_data_value_inner.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class MetadataResponseV1DataValueInner(BaseModel): + """ + MetadataResponseV1DataValueInner + """ # noqa: E501 + + type: StrictStr = Field(description="The type of the metric.") + help: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="A brief description of the metric.") + unit: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The unit of measurement for the metric.") + __properties: ClassVar[List[str]] = ["type", "help", "unit"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["counter", "gauge", "histogram", "summary", "unknown"]): + raise ValueError("must be one of enum values ('counter', 'gauge', 'histogram', 'summary', 'unknown')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MetadataResponseV1DataValueInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MetadataResponseV1DataValueInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "help": obj.get("help"), "unit": obj.get("unit")}) + return _obj diff --git a/sysdig_client/models/metric_error_v1.py b/sysdig_client/models/metric_error_v1.py new file mode 100644 index 00000000..8e389ee2 --- /dev/null +++ b/sysdig_client/models/metric_error_v1.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class MetricErrorV1(BaseModel): + """ + Get Disabled Metrics by Job name Response + """ # noqa: E501 + + metric_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The metric name which could not be disabled or enabled. ", alias="metricName" + ) + job_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Specifies the name of the job that caused the error. ", alias="jobName" + ) + message: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Describes the job and metric error. " + ) + __properties: ClassVar[List[str]] = ["metricName", "jobName", "message"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MetricErrorV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MetricErrorV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"metricName": obj.get("metricName"), "jobName": obj.get("jobName"), "message": obj.get("message")} + ) + return _obj diff --git a/sysdig_client/models/metric_v1.py b/sysdig_client/models/metric_v1.py new file mode 100644 index 00000000..05fc4b5b --- /dev/null +++ b/sysdig_client/models/metric_v1.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class MetricV1(BaseModel): + """ + Get Disabled Metrics by Job name Response + """ # noqa: E501 + + metric_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Specifies the name of the disabled metric. ", alias="metricName" + ) + modified_date: Optional[datetime] = Field( + default=None, description="The timestamp during which the metric was disabled ", alias="modifiedDate" + ) + user_id: Optional[Annotated[int, Field(le=99999999999999, strict=True, ge=0)]] = Field( + default=None, description="The UserId responsible for disabling the metric ", alias="userId" + ) + user_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="User name of the person who disabled the metric ", alias="userName" + ) + __properties: ClassVar[List[str]] = ["metricName", "modifiedDate", "userId", "userName"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MetricV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MetricV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "metricName": obj.get("metricName"), + "modifiedDate": obj.get("modifiedDate"), + "userId": obj.get("userId"), + "userName": obj.get("userName"), + } + ) + return _obj diff --git a/sysdig_client/models/microsoft_sentinel_create_connection_info.py b/sysdig_client/models/microsoft_sentinel_create_connection_info.py new file mode 100644 index 00000000..982322fe --- /dev/null +++ b/sysdig_client/models/microsoft_sentinel_create_connection_info.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class MicrosoftSentinelCreateConnectionInfo(BaseModel): + """ + MicrosoftSentinelCreateConnectionInfo + """ # noqa: E501 + + workspace_id: Annotated[str, Field(strict=True, max_length=63)] = Field( + description="Log Analytics workspace ID", alias="workspaceId" + ) + secret: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Log analytics primary key") + __properties: ClassVar[List[str]] = ["workspaceId", "secret"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MicrosoftSentinelCreateConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MicrosoftSentinelCreateConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"workspaceId": obj.get("workspaceId"), "secret": obj.get("secret")}) + return _obj diff --git a/sysdig_client/models/microsoft_sentinel_update_connection_info.py b/sysdig_client/models/microsoft_sentinel_update_connection_info.py new file mode 100644 index 00000000..8d6f223b --- /dev/null +++ b/sysdig_client/models/microsoft_sentinel_update_connection_info.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class MicrosoftSentinelUpdateConnectionInfo(BaseModel): + """ + MicrosoftSentinelUpdateConnectionInfo + """ # noqa: E501 + + workspace_id: Annotated[str, Field(strict=True, max_length=63)] = Field( + description="Log Analytics workspace ID", alias="workspaceId" + ) + secret: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Log analytics primary key" + ) + __properties: ClassVar[List[str]] = ["workspaceId", "secret"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MicrosoftSentinelUpdateConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MicrosoftSentinelUpdateConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"workspaceId": obj.get("workspaceId"), "secret": obj.get("secret")}) + return _obj diff --git a/sysdig_client/models/monitor_event.py b/sysdig_client/models/monitor_event.py new file mode 100644 index 00000000..88d15093 --- /dev/null +++ b/sysdig_client/models/monitor_event.py @@ -0,0 +1,116 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from importlib import import_module +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from sysdig_client.models.alert_monitor_event import AlertMonitorEvent + from sysdig_client.models.custom_monitor_event import CustomMonitorEvent + + +class MonitorEvent(BaseModel): + """ + Monitor Event + """ # noqa: E501 + + type: Optional[Annotated[str, Field(strict=True, max_length=50)]] = Field( + default=None, + description="The type of the event. Current supported values are ALERT, CUSTOM. As the list of supported event types may change in the future, clients should handle unknown event types gracefully.", + ) + __properties: ClassVar[List[str]] = ["type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = "type" + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = {"ALERT": "AlertMonitorEvent", "CUSTOM": "CustomMonitorEvent"} + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Union[AlertMonitorEvent, CustomMonitorEvent]]: + """Create an instance of MonitorEvent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AlertMonitorEvent, CustomMonitorEvent]]: + """Create an instance of MonitorEvent from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == "AlertMonitorEvent": + return import_module("sysdig_client.models.alert_monitor_event").AlertMonitorEvent.from_dict(obj) + if object_type == "CustomMonitorEvent": + return import_module("sysdig_client.models.custom_monitor_event").CustomMonitorEvent.from_dict(obj) + + raise ValueError( + "MonitorEvent failed to lookup discriminator value from " + + json.dumps(obj) + + ". Discriminator property name: " + + cls.__discriminator_property_name + + ", mapping: " + + json.dumps(cls.__discriminator_value_class_map) + ) diff --git a/sysdig_client/models/monitor_events_page.py b/sysdig_client/models/monitor_events_page.py new file mode 100644 index 00000000..91530a1d --- /dev/null +++ b/sysdig_client/models/monitor_events_page.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class MonitorEventsPage(BaseModel): + """ + Pagination information. + """ # noqa: E501 + + total: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="The number of events matching the search criteria. This number is always major or equal to the number of events returned. " + ) + prev: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="`prev` is a string pointing to the previous page of data. Use this as the `cursor` to get the previous page of data. ", + ) + next: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="`next` is a string pointing to the next page of data. Use this as the `cursor` to scroll paginated results and get the next page of data. If not included, the current response is the last page. ", + ) + __properties: ClassVar[List[str]] = ["total", "prev", "next"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MonitorEventsPage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MonitorEventsPage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"total": obj.get("total"), "prev": obj.get("prev"), "next": obj.get("next")}) + return _obj diff --git a/sysdig_client/models/monitor_scope_label.py b/sysdig_client/models/monitor_scope_label.py new file mode 100644 index 00000000..0dddd487 --- /dev/null +++ b/sysdig_client/models/monitor_scope_label.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class MonitorScopeLabel(BaseModel): + """ + Scope Label. + """ # noqa: E501 + + key: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=1024)]] = Field( + default=None, description="The label key." + ) + value: Optional[ + Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=1024)]], Field(min_length=0, max_length=1024)] + ] = Field(default=None, description="The scope label value(s)") + __properties: ClassVar[List[str]] = ["key", "value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MonitorScopeLabel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MonitorScopeLabel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"key": obj.get("key"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/ms_teams_notification_channel_options_v1.py b/sysdig_client/models/ms_teams_notification_channel_options_v1.py new file mode 100644 index 00000000..1b1ba470 --- /dev/null +++ b/sysdig_client/models/ms_teams_notification_channel_options_v1.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class MsTeamsNotificationChannelOptionsV1(BaseModel): + """ + The Microsoft Teams notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + url: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Microsoft Teams Webhook URL") + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "url"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MsTeamsNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MsTeamsNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), "url": obj.get("url")}) + return _obj diff --git a/sysdig_client/models/ms_teams_notification_channel_response_v1.py b/sysdig_client/models/ms_teams_notification_channel_response_v1.py new file mode 100644 index 00000000..898c5e49 --- /dev/null +++ b/sysdig_client/models/ms_teams_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.ms_teams_notification_channel_options_v1 import MsTeamsNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from typing import Set +from typing_extensions import Self + + +class MsTeamsNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + MsTeamsNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: MsTeamsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MsTeamsNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MsTeamsNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": MsTeamsNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/new_rule.py b/sysdig_client/models/new_rule.py new file mode 100644 index 00000000..bfdaa156 --- /dev/null +++ b/sysdig_client/models/new_rule.py @@ -0,0 +1,124 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.predicates_inner import PredicatesInner +from typing import Optional, Set +from typing_extensions import Self + + +class NewRule(BaseModel): + """ + A Rule definition + """ # noqa: E501 + + rule_type: StrictStr = Field(alias="ruleType") + predicates: Annotated[List[PredicatesInner], Field(min_length=1, max_length=1000)] = Field( + description="The Predicates defining this Rule" + ) + __properties: ClassVar[List[str]] = ["ruleType", "predicates"] + + @field_validator("rule_type") + def rule_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set( + [ + "vulnSeverityAndThreats", + "vulnDenyList", + "imageConfigDefaultUser", + "imageConfigLabel", + "imageConfigEnvVariable", + "imageConfigInstructionNotRecommended", + "imageConfigInstructionIsPkgManager", + "imageConfigCreationDate", + "imageConfigSensitiveInformationAndSecrets", + "pkgDenyList", + ] + ): + raise ValueError( + "must be one of enum values ('vulnSeverityAndThreats', 'vulnDenyList', 'imageConfigDefaultUser', 'imageConfigLabel', 'imageConfigEnvVariable', 'imageConfigInstructionNotRecommended', 'imageConfigInstructionIsPkgManager', 'imageConfigCreationDate', 'imageConfigSensitiveInformationAndSecrets', 'pkgDenyList')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of NewRule from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in predicates (list) + _items = [] + if self.predicates: + for _item_predicates in self.predicates: + if _item_predicates: + _items.append(_item_predicates.to_dict()) + _dict["predicates"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of NewRule from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "ruleType": obj.get("ruleType"), + "predicates": [PredicatesInner.from_dict(_item) for _item in obj["predicates"]] + if obj.get("predicates") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/new_stage.py b/sysdig_client/models/new_stage.py new file mode 100644 index 00000000..f9965d74 --- /dev/null +++ b/sysdig_client/models/new_stage.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.stage_configuration import StageConfiguration +from typing import Set +from typing_extensions import Self + + +class NewStage(BaseModel): + """ + NewStage + """ # noqa: E501 + + name: StrictStr = Field(description="stage name.") + configuration: Optional[Annotated[List[StageConfiguration], Field(min_length=0, max_length=1000)]] = Field( + default=None, description="Configurations for the stage" + ) + __properties: ClassVar[List[str]] = ["name", "configuration"] + + @field_validator("name") + def name_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["runtime", "pipeline", "registry"]): + raise ValueError("must be one of enum values ('runtime', 'pipeline', 'registry')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of NewStage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in configuration (list) + _items = [] + if self.configuration: + for _item_configuration in self.configuration: + if _item_configuration: + _items.append(_item_configuration.to_dict()) + _dict["configuration"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of NewStage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "configuration": [StageConfiguration.from_dict(_item) for _item in obj["configuration"]] + if obj.get("configuration") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/notification_channel.py b/sysdig_client/models/notification_channel.py new file mode 100644 index 00000000..47916eaf --- /dev/null +++ b/sysdig_client/models/notification_channel.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class NotificationChannel(BaseModel): + """ + Schema for a notification channel object + """ # noqa: E501 + + id: Optional[Annotated[int, Field(le=2147483647000, strict=True, ge=0)]] = Field( + default=None, description="Notification channel Id" + ) + type: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Notification channel type" + ) + __properties: ClassVar[List[str]] = ["id", "type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of NotificationChannel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of NotificationChannel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"id": obj.get("id"), "type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/notification_channel_options_v1.py b/sysdig_client/models/notification_channel_options_v1.py new file mode 100644 index 00000000..d3b494ba --- /dev/null +++ b/sysdig_client/models/notification_channel_options_v1.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class NotificationChannelOptionsV1(BaseModel): + """ + NotificationChannelOptionsV1 + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of NotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of NotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo")}) + return _obj diff --git a/sysdig_client/models/notification_channel_response_v1.py b/sysdig_client/models/notification_channel_response_v1.py new file mode 100644 index 00000000..bab2a28a --- /dev/null +++ b/sysdig_client/models/notification_channel_response_v1.py @@ -0,0 +1,236 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from importlib import import_module +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from sysdig_client.models.custom_webhook_notification_channel_response_v1 import CustomWebhookNotificationChannelResponseV1 + from sysdig_client.models.email_notification_channel_response_v1 import EmailNotificationChannelResponseV1 + from sysdig_client.models.gchat_notification_channel_response_v1 import GchatNotificationChannelResponseV1 + from sysdig_client.models.ibm_event_notifications_notification_channel_response_v1 import ( + IbmEventNotificationsNotificationChannelResponseV1, + ) + from sysdig_client.models.ms_teams_notification_channel_response_v1 import MsTeamsNotificationChannelResponseV1 + from sysdig_client.models.opsgenie_notification_channel_response_v1 import OpsgenieNotificationChannelResponseV1 + from sysdig_client.models.pager_duty_notification_channel_response_v1 import PagerDutyNotificationChannelResponseV1 + from sysdig_client.models.prometheus_alert_manager_notification_channel_response_v1 import ( + PrometheusAlertManagerNotificationChannelResponseV1, + ) + from sysdig_client.models.slack_notification_channel_response_v1 import SlackNotificationChannelResponseV1 + from sysdig_client.models.sns_notification_channel_response_v1 import SnsNotificationChannelResponseV1 + from sysdig_client.models.team_email_notification_channel_response_v1 import TeamEmailNotificationChannelResponseV1 + from sysdig_client.models.victor_ops_notification_channel_response_v1 import VictorOpsNotificationChannelResponseV1 + from sysdig_client.models.webhook_notification_channel_response_v1 import WebhookNotificationChannelResponseV1 + + +class NotificationChannelResponseV1(BaseModel): + """ + NotificationChannelResponseV1 + """ # noqa: E501 + + type: Annotated[str, Field(strict=True, max_length=50)] + customer_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of customer that owns the notification channel.", alias="customerId" + ) + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description="Unique ID of the resource.") + version: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, description="The current version of the resource." + ) + created_on: Optional[datetime] = Field(default=None, description="Creation date.", alias="createdOn") + modified_on: Optional[datetime] = Field(default=None, description="Last modification date.", alias="modifiedOn") + __properties: ClassVar[List[str]] = ["type", "customerId", "id", "version", "createdOn", "modifiedOn"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = "type" + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = { + "CUSTOM_WEBHOOK": "CustomWebhookNotificationChannelResponseV1", + "EMAIL": "EmailNotificationChannelResponseV1", + "GCHAT": "GchatNotificationChannelResponseV1", + "IBM_EVENT_NOTIFICATIONS": "IbmEventNotificationsNotificationChannelResponseV1", + "MS_TEAMS": "MsTeamsNotificationChannelResponseV1", + "OPSGENIE": "OpsgenieNotificationChannelResponseV1", + "PAGER_DUTY": "PagerDutyNotificationChannelResponseV1", + "PROMETHEUS_ALERT_MANAGER": "PrometheusAlertManagerNotificationChannelResponseV1", + "SLACK": "SlackNotificationChannelResponseV1", + "SNS": "SnsNotificationChannelResponseV1", + "TEAM_EMAIL": "TeamEmailNotificationChannelResponseV1", + "VICTOROPS": "VictorOpsNotificationChannelResponseV1", + "WEBHOOK": "WebhookNotificationChannelResponseV1", + } + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json( + cls, json_str: str + ) -> Optional[ + Union[ + CustomWebhookNotificationChannelResponseV1, + EmailNotificationChannelResponseV1, + GchatNotificationChannelResponseV1, + IbmEventNotificationsNotificationChannelResponseV1, + MsTeamsNotificationChannelResponseV1, + OpsgenieNotificationChannelResponseV1, + PagerDutyNotificationChannelResponseV1, + PrometheusAlertManagerNotificationChannelResponseV1, + SlackNotificationChannelResponseV1, + SnsNotificationChannelResponseV1, + TeamEmailNotificationChannelResponseV1, + VictorOpsNotificationChannelResponseV1, + WebhookNotificationChannelResponseV1, + ] + ]: + """Create an instance of NotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict( + cls, obj: Dict[str, Any] + ) -> Optional[ + Union[ + CustomWebhookNotificationChannelResponseV1, + EmailNotificationChannelResponseV1, + GchatNotificationChannelResponseV1, + IbmEventNotificationsNotificationChannelResponseV1, + MsTeamsNotificationChannelResponseV1, + OpsgenieNotificationChannelResponseV1, + PagerDutyNotificationChannelResponseV1, + PrometheusAlertManagerNotificationChannelResponseV1, + SlackNotificationChannelResponseV1, + SnsNotificationChannelResponseV1, + TeamEmailNotificationChannelResponseV1, + VictorOpsNotificationChannelResponseV1, + WebhookNotificationChannelResponseV1, + ] + ]: + """Create an instance of NotificationChannelResponseV1 from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == "CustomWebhookNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.custom_webhook_notification_channel_response_v1" + ).CustomWebhookNotificationChannelResponseV1.from_dict(obj) + if object_type == "EmailNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.email_notification_channel_response_v1" + ).EmailNotificationChannelResponseV1.from_dict(obj) + if object_type == "GchatNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.gchat_notification_channel_response_v1" + ).GchatNotificationChannelResponseV1.from_dict(obj) + if object_type == "IbmEventNotificationsNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.ibm_event_notifications_notification_channel_response_v1" + ).IbmEventNotificationsNotificationChannelResponseV1.from_dict(obj) + if object_type == "MsTeamsNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.ms_teams_notification_channel_response_v1" + ).MsTeamsNotificationChannelResponseV1.from_dict(obj) + if object_type == "OpsgenieNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.opsgenie_notification_channel_response_v1" + ).OpsgenieNotificationChannelResponseV1.from_dict(obj) + if object_type == "PagerDutyNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.pager_duty_notification_channel_response_v1" + ).PagerDutyNotificationChannelResponseV1.from_dict(obj) + if object_type == "PrometheusAlertManagerNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.prometheus_alert_manager_notification_channel_response_v1" + ).PrometheusAlertManagerNotificationChannelResponseV1.from_dict(obj) + if object_type == "SlackNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.slack_notification_channel_response_v1" + ).SlackNotificationChannelResponseV1.from_dict(obj) + if object_type == "SnsNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.sns_notification_channel_response_v1" + ).SnsNotificationChannelResponseV1.from_dict(obj) + if object_type == "TeamEmailNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.team_email_notification_channel_response_v1" + ).TeamEmailNotificationChannelResponseV1.from_dict(obj) + if object_type == "VictorOpsNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.victor_ops_notification_channel_response_v1" + ).VictorOpsNotificationChannelResponseV1.from_dict(obj) + if object_type == "WebhookNotificationChannelResponseV1": + return import_module( + "sysdig_client.models.webhook_notification_channel_response_v1" + ).WebhookNotificationChannelResponseV1.from_dict(obj) + + raise ValueError( + "NotificationChannelResponseV1 failed to lookup discriminator value from " + + json.dumps(obj) + + ". Discriminator property name: " + + cls.__discriminator_property_name + + ", mapping: " + + json.dumps(cls.__discriminator_value_class_map) + ) diff --git a/sysdig_client/models/notification_channel_type_v1.py b/sysdig_client/models/notification_channel_type_v1.py new file mode 100644 index 00000000..3e902907 --- /dev/null +++ b/sysdig_client/models/notification_channel_type_v1.py @@ -0,0 +1,46 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class NotificationChannelTypeV1(str, Enum): + """ + The type of the notification channel + """ + + """ + allowed enum values + """ + EMAIL = "EMAIL" + SNS = "SNS" + SLACK = "SLACK" + PAGER_DUTY = "PAGER_DUTY" + VICTOROPS = "VICTOROPS" + OPSGENIE = "OPSGENIE" + WEBHOOK = "WEBHOOK" + CUSTOM_WEBHOOK = "CUSTOM_WEBHOOK" + MS_TEAMS = "MS_TEAMS" + TEAM_EMAIL = "TEAM_EMAIL" + IBM_EVENT_NOTIFICATIONS = "IBM_EVENT_NOTIFICATIONS" + PROMETHEUS_ALERT_MANAGER = "PROMETHEUS_ALERT_MANAGER" + GCHAT = "GCHAT" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of NotificationChannelTypeV1 from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/notification_channel_v1.py b/sysdig_client/models/notification_channel_v1.py new file mode 100644 index 00000000..b4ce0d82 --- /dev/null +++ b/sysdig_client/models/notification_channel_v1.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class NotificationChannelV1(BaseModel): + """ + NotificationChannelV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + __properties: ClassVar[List[str]] = ["teamId", "isEnabled", "name", "hasTestNotificationEnabled"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of NotificationChannelV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of NotificationChannelV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + } + ) + return _obj diff --git a/sysdig_client/models/offset_paginated_response.py b/sysdig_client/models/offset_paginated_response.py new file mode 100644 index 00000000..b3a9c1e3 --- /dev/null +++ b/sysdig_client/models/offset_paginated_response.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class OffsetPaginatedResponse(BaseModel): + """ + OffsetPaginatedResponse + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[Any], Field(max_length=200)]] = Field(default=None, description="Paginated data.") + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OffsetPaginatedResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OffsetPaginatedResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": obj.get("data"), + } + ) + return _obj diff --git a/sysdig_client/models/offset_paginated_response_page.py b/sysdig_client/models/offset_paginated_response_page.py new file mode 100644 index 00000000..8e82df6c --- /dev/null +++ b/sysdig_client/models/offset_paginated_response_page.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class OffsetPaginatedResponsePage(BaseModel): + """ + Page information. + """ # noqa: E501 + + previous: Optional[Annotated[str, Field(strict=True, max_length=8192)]] = None + next: Optional[Annotated[str, Field(strict=True, max_length=8192)]] = None + total: Optional[Annotated[int, Field(strict=True, ge=0)]] = None + __properties: ClassVar[List[str]] = ["previous", "next", "total"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OffsetPaginatedResponsePage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if previous (nullable) is None + # and model_fields_set contains the field + if self.previous is None and "previous" in self.model_fields_set: + _dict["previous"] = None + + # set to None if next (nullable) is None + # and model_fields_set contains the field + if self.next is None and "next" in self.model_fields_set: + _dict["next"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OffsetPaginatedResponsePage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"previous": obj.get("previous"), "next": obj.get("next"), "total": obj.get("total")}) + return _obj diff --git a/sysdig_client/models/open_id_base_v1.py b/sysdig_client/models/open_id_base_v1.py new file mode 100644 index 00000000..5cf08749 --- /dev/null +++ b/sysdig_client/models/open_id_base_v1.py @@ -0,0 +1,126 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.open_id_metadata_v1 import OpenIdMetadataV1 +from typing import Set +from typing_extensions import Self + + +class OpenIdBaseV1(BaseModel): + """ + OpenIdBaseV1 + """ # noqa: E501 + + issuer_url: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The issuer URL of the OpenID Connect provider.", alias="issuerUrl" + ) + client_id: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The client ID of the OpenID Connect provider.", alias="clientId" + ) + is_metadata_discovery_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the metadata discovery is enabled.", alias="isMetadataDiscoveryEnabled" + ) + metadata: Optional[OpenIdMetadataV1] = Field(default=None, description="The metadata of the OpenID Connect provider.") + group_attribute_name: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The group attribute name of the OpenID Connect provider.", alias="groupAttributeName" + ) + is_additional_scopes_check_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the additional scopes verification on login.", + alias="isAdditionalScopesCheckEnabled", + ) + additional_scopes: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=64)]], Field(max_length=64)]] = Field( + default=None, description="List of additional scopes to be verified on login.", alias="additionalScopes" + ) + __properties: ClassVar[List[str]] = [ + "issuerUrl", + "clientId", + "isMetadataDiscoveryEnabled", + "metadata", + "groupAttributeName", + "isAdditionalScopesCheckEnabled", + "additionalScopes", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OpenIdBaseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of metadata + if self.metadata: + _dict["metadata"] = self.metadata.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OpenIdBaseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "issuerUrl": obj.get("issuerUrl"), + "clientId": obj.get("clientId"), + "isMetadataDiscoveryEnabled": obj.get("isMetadataDiscoveryEnabled"), + "metadata": OpenIdMetadataV1.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, + "groupAttributeName": obj.get("groupAttributeName"), + "isAdditionalScopesCheckEnabled": obj.get("isAdditionalScopesCheckEnabled"), + "additionalScopes": obj.get("additionalScopes"), + } + ) + return _obj diff --git a/sysdig_client/models/open_id_config_response_v1.py b/sysdig_client/models/open_id_config_response_v1.py new file mode 100644 index 00000000..e850b2c0 --- /dev/null +++ b/sysdig_client/models/open_id_config_response_v1.py @@ -0,0 +1,130 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.open_id_metadata_v1 import OpenIdMetadataV1 +from sysdig_client.models.sso_settings_response_base_v1 import SsoSettingsResponseBaseV1 +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from typing import Set +from typing_extensions import Self + + +class OpenIdConfigResponseV1(SsoSettingsResponseBaseV1): + """ + OpenIdConfigResponseV1 + """ # noqa: E501 + + issuer_url: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The issuer URL of the OpenID Connect provider.", alias="issuerUrl" + ) + client_id: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The client ID of the OpenID Connect provider.", alias="clientId" + ) + is_metadata_discovery_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the metadata discovery is enabled.", alias="isMetadataDiscoveryEnabled" + ) + metadata: Optional[OpenIdMetadataV1] = Field(default=None, description="The metadata of the OpenID Connect provider.") + group_attribute_name: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The group attribute name of the OpenID Connect provider.", alias="groupAttributeName" + ) + is_additional_scopes_check_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the additional scopes verification on login.", + alias="isAdditionalScopesCheckEnabled", + ) + additional_scopes: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=64)]], Field(max_length=64)]] = Field( + default=None, description="List of additional scopes to be verified on login.", alias="additionalScopes" + ) + __properties: ClassVar[List[str]] = [ + "type", + "issuerUrl", + "clientId", + "isMetadataDiscoveryEnabled", + "metadata", + "groupAttributeName", + "isAdditionalScopesCheckEnabled", + "additionalScopes", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OpenIdConfigResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of metadata + if self.metadata: + _dict["metadata"] = self.metadata.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OpenIdConfigResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "issuerUrl": obj.get("issuerUrl"), + "clientId": obj.get("clientId"), + "isMetadataDiscoveryEnabled": obj.get("isMetadataDiscoveryEnabled"), + "metadata": OpenIdMetadataV1.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, + "groupAttributeName": obj.get("groupAttributeName"), + "isAdditionalScopesCheckEnabled": obj.get("isAdditionalScopesCheckEnabled"), + "additionalScopes": obj.get("additionalScopes"), + } + ) + return _obj diff --git a/sysdig_client/models/open_id_create_request_v1.py b/sysdig_client/models/open_id_create_request_v1.py new file mode 100644 index 00000000..201ea43b --- /dev/null +++ b/sysdig_client/models/open_id_create_request_v1.py @@ -0,0 +1,135 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.open_id_metadata_v1 import OpenIdMetadataV1 +from sysdig_client.models.sso_settings_create_request_base_v1 import SsoSettingsCreateRequestBaseV1 +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from typing import Set +from typing_extensions import Self + + +class OpenIdCreateRequestV1(SsoSettingsCreateRequestBaseV1): + """ + OpenIdCreateRequestV1 + """ # noqa: E501 + + issuer_url: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The issuer URL of the OpenID Connect provider.", alias="issuerUrl" + ) + client_id: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The client ID of the OpenID Connect provider.", alias="clientId" + ) + is_metadata_discovery_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the metadata discovery is enabled.", alias="isMetadataDiscoveryEnabled" + ) + metadata: Optional[OpenIdMetadataV1] = Field(default=None, description="The metadata of the OpenID Connect provider.") + group_attribute_name: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The group attribute name of the OpenID Connect provider.", alias="groupAttributeName" + ) + is_additional_scopes_check_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the additional scopes verification on login.", + alias="isAdditionalScopesCheckEnabled", + ) + additional_scopes: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=64)]], Field(max_length=64)]] = Field( + default=None, description="List of additional scopes to be verified on login.", alias="additionalScopes" + ) + client_secret: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The client secret of the OpenID Connect provider.", alias="clientSecret" + ) + __properties: ClassVar[List[str]] = [ + "type", + "issuerUrl", + "clientId", + "isMetadataDiscoveryEnabled", + "metadata", + "groupAttributeName", + "isAdditionalScopesCheckEnabled", + "additionalScopes", + "clientSecret", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OpenIdCreateRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of metadata + if self.metadata: + _dict["metadata"] = self.metadata.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OpenIdCreateRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "issuerUrl": obj.get("issuerUrl"), + "clientId": obj.get("clientId"), + "isMetadataDiscoveryEnabled": obj.get("isMetadataDiscoveryEnabled"), + "metadata": OpenIdMetadataV1.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, + "groupAttributeName": obj.get("groupAttributeName"), + "isAdditionalScopesCheckEnabled": obj.get("isAdditionalScopesCheckEnabled"), + "additionalScopes": obj.get("additionalScopes"), + "clientSecret": obj.get("clientSecret"), + } + ) + return _obj diff --git a/sysdig_client/models/open_id_metadata_v1.py b/sysdig_client/models/open_id_metadata_v1.py new file mode 100644 index 00000000..46d9e81d --- /dev/null +++ b/sysdig_client/models/open_id_metadata_v1.py @@ -0,0 +1,129 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class OpenIdMetadataV1(BaseModel): + """ + OpenIdMetadataV1 + """ # noqa: E501 + + issuer: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The base issuer URL of the OpenID Connect provider." + ) + authorization_endpoint: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The authorization endpoint of the OpenID Connect provider.", alias="authorizationEndpoint" + ) + token_endpoint: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The token endpoint of the OpenID Connect provider.", alias="tokenEndpoint" + ) + jwks_uri: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The JSON Web Key Set URI of the OpenID Connect provider.", alias="jwksUri" + ) + end_session_endpoint: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="Single sign-out endpoint of the OpenID Connect provider.", alias="endSessionEndpoint" + ) + user_info_endpoint: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The user info endpoint of the OpenID Connect provider.", alias="userInfoEndpoint" + ) + token_auth_method: StrictStr = Field( + description="The token authentication method of the OpenID Connect provider.", alias="tokenAuthMethod" + ) + __properties: ClassVar[List[str]] = [ + "issuer", + "authorizationEndpoint", + "tokenEndpoint", + "jwksUri", + "endSessionEndpoint", + "userInfoEndpoint", + "tokenAuthMethod", + ] + + @field_validator("token_auth_method") + def token_auth_method_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["CLIENT_SECRET_BASIC", "CLIENT_SECRET_POST"]): + raise ValueError("must be one of enum values ('CLIENT_SECRET_BASIC', 'CLIENT_SECRET_POST')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OpenIdMetadataV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OpenIdMetadataV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "issuer": obj.get("issuer"), + "authorizationEndpoint": obj.get("authorizationEndpoint"), + "tokenEndpoint": obj.get("tokenEndpoint"), + "jwksUri": obj.get("jwksUri"), + "endSessionEndpoint": obj.get("endSessionEndpoint"), + "userInfoEndpoint": obj.get("userInfoEndpoint"), + "tokenAuthMethod": obj.get("tokenAuthMethod"), + } + ) + return _obj diff --git a/sysdig_client/models/open_id_request_base_v1.py b/sysdig_client/models/open_id_request_base_v1.py new file mode 100644 index 00000000..adcb9f20 --- /dev/null +++ b/sysdig_client/models/open_id_request_base_v1.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.open_id_metadata_v1 import OpenIdMetadataV1 +from typing import Set +from typing_extensions import Self + + +class OpenIdRequestBaseV1(BaseModel): + """ + OpenIdRequestBaseV1 + """ # noqa: E501 + + issuer_url: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The issuer URL of the OpenID Connect provider.", alias="issuerUrl" + ) + client_id: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The client ID of the OpenID Connect provider.", alias="clientId" + ) + is_metadata_discovery_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the metadata discovery is enabled.", alias="isMetadataDiscoveryEnabled" + ) + metadata: Optional[OpenIdMetadataV1] = Field(default=None, description="The metadata of the OpenID Connect provider.") + group_attribute_name: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The group attribute name of the OpenID Connect provider.", alias="groupAttributeName" + ) + is_additional_scopes_check_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the additional scopes verification on login.", + alias="isAdditionalScopesCheckEnabled", + ) + additional_scopes: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=64)]], Field(max_length=64)]] = Field( + default=None, description="List of additional scopes to be verified on login.", alias="additionalScopes" + ) + client_secret: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The client secret of the OpenID Connect provider.", alias="clientSecret" + ) + __properties: ClassVar[List[str]] = [ + "issuerUrl", + "clientId", + "isMetadataDiscoveryEnabled", + "metadata", + "groupAttributeName", + "isAdditionalScopesCheckEnabled", + "additionalScopes", + "clientSecret", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OpenIdRequestBaseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of metadata + if self.metadata: + _dict["metadata"] = self.metadata.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OpenIdRequestBaseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "issuerUrl": obj.get("issuerUrl"), + "clientId": obj.get("clientId"), + "isMetadataDiscoveryEnabled": obj.get("isMetadataDiscoveryEnabled"), + "metadata": OpenIdMetadataV1.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, + "groupAttributeName": obj.get("groupAttributeName"), + "isAdditionalScopesCheckEnabled": obj.get("isAdditionalScopesCheckEnabled"), + "additionalScopes": obj.get("additionalScopes"), + "clientSecret": obj.get("clientSecret"), + } + ) + return _obj diff --git a/sysdig_client/models/open_id_update_request_v1.py b/sysdig_client/models/open_id_update_request_v1.py new file mode 100644 index 00000000..8662823a --- /dev/null +++ b/sysdig_client/models/open_id_update_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.open_id_metadata_v1 import OpenIdMetadataV1 +from sysdig_client.models.sso_settings_update_request_base_v1 import SsoSettingsUpdateRequestBaseV1 +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from typing import Set +from typing_extensions import Self + + +class OpenIdUpdateRequestV1(SsoSettingsUpdateRequestBaseV1): + """ + OpenIdUpdateRequestV1 + """ # noqa: E501 + + issuer_url: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The issuer URL of the OpenID Connect provider.", alias="issuerUrl" + ) + client_id: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The client ID of the OpenID Connect provider.", alias="clientId" + ) + is_metadata_discovery_enabled: StrictBool = Field( + description="Flag to indicate if the metadata discovery is enabled.", alias="isMetadataDiscoveryEnabled" + ) + metadata: Optional[OpenIdMetadataV1] = Field(default=None, description="The metadata of the OpenID Connect provider.") + group_attribute_name: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The group attribute name of the OpenID Connect provider.", alias="groupAttributeName" + ) + is_additional_scopes_check_enabled: StrictBool = Field( + description="Flag to indicate if the additional scopes verification on login.", alias="isAdditionalScopesCheckEnabled" + ) + additional_scopes: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=64)]], Field(max_length=64)]] = Field( + default=None, description="List of additional scopes to be verified on login.", alias="additionalScopes" + ) + client_secret: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The client secret of the OpenID Connect provider.", alias="clientSecret" + ) + __properties: ClassVar[List[str]] = [ + "type", + "issuerUrl", + "clientId", + "isMetadataDiscoveryEnabled", + "metadata", + "groupAttributeName", + "isAdditionalScopesCheckEnabled", + "additionalScopes", + "clientSecret", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OpenIdUpdateRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of metadata + if self.metadata: + _dict["metadata"] = self.metadata.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OpenIdUpdateRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "issuerUrl": obj.get("issuerUrl"), + "clientId": obj.get("clientId"), + "isMetadataDiscoveryEnabled": obj.get("isMetadataDiscoveryEnabled"), + "metadata": OpenIdMetadataV1.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, + "groupAttributeName": obj.get("groupAttributeName"), + "isAdditionalScopesCheckEnabled": obj.get("isAdditionalScopesCheckEnabled"), + "additionalScopes": obj.get("additionalScopes"), + "clientSecret": obj.get("clientSecret"), + } + ) + return _obj diff --git a/sysdig_client/models/operand.py b/sysdig_client/models/operand.py new file mode 100644 index 00000000..c4fc2ded --- /dev/null +++ b/sysdig_client/models/operand.py @@ -0,0 +1,41 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class Operand(str, Enum): + """ + A supported operand for filtering events. + """ + + """ + allowed enum values + """ + EQUAL = "=" + EXCLAMATION_EQUAL = "!=" + EXISTS = "exists" + NOT_EXISTS = "not exists" + STARTS_WITH = "starts with" + CONTAINS = "contains" + IN = "in" + NOT_IN = "not in" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of Operand from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/opsgenie_notification_channel_options_v1.py b/sysdig_client/models/opsgenie_notification_channel_options_v1.py new file mode 100644 index 00000000..ecfee442 --- /dev/null +++ b/sysdig_client/models/opsgenie_notification_channel_options_v1.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class OpsgenieNotificationChannelOptionsV1(BaseModel): + """ + The Opsgenie notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + region: Optional[StrictStr] = Field(default=None, description="The Opsgenie region to use") + api_key: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The Opsgenie api key", alias="apiKey") + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "region", "apiKey"] + + @field_validator("region") + def region_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["US", "EU"]): + raise ValueError("must be one of enum values ('US', 'EU')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OpsgenieNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OpsgenieNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "region": obj.get("region"), + "apiKey": obj.get("apiKey"), + } + ) + return _obj diff --git a/sysdig_client/models/opsgenie_notification_channel_response_v1.py b/sysdig_client/models/opsgenie_notification_channel_response_v1.py new file mode 100644 index 00000000..4914dd19 --- /dev/null +++ b/sysdig_client/models/opsgenie_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.opsgenie_notification_channel_options_v1 import OpsgenieNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class OpsgenieNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + OpsgenieNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: OpsgenieNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OpsgenieNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OpsgenieNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": OpsgenieNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/originator.py b/sysdig_client/models/originator.py new file mode 100644 index 00000000..6ee86d5a --- /dev/null +++ b/sysdig_client/models/originator.py @@ -0,0 +1,37 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class Originator(str, Enum): + """ + Type of event: - policy - Agent-based runtime threat detection events - profilingDetection - Workload ML detections - falcocloud - Agentless threat detections - admissionController - Kubernetes admission control based posture events + """ + + """ + allowed enum values + """ + POLICY = "policy" + PROFILINGDETECTION = "profilingDetection" + FALCOCLOUD = "falcocloud" + ADMISSIONCONTROLLER = "admissionController" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of Originator from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/package.py b/sysdig_client/models/package.py new file mode 100644 index 00000000..058a928b --- /dev/null +++ b/sysdig_client/models/package.py @@ -0,0 +1,144 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Package(BaseModel): + """ + Package + """ # noqa: E501 + + type: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="scan result package type, example values are: - os - rust - java - ruby - javascript - python - php - golang - C#" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="name of the package") + is_running: Optional[StrictBool] = Field( + default=None, description="whether the package is used by a running process", alias="isRunning" + ) + is_removed: Optional[StrictBool] = Field(default=None, description="whether the package has been removed", alias="isRemoved") + version: Annotated[str, Field(strict=True, max_length=255)] = Field(description="version of the affected package") + license: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="license of the package" + ) + path: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field(default=None, description="path of the package") + suggested_fix: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="suggested fix for the package", alias="suggestedFix" + ) + layer_ref: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="reference to layer", alias="layerRef" + ) + risk_accept_refs: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(min_length=0, max_length=2147483647)] + ] = Field(default=None, description="Reference to the accepted risk.", alias="riskAcceptRefs") + vulnerabilities_refs: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=1024)]], Field(min_length=0, max_length=8192)] + ] = Field(default=None, description="reference to vulnerabilities of the package", alias="vulnerabilitiesRefs") + __properties: ClassVar[List[str]] = [ + "type", + "name", + "isRunning", + "isRemoved", + "version", + "license", + "path", + "suggestedFix", + "layerRef", + "riskAcceptRefs", + "vulnerabilitiesRefs", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Package from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if risk_accept_refs (nullable) is None + # and model_fields_set contains the field + if self.risk_accept_refs is None and "risk_accept_refs" in self.model_fields_set: + _dict["riskAcceptRefs"] = None + + # set to None if vulnerabilities_refs (nullable) is None + # and model_fields_set contains the field + if self.vulnerabilities_refs is None and "vulnerabilities_refs" in self.model_fields_set: + _dict["vulnerabilitiesRefs"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Package from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "name": obj.get("name"), + "isRunning": obj.get("isRunning"), + "isRemoved": obj.get("isRemoved"), + "version": obj.get("version"), + "license": obj.get("license"), + "path": obj.get("path"), + "suggestedFix": obj.get("suggestedFix"), + "layerRef": obj.get("layerRef"), + "riskAcceptRefs": obj.get("riskAcceptRefs"), + "vulnerabilitiesRefs": obj.get("vulnerabilitiesRefs"), + } + ) + return _obj diff --git a/sysdig_client/models/package_name.py b/sysdig_client/models/package_name.py new file mode 100644 index 00000000..352cca36 --- /dev/null +++ b/sysdig_client/models/package_name.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PackageName(BaseModel): + """ + PackageName + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["packageName"]): + raise ValueError("must be one of enum values ('packageName')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PackageName from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PackageName from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/package_name_version.py b/sysdig_client/models/package_name_version.py new file mode 100644 index 00000000..6585bcc5 --- /dev/null +++ b/sysdig_client/models/package_name_version.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PackageNameVersion(BaseModel): + """ + PackageNameVersion + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["packageVersion", "packageName"]): + raise ValueError("must be one of enum values ('packageVersion', 'packageName')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PackageNameVersion from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PackageNameVersion from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/package_path.py b/sysdig_client/models/package_path.py new file mode 100644 index 00000000..35d46100 --- /dev/null +++ b/sysdig_client/models/package_path.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PackagePath(BaseModel): + """ + PackagePath + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["packagePath"]): + raise ValueError("must be one of enum values ('packagePath')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PackagePath from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PackagePath from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/package_path_version.py b/sysdig_client/models/package_path_version.py new file mode 100644 index 00000000..c31f2073 --- /dev/null +++ b/sysdig_client/models/package_path_version.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PackagePathVersion(BaseModel): + """ + PackagePathVersion + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["packageVersion", "packagePath"]): + raise ValueError("must be one of enum values ('packageVersion', 'packagePath')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PackagePathVersion from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PackagePathVersion from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/package_version.py b/sysdig_client/models/package_version.py new file mode 100644 index 00000000..1e569b8c --- /dev/null +++ b/sysdig_client/models/package_version.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PackageVersion(BaseModel): + """ + PackageVersion + """ # noqa: E501 + + context_type: Optional[StrictStr] = Field(default=None, description="Matcher type to apply", alias="contextType") + context_value: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Value to match", alias="contextValue" + ) + __properties: ClassVar[List[str]] = ["contextType", "contextValue"] + + @field_validator("context_type") + def context_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["packageVersion"]): + raise ValueError("must be one of enum values ('packageVersion')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PackageVersion from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PackageVersion from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"contextType": obj.get("contextType"), "contextValue": obj.get("contextValue")}) + return _obj diff --git a/sysdig_client/models/page.py b/sysdig_client/models/page.py new file mode 100644 index 00000000..9c43446d --- /dev/null +++ b/sysdig_client/models/page.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Page(BaseModel): + """ + Pagination information. + """ # noqa: E501 + + total: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="The number of events matching the search criteria. This number is always major or equal to the number of events returned. " + ) + prev: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, + description="The cursor that can be used to fetch a set of events before the first event returned in the `data` array. If this value is unset, then there are no events before the first event returned in the `data` array. By providing this value as `cursor` you will get the events preceding the first event returned in the `data` array. ", + ) + next: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, + description="The cursor that can be used to fetch a set of events after the last event returned in the `data` array. If this value is unset, then there are no events after the last event returned in the `data` array. By providing this value as `cursor` you will get the events following last event returned in the `data` array. ", + ) + __properties: ClassVar[List[str]] = ["total", "prev", "next"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Page from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Page from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"total": obj.get("total"), "prev": obj.get("prev"), "next": obj.get("next")}) + return _obj diff --git a/sysdig_client/models/pager_duty_notification_channel_options_v1.py b/sysdig_client/models/pager_duty_notification_channel_options_v1.py new file mode 100644 index 00000000..bd120a90 --- /dev/null +++ b/sysdig_client/models/pager_duty_notification_channel_options_v1.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PagerDutyNotificationChannelOptionsV1(BaseModel): + """ + The PagerDuty notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + account: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="The PagerDuty account used for the integration" + ) + service_key: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="The PagerDuty service integration key", alias="serviceKey" + ) + service_name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="The PagerDuty service name", alias="serviceName" + ) + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "account", "serviceKey", "serviceName"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PagerDutyNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PagerDutyNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "account": obj.get("account"), + "serviceKey": obj.get("serviceKey"), + "serviceName": obj.get("serviceName"), + } + ) + return _obj diff --git a/sysdig_client/models/pager_duty_notification_channel_response_v1.py b/sysdig_client/models/pager_duty_notification_channel_response_v1.py new file mode 100644 index 00000000..430d88de --- /dev/null +++ b/sysdig_client/models/pager_duty_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.pager_duty_notification_channel_options_v1 import PagerDutyNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class PagerDutyNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + PagerDutyNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: PagerDutyNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PagerDutyNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PagerDutyNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": PagerDutyNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/paginated_integrations_response_v1.py b/sysdig_client/models/paginated_integrations_response_v1.py new file mode 100644 index 00000000..6a92d8be --- /dev/null +++ b/sysdig_client/models/paginated_integrations_response_v1.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.integration_response_v1 import IntegrationResponseV1 +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage +from typing import Set +from typing_extensions import Self + + +class PaginatedIntegrationsResponseV1(BaseModel): + """ + PaginatedIntegrationsResponseV1 + """ # noqa: E501 + + page: Optional[OffsetPaginatedResponsePage] = None + data: Optional[Annotated[List[IntegrationResponseV1], Field(max_length=500)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PaginatedIntegrationsResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PaginatedIntegrationsResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": OffsetPaginatedResponsePage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [IntegrationResponseV1.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/permission_v1.py b/sysdig_client/models/permission_v1.py new file mode 100644 index 00000000..41395d65 --- /dev/null +++ b/sysdig_client/models/permission_v1.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PermissionV1(BaseModel): + """ + Permission to perform an action on the Sysdig platform. + """ # noqa: E501 + + id: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field(default=None, description="Permission Authority. ") + description: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Permission description. " + ) + products: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=3)]], Field(max_length=2)]] = Field( + default=None, description="Specifies the Sysdig product the permission applies to (Secure = SDS; Monitor = SDC). " + ) + dependencies: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=256)]], Field(max_length=100)]] = Field( + default=None, description="List of permissions that this permission depends on. " + ) + __properties: ClassVar[List[str]] = ["id", "description", "products", "dependencies"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PermissionV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PermissionV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "description": obj.get("description"), + "products": obj.get("products"), + "dependencies": obj.get("dependencies"), + } + ) + return _obj diff --git a/sysdig_client/models/pipeline_result.py b/sysdig_client/models/pipeline_result.py new file mode 100644 index 00000000..41db392c --- /dev/null +++ b/sysdig_client/models/pipeline_result.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.policy_evaluation_result import PolicyEvaluationResult +from sysdig_client.models.vuln_total_by_severity import VulnTotalBySeverity +from typing import Set +from typing_extensions import Self + + +class PipelineResult(BaseModel): + """ + pipeline result + """ # noqa: E501 + + policy_evaluation_result: Optional[PolicyEvaluationResult] = Field(default=None, alias="policyEvaluationResult") + result_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Identifier of the scan result", alias="resultId" + ) + pull_string: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="image pull string", alias="pullString" + ) + vuln_total_by_severity: Optional[VulnTotalBySeverity] = Field(default=None, alias="vulnTotalBySeverity") + image_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Identifier of the image (hash).", alias="imageId" + ) + created_at: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field( + default=None, description="datetime of creation", alias="createdAt" + ) + __properties: ClassVar[List[str]] = [ + "policyEvaluationResult", + "resultId", + "pullString", + "vulnTotalBySeverity", + "imageId", + "createdAt", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PipelineResult from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of vuln_total_by_severity + if self.vuln_total_by_severity: + _dict["vulnTotalBySeverity"] = self.vuln_total_by_severity.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PipelineResult from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "policyEvaluationResult": obj.get("policyEvaluationResult"), + "resultId": obj.get("resultId"), + "pullString": obj.get("pullString"), + "vulnTotalBySeverity": VulnTotalBySeverity.from_dict(obj["vulnTotalBySeverity"]) + if obj.get("vulnTotalBySeverity") is not None + else None, + "imageId": obj.get("imageId"), + "createdAt": obj.get("createdAt"), + } + ) + return _obj diff --git a/sysdig_client/models/pipeline_results_response.py b/sysdig_client/models/pipeline_results_response.py new file mode 100644 index 00000000..73210a79 --- /dev/null +++ b/sysdig_client/models/pipeline_results_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.pipeline_result import PipelineResult +from sysdig_client.models.vulnerability_management_page import VulnerabilityManagementPage +from typing import Set +from typing_extensions import Self + + +class PipelineResultsResponse(BaseModel): + """ + pipeline results + """ # noqa: E501 + + page: Optional[VulnerabilityManagementPage] = None + data: Optional[Annotated[List[PipelineResult], Field(min_length=0, max_length=1000)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PipelineResultsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PipelineResultsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": VulnerabilityManagementPage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [PipelineResult.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/pkg_vuln_failure.py b/sysdig_client/models/pkg_vuln_failure.py new file mode 100644 index 00000000..67650ef5 --- /dev/null +++ b/sysdig_client/models/pkg_vuln_failure.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PkgVulnFailure(BaseModel): + """ + PkgVulnFailure + """ # noqa: E501 + + description: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="description of the failure") + package_ref: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="reference to the affected package", alias="packageRef" + ) + vulnerability_ref: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="reference to the vulnerability", alias="vulnerabilityRef" + ) + risk_accept_refs: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(min_length=0, max_length=2147483647)] + ] = Field(default=None, description="list of accepted risks for the failure", alias="riskAcceptRefs") + __properties: ClassVar[List[str]] = ["description", "packageRef", "vulnerabilityRef", "riskAcceptRefs"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PkgVulnFailure from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PkgVulnFailure from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "description": obj.get("description"), + "packageRef": obj.get("packageRef"), + "vulnerabilityRef": obj.get("vulnerabilityRef"), + "riskAcceptRefs": obj.get("riskAcceptRefs"), + } + ) + return _obj diff --git a/sysdig_client/models/policies.py b/sysdig_client/models/policies.py new file mode 100644 index 00000000..30fa2a1a --- /dev/null +++ b/sysdig_client/models/policies.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.policy_evaluation import PolicyEvaluation +from typing import Set +from typing_extensions import Self + + +class Policies(BaseModel): + """ + Policies + """ # noqa: E501 + + global_evaluation: Optional[StrictStr] = Field(default=None, alias="globalEvaluation") + evaluations: Optional[Annotated[List[PolicyEvaluation], Field(min_length=0, max_length=2048)]] = None + __properties: ClassVar[List[str]] = ["globalEvaluation", "evaluations"] + + @field_validator("global_evaluation") + def global_evaluation_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["passed", "failed", "accepted", "noPolicy"]): + raise ValueError("must be one of enum values ('passed', 'failed', 'accepted', 'noPolicy')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Policies from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in evaluations (list) + _items = [] + if self.evaluations: + for _item_evaluations in self.evaluations: + if _item_evaluations: + _items.append(_item_evaluations.to_dict()) + _dict["evaluations"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Policies from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "globalEvaluation": obj.get("globalEvaluation"), + "evaluations": [PolicyEvaluation.from_dict(_item) for _item in obj["evaluations"]] + if obj.get("evaluations") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/policies_page.py b/sysdig_client/models/policies_page.py new file mode 100644 index 00000000..30a6f693 --- /dev/null +++ b/sysdig_client/models/policies_page.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PoliciesPage(BaseModel): + """ + Page details, providing both returned and total count of matched elements. + """ # noqa: E501 + + returned: Annotated[int, Field(le=1000, strict=True, ge=0)] = Field( + description="The number returned elements: always less or equal the limit specified in the request. " + ) + matched: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="Total count of elements matched the provided filter. " + ) + next: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="Cursor used to retrieve the next page of results." + ) + __properties: ClassVar[List[str]] = ["returned", "matched", "next"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PoliciesPage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if next (nullable) is None + # and model_fields_set contains the field + if self.next is None and "next" in self.model_fields_set: + _dict["next"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PoliciesPage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"returned": obj.get("returned"), "matched": obj.get("matched"), "next": obj.get("next")}) + return _obj diff --git a/sysdig_client/models/policies_summary_entry.py b/sysdig_client/models/policies_summary_entry.py new file mode 100644 index 00000000..0254ea5a --- /dev/null +++ b/sysdig_client/models/policies_summary_entry.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class PoliciesSummaryEntry(BaseModel): + """ + A Policy summary that indicates whether a policy failed or passed. + """ # noqa: E501 + + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field(description="Policy Id") + name: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Policy Name") + is_passed: StrictBool = Field(description="True for passed, false for failed", alias="isPassed") + __properties: ClassVar[List[str]] = ["id", "name", "isPassed"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PoliciesSummaryEntry from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PoliciesSummaryEntry from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"id": obj.get("id"), "name": obj.get("name"), "isPassed": obj.get("isPassed")}) + return _obj diff --git a/sysdig_client/models/policy_evaluation.py b/sysdig_client/models/policy_evaluation.py new file mode 100644 index 00000000..9ea07b4a --- /dev/null +++ b/sysdig_client/models/policy_evaluation.py @@ -0,0 +1,119 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.bundle import Bundle +from typing import Set +from typing_extensions import Self + + +class PolicyEvaluation(BaseModel): + """ + PolicyEvaluation + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="policy evaluation name") + identifier: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="policy evaluation id") + description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="policy evaluation description" + ) + bundles: Optional[Annotated[List[Bundle], Field(min_length=0, max_length=2147483647)]] = None + evaluation: StrictStr + created_at: Annotated[str, Field(strict=True, max_length=100)] = Field(description="datetime of creation", alias="createdAt") + updated_at: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="datetime of last update", alias="updatedAt" + ) + __properties: ClassVar[List[str]] = ["name", "identifier", "description", "bundles", "evaluation", "createdAt", "updatedAt"] + + @field_validator("evaluation") + def evaluation_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["passed", "failed", "accepted", "noPolicy"]): + raise ValueError("must be one of enum values ('passed', 'failed', 'accepted', 'noPolicy')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PolicyEvaluation from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in bundles (list) + _items = [] + if self.bundles: + for _item_bundles in self.bundles: + if _item_bundles: + _items.append(_item_bundles.to_dict()) + _dict["bundles"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PolicyEvaluation from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "identifier": obj.get("identifier"), + "description": obj.get("description"), + "bundles": [Bundle.from_dict(_item) for _item in obj["bundles"]] if obj.get("bundles") is not None else None, + "evaluation": obj.get("evaluation"), + "createdAt": obj.get("createdAt"), + "updatedAt": obj.get("updatedAt"), + } + ) + return _obj diff --git a/sysdig_client/models/policy_evaluation_result.py b/sysdig_client/models/policy_evaluation_result.py new file mode 100644 index 00000000..8bbff74c --- /dev/null +++ b/sysdig_client/models/policy_evaluation_result.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class PolicyEvaluationResult(str, Enum): + """ + Policy evaluation result + """ + + """ + allowed enum values + """ + PASSED = "passed" + FAILED = "failed" + ACCEPTED = "accepted" + NOPOLICY = "noPolicy" + NOTAPPLICABLE = "notApplicable" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of PolicyEvaluationResult from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/policy_origin.py b/sysdig_client/models/policy_origin.py new file mode 100644 index 00000000..267a188b --- /dev/null +++ b/sysdig_client/models/policy_origin.py @@ -0,0 +1,36 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class PolicyOrigin(str, Enum): + """ + The policy author: - `Sysdig` - default and managed policies - `Sysdig UI` - users interacting with Sysdig - `Tuner` - the automated tuner + """ + + """ + allowed enum values + """ + SYSDIG = "Sysdig" + SECURE_UI = "Secure UI" + TUNER = "Tuner" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of PolicyOrigin from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/policy_summary.py b/sysdig_client/models/policy_summary.py new file mode 100644 index 00000000..932bcde2 --- /dev/null +++ b/sysdig_client/models/policy_summary.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PolicySummary(BaseModel): + """ + Policy summary definition. + """ # noqa: E501 + + id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field(description="The Policy ID") + name: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field(description="human readable policy name.") + identifier: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field( + description="policy identifier generated from the name." + ) + description: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=1024)]] = Field( + default=None, description="policy description" + ) + stages: Annotated[ + List[Annotated[str, Field(min_length=0, strict=True, max_length=1024)]], Field(min_length=0, max_length=3) + ] = Field( + description="array of stages for the policy. An empty array means the policy is applied only when specifically requested by its identifier. It may be one of the following: - runtime - pipeline - registry " + ) + __properties: ClassVar[List[str]] = ["id", "name", "identifier", "description", "stages"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PolicySummary from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PolicySummary from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "name": obj.get("name"), + "identifier": obj.get("identifier"), + "description": obj.get("description"), + "stages": obj.get("stages"), + } + ) + return _obj diff --git a/sysdig_client/models/posture_policy_summary.py b/sysdig_client/models/posture_policy_summary.py new file mode 100644 index 00000000..c4ab4b5a --- /dev/null +++ b/sysdig_client/models/posture_policy_summary.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.policies_summary_entry import PoliciesSummaryEntry +from typing import Optional, Set +from typing_extensions import Self + + +class PosturePolicySummary(BaseModel): + """ + The posture policy summary + """ # noqa: E501 + + pass_percentage: Annotated[int, Field(le=100, strict=True, ge=0)] = Field( + description="Percentage of policies passing", alias="passPercentage" + ) + policies: Annotated[List[PoliciesSummaryEntry], Field(max_length=10000)] = Field(description="The policies list") + __properties: ClassVar[List[str]] = ["passPercentage", "policies"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PosturePolicySummary from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in policies (list) + _items = [] + if self.policies: + for _item_policies in self.policies: + if _item_policies: + _items.append(_item_policies.to_dict()) + _dict["policies"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PosturePolicySummary from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "passPercentage": obj.get("passPercentage"), + "policies": [PoliciesSummaryEntry.from_dict(_item) for _item in obj["policies"]] + if obj.get("policies") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/predicate.py b/sysdig_client/models/predicate.py new file mode 100644 index 00000000..719b0cdc --- /dev/null +++ b/sysdig_client/models/predicate.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Predicate(BaseModel): + """ + Predicate + """ # noqa: E501 + + type: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="predicate type") + extra: Optional[Dict[str, Any]] = None + __properties: ClassVar[List[str]] = ["type", "extra"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Predicate from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if extra (nullable) is None + # and model_fields_set contains the field + if self.extra is None and "extra" in self.model_fields_set: + _dict["extra"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Predicate from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "extra": obj.get("extra")}) + return _obj diff --git a/sysdig_client/models/predicates_inner.py b/sysdig_client/models/predicates_inner.py new file mode 100644 index 00000000..93e94825 --- /dev/null +++ b/sysdig_client/models/predicates_inner.py @@ -0,0 +1,784 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Optional +from sysdig_client.models.cisa_kev_available_since import CisaKevAvailableSince +from sysdig_client.models.cisa_kev_known_ransomware_campaign_use import CisaKevKnownRansomwareCampaignUse +from sysdig_client.models.cisa_kev_publish_date import CisaKevPublishDate +from sysdig_client.models.deny_cve import DenyCve +from sysdig_client.models.deny_pkg import DenyPkg +from sysdig_client.models.image_config_creation_date_with_age import ImageConfigCreationDateWithAge +from sysdig_client.models.image_config_default_user_is_not import ImageConfigDefaultUserIsNot +from sysdig_client.models.image_config_default_user_is_root import ImageConfigDefaultUserIsRoot +from sysdig_client.models.image_config_default_user_list import ImageConfigDefaultUserList +from sysdig_client.models.image_config_env_variable_contains import ImageConfigEnvVariableContains +from sysdig_client.models.image_config_env_variable_exists import ImageConfigEnvVariableExists +from sysdig_client.models.image_config_env_variable_not_exists import ImageConfigEnvVariableNotExists +from sysdig_client.models.image_config_instruction_is_pkg_manager import ImageConfigInstructionIsPkgManager +from sysdig_client.models.image_config_instruction_not_recommended import ImageConfigInstructionNotRecommended +from sysdig_client.models.image_config_label_exists import ImageConfigLabelExists +from sysdig_client.models.image_config_label_not_contains import ImageConfigLabelNotContains +from sysdig_client.models.image_config_label_not_exists import ImageConfigLabelNotExists +from sysdig_client.models.image_config_sensitive_information_and_secrets import ImageConfigSensitiveInformationAndSecrets +from sysdig_client.models.vuln_age import VulnAge +from sysdig_client.models.vuln_cvss import VulnCvss +from sysdig_client.models.vuln_cvss_equals import VulnCvssEquals +from sysdig_client.models.vuln_disclosure_range import VulnDisclosureRange +from sysdig_client.models.vuln_epss_percentile_gte import VulnEpssPercentileGte +from sysdig_client.models.vuln_epss_score_gte import VulnEpssScoreGte +from sysdig_client.models.vuln_exploitable import VulnExploitable +from sysdig_client.models.vuln_exploitable_no_admin import VulnExploitableNoAdmin +from sysdig_client.models.vuln_exploitable_no_user import VulnExploitableNoUser +from sysdig_client.models.vuln_exploitable_via_network import VulnExploitableViaNetwork +from sysdig_client.models.vuln_exploitable_with_age import VulnExploitableWithAge +from sysdig_client.models.vuln_is_fixable import VulnIsFixable +from sysdig_client.models.vuln_is_fixable_with_age import VulnIsFixableWithAge +from sysdig_client.models.vuln_is_in_use import VulnIsInUse +from sysdig_client.models.vuln_pkg_type import VulnPkgType +from sysdig_client.models.vuln_severity import VulnSeverity +from sysdig_client.models.vuln_severity_equals import VulnSeverityEquals +from typing import Union, Any, List, Set, TYPE_CHECKING, Dict +from typing_extensions import Literal, Self + +PREDICATESINNER_ANY_OF_SCHEMAS = [ + "CisaKevAvailableSince", + "CisaKevKnownRansomwareCampaignUse", + "CisaKevPublishDate", + "DenyCve", + "DenyPkg", + "ImageConfigCreationDateWithAge", + "ImageConfigDefaultUserIsNot", + "ImageConfigDefaultUserIsRoot", + "ImageConfigDefaultUserList", + "ImageConfigEnvVariableContains", + "ImageConfigEnvVariableExists", + "ImageConfigEnvVariableNotExists", + "ImageConfigInstructionIsPkgManager", + "ImageConfigInstructionNotRecommended", + "ImageConfigLabelExists", + "ImageConfigLabelNotContains", + "ImageConfigLabelNotExists", + "ImageConfigSensitiveInformationAndSecrets", + "VulnAge", + "VulnCvss", + "VulnCvssEquals", + "VulnDisclosureRange", + "VulnEpssPercentileGte", + "VulnEpssScoreGte", + "VulnExploitable", + "VulnExploitableNoAdmin", + "VulnExploitableNoUser", + "VulnExploitableViaNetwork", + "VulnExploitableWithAge", + "VulnIsFixable", + "VulnIsFixableWithAge", + "VulnIsInUse", + "VulnPkgType", + "VulnSeverity", + "VulnSeverityEquals", +] + + +class PredicatesInner(BaseModel): + """ + PredicatesInner + """ + + # data type: VulnSeverity + anyof_schema_1_validator: Optional[VulnSeverity] = None + # data type: VulnSeverityEquals + anyof_schema_2_validator: Optional[VulnSeverityEquals] = None + # data type: VulnIsFixable + anyof_schema_3_validator: Optional[VulnIsFixable] = None + # data type: VulnIsFixableWithAge + anyof_schema_4_validator: Optional[VulnIsFixableWithAge] = None + # data type: VulnAge + anyof_schema_5_validator: Optional[VulnAge] = None + # data type: VulnPkgType + anyof_schema_6_validator: Optional[VulnPkgType] = None + # data type: VulnCvss + anyof_schema_7_validator: Optional[VulnCvss] = None + # data type: VulnCvssEquals + anyof_schema_8_validator: Optional[VulnCvssEquals] = None + # data type: VulnExploitable + anyof_schema_9_validator: Optional[VulnExploitable] = None + # data type: VulnExploitableWithAge + anyof_schema_10_validator: Optional[VulnExploitableWithAge] = None + # data type: VulnExploitableNoAdmin + anyof_schema_11_validator: Optional[VulnExploitableNoAdmin] = None + # data type: VulnExploitableNoUser + anyof_schema_12_validator: Optional[VulnExploitableNoUser] = None + # data type: VulnExploitableViaNetwork + anyof_schema_13_validator: Optional[VulnExploitableViaNetwork] = None + # data type: VulnDisclosureRange + anyof_schema_14_validator: Optional[VulnDisclosureRange] = None + # data type: VulnIsInUse + anyof_schema_15_validator: Optional[VulnIsInUse] = None + # data type: VulnEpssScoreGte + anyof_schema_16_validator: Optional[VulnEpssScoreGte] = None + # data type: VulnEpssPercentileGte + anyof_schema_17_validator: Optional[VulnEpssPercentileGte] = None + # data type: CisaKevPublishDate + anyof_schema_18_validator: Optional[CisaKevPublishDate] = None + # data type: CisaKevKnownRansomwareCampaignUse + anyof_schema_19_validator: Optional[CisaKevKnownRansomwareCampaignUse] = None + # data type: CisaKevAvailableSince + anyof_schema_20_validator: Optional[CisaKevAvailableSince] = None + # data type: DenyCve + anyof_schema_21_validator: Optional[DenyCve] = None + # data type: DenyPkg + anyof_schema_22_validator: Optional[DenyPkg] = None + # data type: ImageConfigDefaultUserList + anyof_schema_23_validator: Optional[ImageConfigDefaultUserList] = None + # data type: ImageConfigDefaultUserIsRoot + anyof_schema_24_validator: Optional[ImageConfigDefaultUserIsRoot] = None + # data type: ImageConfigDefaultUserIsNot + anyof_schema_25_validator: Optional[ImageConfigDefaultUserIsNot] = None + # data type: ImageConfigLabelExists + anyof_schema_26_validator: Optional[ImageConfigLabelExists] = None + # data type: ImageConfigLabelNotExists + anyof_schema_27_validator: Optional[ImageConfigLabelNotExists] = None + # data type: ImageConfigLabelNotContains + anyof_schema_28_validator: Optional[ImageConfigLabelNotContains] = None + # data type: ImageConfigEnvVariableExists + anyof_schema_29_validator: Optional[ImageConfigEnvVariableExists] = None + # data type: ImageConfigEnvVariableNotExists + anyof_schema_30_validator: Optional[ImageConfigEnvVariableNotExists] = None + # data type: ImageConfigEnvVariableContains + anyof_schema_31_validator: Optional[ImageConfigEnvVariableContains] = None + # data type: ImageConfigInstructionNotRecommended + anyof_schema_32_validator: Optional[ImageConfigInstructionNotRecommended] = None + # data type: ImageConfigInstructionIsPkgManager + anyof_schema_33_validator: Optional[ImageConfigInstructionIsPkgManager] = None + # data type: ImageConfigCreationDateWithAge + anyof_schema_34_validator: Optional[ImageConfigCreationDateWithAge] = None + # data type: ImageConfigSensitiveInformationAndSecrets + anyof_schema_35_validator: Optional[ImageConfigSensitiveInformationAndSecrets] = None + if TYPE_CHECKING: + actual_instance: Optional[ + Union[ + CisaKevAvailableSince, + CisaKevKnownRansomwareCampaignUse, + CisaKevPublishDate, + DenyCve, + DenyPkg, + ImageConfigCreationDateWithAge, + ImageConfigDefaultUserIsNot, + ImageConfigDefaultUserIsRoot, + ImageConfigDefaultUserList, + ImageConfigEnvVariableContains, + ImageConfigEnvVariableExists, + ImageConfigEnvVariableNotExists, + ImageConfigInstructionIsPkgManager, + ImageConfigInstructionNotRecommended, + ImageConfigLabelExists, + ImageConfigLabelNotContains, + ImageConfigLabelNotExists, + ImageConfigSensitiveInformationAndSecrets, + VulnAge, + VulnCvss, + VulnCvssEquals, + VulnDisclosureRange, + VulnEpssPercentileGte, + VulnEpssScoreGte, + VulnExploitable, + VulnExploitableNoAdmin, + VulnExploitableNoUser, + VulnExploitableViaNetwork, + VulnExploitableWithAge, + VulnIsFixable, + VulnIsFixableWithAge, + VulnIsInUse, + VulnPkgType, + VulnSeverity, + VulnSeverityEquals, + ] + ] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = { + "CisaKevAvailableSince", + "CisaKevKnownRansomwareCampaignUse", + "CisaKevPublishDate", + "DenyCve", + "DenyPkg", + "ImageConfigCreationDateWithAge", + "ImageConfigDefaultUserIsNot", + "ImageConfigDefaultUserIsRoot", + "ImageConfigDefaultUserList", + "ImageConfigEnvVariableContains", + "ImageConfigEnvVariableExists", + "ImageConfigEnvVariableNotExists", + "ImageConfigInstructionIsPkgManager", + "ImageConfigInstructionNotRecommended", + "ImageConfigLabelExists", + "ImageConfigLabelNotContains", + "ImageConfigLabelNotExists", + "ImageConfigSensitiveInformationAndSecrets", + "VulnAge", + "VulnCvss", + "VulnCvssEquals", + "VulnDisclosureRange", + "VulnEpssPercentileGte", + "VulnEpssScoreGte", + "VulnExploitable", + "VulnExploitableNoAdmin", + "VulnExploitableNoUser", + "VulnExploitableViaNetwork", + "VulnExploitableWithAge", + "VulnIsFixable", + "VulnIsFixableWithAge", + "VulnIsInUse", + "VulnPkgType", + "VulnSeverity", + "VulnSeverityEquals", + } + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_anyof(cls, v): + instance = PredicatesInner.model_construct() + error_messages = [] + # validate data type: VulnSeverity + if not isinstance(v, VulnSeverity): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnSeverity`") + else: + return v + + # validate data type: VulnSeverityEquals + if not isinstance(v, VulnSeverityEquals): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnSeverityEquals`") + else: + return v + + # validate data type: VulnIsFixable + if not isinstance(v, VulnIsFixable): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnIsFixable`") + else: + return v + + # validate data type: VulnIsFixableWithAge + if not isinstance(v, VulnIsFixableWithAge): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnIsFixableWithAge`") + else: + return v + + # validate data type: VulnAge + if not isinstance(v, VulnAge): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnAge`") + else: + return v + + # validate data type: VulnPkgType + if not isinstance(v, VulnPkgType): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnPkgType`") + else: + return v + + # validate data type: VulnCvss + if not isinstance(v, VulnCvss): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnCvss`") + else: + return v + + # validate data type: VulnCvssEquals + if not isinstance(v, VulnCvssEquals): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnCvssEquals`") + else: + return v + + # validate data type: VulnExploitable + if not isinstance(v, VulnExploitable): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnExploitable`") + else: + return v + + # validate data type: VulnExploitableWithAge + if not isinstance(v, VulnExploitableWithAge): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnExploitableWithAge`") + else: + return v + + # validate data type: VulnExploitableNoAdmin + if not isinstance(v, VulnExploitableNoAdmin): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnExploitableNoAdmin`") + else: + return v + + # validate data type: VulnExploitableNoUser + if not isinstance(v, VulnExploitableNoUser): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnExploitableNoUser`") + else: + return v + + # validate data type: VulnExploitableViaNetwork + if not isinstance(v, VulnExploitableViaNetwork): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnExploitableViaNetwork`") + else: + return v + + # validate data type: VulnDisclosureRange + if not isinstance(v, VulnDisclosureRange): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnDisclosureRange`") + else: + return v + + # validate data type: VulnIsInUse + if not isinstance(v, VulnIsInUse): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnIsInUse`") + else: + return v + + # validate data type: VulnEpssScoreGte + if not isinstance(v, VulnEpssScoreGte): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnEpssScoreGte`") + else: + return v + + # validate data type: VulnEpssPercentileGte + if not isinstance(v, VulnEpssPercentileGte): + error_messages.append(f"Error! Input type `{type(v)}` is not `VulnEpssPercentileGte`") + else: + return v + + # validate data type: CisaKevPublishDate + if not isinstance(v, CisaKevPublishDate): + error_messages.append(f"Error! Input type `{type(v)}` is not `CisaKevPublishDate`") + else: + return v + + # validate data type: CisaKevKnownRansomwareCampaignUse + if not isinstance(v, CisaKevKnownRansomwareCampaignUse): + error_messages.append(f"Error! Input type `{type(v)}` is not `CisaKevKnownRansomwareCampaignUse`") + else: + return v + + # validate data type: CisaKevAvailableSince + if not isinstance(v, CisaKevAvailableSince): + error_messages.append(f"Error! Input type `{type(v)}` is not `CisaKevAvailableSince`") + else: + return v + + # validate data type: DenyCve + if not isinstance(v, DenyCve): + error_messages.append(f"Error! Input type `{type(v)}` is not `DenyCve`") + else: + return v + + # validate data type: DenyPkg + if not isinstance(v, DenyPkg): + error_messages.append(f"Error! Input type `{type(v)}` is not `DenyPkg`") + else: + return v + + # validate data type: ImageConfigDefaultUserList + if not isinstance(v, ImageConfigDefaultUserList): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigDefaultUserList`") + else: + return v + + # validate data type: ImageConfigDefaultUserIsRoot + if not isinstance(v, ImageConfigDefaultUserIsRoot): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigDefaultUserIsRoot`") + else: + return v + + # validate data type: ImageConfigDefaultUserIsNot + if not isinstance(v, ImageConfigDefaultUserIsNot): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigDefaultUserIsNot`") + else: + return v + + # validate data type: ImageConfigLabelExists + if not isinstance(v, ImageConfigLabelExists): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigLabelExists`") + else: + return v + + # validate data type: ImageConfigLabelNotExists + if not isinstance(v, ImageConfigLabelNotExists): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigLabelNotExists`") + else: + return v + + # validate data type: ImageConfigLabelNotContains + if not isinstance(v, ImageConfigLabelNotContains): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigLabelNotContains`") + else: + return v + + # validate data type: ImageConfigEnvVariableExists + if not isinstance(v, ImageConfigEnvVariableExists): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigEnvVariableExists`") + else: + return v + + # validate data type: ImageConfigEnvVariableNotExists + if not isinstance(v, ImageConfigEnvVariableNotExists): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigEnvVariableNotExists`") + else: + return v + + # validate data type: ImageConfigEnvVariableContains + if not isinstance(v, ImageConfigEnvVariableContains): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigEnvVariableContains`") + else: + return v + + # validate data type: ImageConfigInstructionNotRecommended + if not isinstance(v, ImageConfigInstructionNotRecommended): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigInstructionNotRecommended`") + else: + return v + + # validate data type: ImageConfigInstructionIsPkgManager + if not isinstance(v, ImageConfigInstructionIsPkgManager): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigInstructionIsPkgManager`") + else: + return v + + # validate data type: ImageConfigCreationDateWithAge + if not isinstance(v, ImageConfigCreationDateWithAge): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigCreationDateWithAge`") + else: + return v + + # validate data type: ImageConfigSensitiveInformationAndSecrets + if not isinstance(v, ImageConfigSensitiveInformationAndSecrets): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigSensitiveInformationAndSecrets`") + else: + return v + + if error_messages: + # no match + raise ValueError( + "No match found when setting the actual_instance in PredicatesInner with anyOf schemas: CisaKevAvailableSince, CisaKevKnownRansomwareCampaignUse, CisaKevPublishDate, DenyCve, DenyPkg, ImageConfigCreationDateWithAge, ImageConfigDefaultUserIsNot, ImageConfigDefaultUserIsRoot, ImageConfigDefaultUserList, ImageConfigEnvVariableContains, ImageConfigEnvVariableExists, ImageConfigEnvVariableNotExists, ImageConfigInstructionIsPkgManager, ImageConfigInstructionNotRecommended, ImageConfigLabelExists, ImageConfigLabelNotContains, ImageConfigLabelNotExists, ImageConfigSensitiveInformationAndSecrets, VulnAge, VulnCvss, VulnCvssEquals, VulnDisclosureRange, VulnEpssPercentileGte, VulnEpssScoreGte, VulnExploitable, VulnExploitableNoAdmin, VulnExploitableNoUser, VulnExploitableViaNetwork, VulnExploitableWithAge, VulnIsFixable, VulnIsFixableWithAge, VulnIsInUse, VulnPkgType, VulnSeverity, VulnSeverityEquals. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # anyof_schema_1_validator: Optional[VulnSeverity] = None + try: + instance.actual_instance = VulnSeverity.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_2_validator: Optional[VulnSeverityEquals] = None + try: + instance.actual_instance = VulnSeverityEquals.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_3_validator: Optional[VulnIsFixable] = None + try: + instance.actual_instance = VulnIsFixable.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_4_validator: Optional[VulnIsFixableWithAge] = None + try: + instance.actual_instance = VulnIsFixableWithAge.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_5_validator: Optional[VulnAge] = None + try: + instance.actual_instance = VulnAge.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_6_validator: Optional[VulnPkgType] = None + try: + instance.actual_instance = VulnPkgType.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_7_validator: Optional[VulnCvss] = None + try: + instance.actual_instance = VulnCvss.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_8_validator: Optional[VulnCvssEquals] = None + try: + instance.actual_instance = VulnCvssEquals.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_9_validator: Optional[VulnExploitable] = None + try: + instance.actual_instance = VulnExploitable.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_10_validator: Optional[VulnExploitableWithAge] = None + try: + instance.actual_instance = VulnExploitableWithAge.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_11_validator: Optional[VulnExploitableNoAdmin] = None + try: + instance.actual_instance = VulnExploitableNoAdmin.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_12_validator: Optional[VulnExploitableNoUser] = None + try: + instance.actual_instance = VulnExploitableNoUser.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_13_validator: Optional[VulnExploitableViaNetwork] = None + try: + instance.actual_instance = VulnExploitableViaNetwork.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_14_validator: Optional[VulnDisclosureRange] = None + try: + instance.actual_instance = VulnDisclosureRange.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_15_validator: Optional[VulnIsInUse] = None + try: + instance.actual_instance = VulnIsInUse.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_16_validator: Optional[VulnEpssScoreGte] = None + try: + instance.actual_instance = VulnEpssScoreGte.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_17_validator: Optional[VulnEpssPercentileGte] = None + try: + instance.actual_instance = VulnEpssPercentileGte.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_18_validator: Optional[CisaKevPublishDate] = None + try: + instance.actual_instance = CisaKevPublishDate.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_19_validator: Optional[CisaKevKnownRansomwareCampaignUse] = None + try: + instance.actual_instance = CisaKevKnownRansomwareCampaignUse.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_20_validator: Optional[CisaKevAvailableSince] = None + try: + instance.actual_instance = CisaKevAvailableSince.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_21_validator: Optional[DenyCve] = None + try: + instance.actual_instance = DenyCve.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_22_validator: Optional[DenyPkg] = None + try: + instance.actual_instance = DenyPkg.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_23_validator: Optional[ImageConfigDefaultUserList] = None + try: + instance.actual_instance = ImageConfigDefaultUserList.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_24_validator: Optional[ImageConfigDefaultUserIsRoot] = None + try: + instance.actual_instance = ImageConfigDefaultUserIsRoot.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_25_validator: Optional[ImageConfigDefaultUserIsNot] = None + try: + instance.actual_instance = ImageConfigDefaultUserIsNot.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_26_validator: Optional[ImageConfigLabelExists] = None + try: + instance.actual_instance = ImageConfigLabelExists.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_27_validator: Optional[ImageConfigLabelNotExists] = None + try: + instance.actual_instance = ImageConfigLabelNotExists.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_28_validator: Optional[ImageConfigLabelNotContains] = None + try: + instance.actual_instance = ImageConfigLabelNotContains.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_29_validator: Optional[ImageConfigEnvVariableExists] = None + try: + instance.actual_instance = ImageConfigEnvVariableExists.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_30_validator: Optional[ImageConfigEnvVariableNotExists] = None + try: + instance.actual_instance = ImageConfigEnvVariableNotExists.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_31_validator: Optional[ImageConfigEnvVariableContains] = None + try: + instance.actual_instance = ImageConfigEnvVariableContains.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_32_validator: Optional[ImageConfigInstructionNotRecommended] = None + try: + instance.actual_instance = ImageConfigInstructionNotRecommended.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_33_validator: Optional[ImageConfigInstructionIsPkgManager] = None + try: + instance.actual_instance = ImageConfigInstructionIsPkgManager.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_34_validator: Optional[ImageConfigCreationDateWithAge] = None + try: + instance.actual_instance = ImageConfigCreationDateWithAge.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_35_validator: Optional[ImageConfigSensitiveInformationAndSecrets] = None + try: + instance.actual_instance = ImageConfigSensitiveInformationAndSecrets.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError( + "No match found when deserializing the JSON string into PredicatesInner with anyOf schemas: CisaKevAvailableSince, CisaKevKnownRansomwareCampaignUse, CisaKevPublishDate, DenyCve, DenyPkg, ImageConfigCreationDateWithAge, ImageConfigDefaultUserIsNot, ImageConfigDefaultUserIsRoot, ImageConfigDefaultUserList, ImageConfigEnvVariableContains, ImageConfigEnvVariableExists, ImageConfigEnvVariableNotExists, ImageConfigInstructionIsPkgManager, ImageConfigInstructionNotRecommended, ImageConfigLabelExists, ImageConfigLabelNotContains, ImageConfigLabelNotExists, ImageConfigSensitiveInformationAndSecrets, VulnAge, VulnCvss, VulnCvssEquals, VulnDisclosureRange, VulnEpssPercentileGte, VulnEpssScoreGte, VulnExploitable, VulnExploitableNoAdmin, VulnExploitableNoUser, VulnExploitableViaNetwork, VulnExploitableWithAge, VulnIsFixable, VulnIsFixableWithAge, VulnIsInUse, VulnPkgType, VulnSeverity, VulnSeverityEquals. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[ + Union[ + Dict[str, Any], + CisaKevAvailableSince, + CisaKevKnownRansomwareCampaignUse, + CisaKevPublishDate, + DenyCve, + DenyPkg, + ImageConfigCreationDateWithAge, + ImageConfigDefaultUserIsNot, + ImageConfigDefaultUserIsRoot, + ImageConfigDefaultUserList, + ImageConfigEnvVariableContains, + ImageConfigEnvVariableExists, + ImageConfigEnvVariableNotExists, + ImageConfigInstructionIsPkgManager, + ImageConfigInstructionNotRecommended, + ImageConfigLabelExists, + ImageConfigLabelNotContains, + ImageConfigLabelNotExists, + ImageConfigSensitiveInformationAndSecrets, + VulnAge, + VulnCvss, + VulnCvssEquals, + VulnDisclosureRange, + VulnEpssPercentileGte, + VulnEpssScoreGte, + VulnExploitable, + VulnExploitableNoAdmin, + VulnExploitableNoUser, + VulnExploitableViaNetwork, + VulnExploitableWithAge, + VulnIsFixable, + VulnIsFixableWithAge, + VulnIsInUse, + VulnPkgType, + VulnSeverity, + VulnSeverityEquals, + ] + ]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/pricing_projected_response_v1.py b/sysdig_client/models/pricing_projected_response_v1.py new file mode 100644 index 00000000..cf7a7ed0 --- /dev/null +++ b/sysdig_client/models/pricing_projected_response_v1.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PricingProjectedResponseV1(BaseModel): + """ + The monthly projected cost for a specific cluster. + """ # noqa: E501 + + cluster_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the cluster.", alias="clusterName" + ) + monthly_projected_cost: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Monthly projected cost.", alias="monthlyProjectedCost" + ) + __properties: ClassVar[List[str]] = ["clusterName", "monthlyProjectedCost"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PricingProjectedResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PricingProjectedResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"clusterName": obj.get("clusterName"), "monthlyProjectedCost": obj.get("monthlyProjectedCost")} + ) + return _obj diff --git a/sysdig_client/models/pricing_response_v1.py b/sysdig_client/models/pricing_response_v1.py new file mode 100644 index 00000000..a82c1669 --- /dev/null +++ b/sysdig_client/models/pricing_response_v1.py @@ -0,0 +1,143 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.pricing_type import PricingType +from sysdig_client.models.unit_pricing_v1 import UnitPricingV1 +from typing import Set +from typing_extensions import Self + + +class PricingResponseV1(BaseModel): + """ + The pricing configuration used to compute costs. + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + type: Optional[PricingType] = None + cluster_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the cluster. Required when `type` is `CLUSTER`.", alias="clusterName" + ) + name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the pricing profile." + ) + unit_pricing: Optional[UnitPricingV1] = Field( + default=None, description="The unit pricing configuration used to compute costs.", alias="unitPricing" + ) + spot_label: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of a node label that is used to identify the node as a spot node.", alias="spotLabel" + ) + spot_label_value: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The value of the spot node label.", alias="spotLabelValue" + ) + version: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, description="The current version of the resource. " + ) + __properties: ClassVar[List[str]] = [ + "id", + "type", + "clusterName", + "name", + "unitPricing", + "spotLabel", + "spotLabelValue", + "version", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PricingResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of unit_pricing + if self.unit_pricing: + _dict["unitPricing"] = self.unit_pricing.to_dict() + # set to None if cluster_name (nullable) is None + # and model_fields_set contains the field + if self.cluster_name is None and "cluster_name" in self.model_fields_set: + _dict["clusterName"] = None + + # set to None if spot_label (nullable) is None + # and model_fields_set contains the field + if self.spot_label is None and "spot_label" in self.model_fields_set: + _dict["spotLabel"] = None + + # set to None if spot_label_value (nullable) is None + # and model_fields_set contains the field + if self.spot_label_value is None and "spot_label_value" in self.model_fields_set: + _dict["spotLabelValue"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PricingResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "type": obj.get("type"), + "clusterName": obj.get("clusterName"), + "name": obj.get("name"), + "unitPricing": UnitPricingV1.from_dict(obj["unitPricing"]) if obj.get("unitPricing") is not None else None, + "spotLabel": obj.get("spotLabel"), + "spotLabelValue": obj.get("spotLabelValue"), + "version": obj.get("version"), + } + ) + return _obj diff --git a/sysdig_client/models/pricing_type.py b/sysdig_client/models/pricing_type.py new file mode 100644 index 00000000..c7539ab1 --- /dev/null +++ b/sysdig_client/models/pricing_type.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class PricingType(str, Enum): + """ + The type of the pricing. + """ + + """ + allowed enum values + """ + DEFAULT = "DEFAULT" + CLUSTER = "CLUSTER" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of PricingType from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/private_connection_info_amazon_sqs.py b/sysdig_client/models/private_connection_info_amazon_sqs.py new file mode 100644 index 00000000..fe3a2422 --- /dev/null +++ b/sysdig_client/models/private_connection_info_amazon_sqs.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoAmazonSqs(BaseModel): + """ + PrivateConnectionInfoAmazonSqs + """ # noqa: E501 + + access_key: Optional[Annotated[str, Field(strict=True, max_length=32)]] = Field( + default=None, description="Access Key for authenticating on AWS to send data on the queue", alias="accessKey" + ) + access_secret: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Access Secret for authenticating on AWS to send data on the queue", alias="accessSecret" + ) + __properties: ClassVar[List[str]] = ["accessKey", "accessSecret"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoAmazonSqs from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoAmazonSqs from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"accessKey": obj.get("accessKey"), "accessSecret": obj.get("accessSecret")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_chronicle.py b/sysdig_client/models/private_connection_info_chronicle.py new file mode 100644 index 00000000..52224baa --- /dev/null +++ b/sysdig_client/models/private_connection_info_chronicle.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoChronicle(BaseModel): + """ + PrivateConnectionInfoChronicle + """ # noqa: E501 + + api_key: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The Chronicle v1 API key", alias="apiKey" + ) + __properties: ClassVar[List[str]] = ["apiKey"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoChronicle from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoChronicle from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"apiKey": obj.get("apiKey")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_chronicle_v2.py b/sysdig_client/models/private_connection_info_chronicle_v2.py new file mode 100644 index 00000000..58e029cc --- /dev/null +++ b/sysdig_client/models/private_connection_info_chronicle_v2.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoChronicleV2(BaseModel): + """ + PrivateConnectionInfoChronicleV2 + """ # noqa: E501 + + credentials_o_auth2: Optional[Annotated[str, Field(strict=True, max_length=1048576)]] = Field( + default=None, description="The Chronicle v2 OAuth2 credentials", alias="credentialsOAuth2" + ) + __properties: ClassVar[List[str]] = ["credentialsOAuth2"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoChronicleV2 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoChronicleV2 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"credentialsOAuth2": obj.get("credentialsOAuth2")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_elasticsearch.py b/sysdig_client/models/private_connection_info_elasticsearch.py new file mode 100644 index 00000000..0040cb33 --- /dev/null +++ b/sysdig_client/models/private_connection_info_elasticsearch.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoElasticsearch(BaseModel): + """ + PrivateConnectionInfoElasticsearch + """ # noqa: E501 + + auth: Optional[StrictStr] = Field(default=None, description="Authentication method") + secret: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Authentication secret. To be set if auth is specified" + ) + __properties: ClassVar[List[str]] = ["auth", "secret"] + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["BASIC_AUTH", "BEARER_TOKEN"]): + raise ValueError("must be one of enum values ('BASIC_AUTH', 'BEARER_TOKEN')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoElasticsearch from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoElasticsearch from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"auth": obj.get("auth"), "secret": obj.get("secret")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_google_pub_sub.py b/sysdig_client/models/private_connection_info_google_pub_sub.py new file mode 100644 index 00000000..cfd457c1 --- /dev/null +++ b/sysdig_client/models/private_connection_info_google_pub_sub.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoGooglePubSub(BaseModel): + """ + PrivateConnectionInfoGooglePubSub + """ # noqa: E501 + + credentials_json: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="JSON credentials for the service account Sysdig will use to send data", alias="credentialsJson" + ) + __properties: ClassVar[List[str]] = ["credentialsJson"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoGooglePubSub from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoGooglePubSub from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"credentialsJson": obj.get("credentialsJson")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_google_scc.py b/sysdig_client/models/private_connection_info_google_scc.py new file mode 100644 index 00000000..a0611b5d --- /dev/null +++ b/sysdig_client/models/private_connection_info_google_scc.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoGoogleScc(BaseModel): + """ + PrivateConnectionInfoGoogleScc + """ # noqa: E501 + + credentials_json: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="JSON credentials for the service account Sysdig will use to send data", alias="credentialsJson" + ) + __properties: ClassVar[List[str]] = ["credentialsJson"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoGoogleScc from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoGoogleScc from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"credentialsJson": obj.get("credentialsJson")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_kafka.py b/sysdig_client/models/private_connection_info_kafka.py new file mode 100644 index 00000000..b73b75fc --- /dev/null +++ b/sysdig_client/models/private_connection_info_kafka.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoKafka(BaseModel): + """ + PrivateConnectionInfoKafka + """ # noqa: E501 + + keytab: Optional[Annotated[str, Field(strict=True, max_length=1048576)]] = Field( + default=None, description="base64 encoded Kerberos keytab" + ) + __properties: ClassVar[List[str]] = ["keytab"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoKafka from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoKafka from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"keytab": obj.get("keytab")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_mcm.py b/sysdig_client/models/private_connection_info_mcm.py new file mode 100644 index 00000000..86505ffa --- /dev/null +++ b/sysdig_client/models/private_connection_info_mcm.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoMcm(BaseModel): + """ + PrivateConnectionInfoMcm + """ # noqa: E501 + + api_key: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="IBM Cloud API Key", alias="apiKey" + ) + __properties: ClassVar[List[str]] = ["apiKey"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoMcm from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoMcm from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"apiKey": obj.get("apiKey")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_microsoft_sentinel.py b/sysdig_client/models/private_connection_info_microsoft_sentinel.py new file mode 100644 index 00000000..50c26e93 --- /dev/null +++ b/sysdig_client/models/private_connection_info_microsoft_sentinel.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoMicrosoftSentinel(BaseModel): + """ + PrivateConnectionInfoMicrosoftSentinel + """ # noqa: E501 + + secret: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Log analytics primary key" + ) + __properties: ClassVar[List[str]] = ["secret"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoMicrosoftSentinel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoMicrosoftSentinel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"secret": obj.get("secret")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_splunk.py b/sysdig_client/models/private_connection_info_splunk.py new file mode 100644 index 00000000..8f651092 --- /dev/null +++ b/sysdig_client/models/private_connection_info_splunk.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoSplunk(BaseModel): + """ + PrivateConnectionInfoSplunk + """ # noqa: E501 + + token: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="HTTP Event Collector Token" + ) + __properties: ClassVar[List[str]] = ["token"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoSplunk from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoSplunk from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"token": obj.get("token")}) + return _obj diff --git a/sysdig_client/models/private_connection_info_webhook.py b/sysdig_client/models/private_connection_info_webhook.py new file mode 100644 index 00000000..9e66c66a --- /dev/null +++ b/sysdig_client/models/private_connection_info_webhook.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrivateConnectionInfoWebhook(BaseModel): + """ + PrivateConnectionInfoWebhook + """ # noqa: E501 + + secret: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field( + default=None, description='Secret to use, according to the "auth" value.' + ) + __properties: ClassVar[List[str]] = ["secret"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoWebhook from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrivateConnectionInfoWebhook from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"secret": obj.get("secret")}) + return _obj diff --git a/sysdig_client/models/process_killed_action.py b/sysdig_client/models/process_killed_action.py new file mode 100644 index 00000000..32326191 --- /dev/null +++ b/sysdig_client/models/process_killed_action.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_type import ActionType +from typing import Set +from typing_extensions import Self + + +class ProcessKilledAction(BaseModel): + """ + Process kill automatic action. + """ # noqa: E501 + + type: ActionType + is_successful: Optional[StrictBool] = Field( + default=None, description="Whether or not the action was completed successfully.", alias="isSuccessful" + ) + err_msg: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="When `isSuccessful` is `false`, details on why the action failed. ", alias="errMsg" + ) + __properties: ClassVar[List[str]] = ["type", "isSuccessful", "errMsg"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ProcessKilledAction from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ProcessKilledAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "isSuccessful": obj.get("isSuccessful"), "errMsg": obj.get("errMsg")}) + return _obj diff --git a/sysdig_client/models/producer.py b/sysdig_client/models/producer.py new file mode 100644 index 00000000..2a2bc4b0 --- /dev/null +++ b/sysdig_client/models/producer.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class Producer(BaseModel): + """ + Producer + """ # noqa: E501 + + produced_at: Optional[datetime] = Field(default=None, description="time of result production", alias="producedAt") + __properties: ClassVar[List[str]] = ["producedAt"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Producer from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Producer from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"producedAt": obj.get("producedAt")}) + return _obj diff --git a/sysdig_client/models/product.py b/sysdig_client/models/product.py new file mode 100644 index 00000000..cce6e0ee --- /dev/null +++ b/sysdig_client/models/product.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class Product(str, Enum): + """ + The Sysdig product + """ + + """ + allowed enum values + """ + MONITOR = "monitor" + SECURE = "secure" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of Product from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/prometheus_alert_manager_notification_channel_options_v1.py b/sysdig_client/models/prometheus_alert_manager_notification_channel_options_v1.py new file mode 100644 index 00000000..2470f8a1 --- /dev/null +++ b/sysdig_client/models/prometheus_alert_manager_notification_channel_options_v1.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrometheusAlertManagerNotificationChannelOptionsV1(BaseModel): + """ + The Prometheus Alert Manager notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + url: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="The prometheus alert manager url to which the request should be posted" + ) + is_allows_insecure_connections: Optional[StrictBool] = Field( + default=None, + description="Specifies if the channel allows insecure connections (e.g. plain http, self-signed https)", + alias="isAllowsInsecureConnections", + ) + additional_headers: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=255)]]] = Field( + default=None, description="Additional headers to send in the request to the alert manager url", alias="additionalHeaders" + ) + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "url", "isAllowsInsecureConnections", "additionalHeaders"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrometheusAlertManagerNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrometheusAlertManagerNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "url": obj.get("url"), + "isAllowsInsecureConnections": obj.get("isAllowsInsecureConnections"), + "additionalHeaders": obj.get("additionalHeaders"), + } + ) + return _obj diff --git a/sysdig_client/models/prometheus_alert_manager_notification_channel_response_v1.py b/sysdig_client/models/prometheus_alert_manager_notification_channel_response_v1.py new file mode 100644 index 00000000..d78fb282 --- /dev/null +++ b/sysdig_client/models/prometheus_alert_manager_notification_channel_response_v1.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.prometheus_alert_manager_notification_channel_options_v1 import ( + PrometheusAlertManagerNotificationChannelOptionsV1, +) +from typing import Set +from typing_extensions import Self + + +class PrometheusAlertManagerNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + PrometheusAlertManagerNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: PrometheusAlertManagerNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrometheusAlertManagerNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrometheusAlertManagerNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": PrometheusAlertManagerNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/prometheus_error.py b/sysdig_client/models/prometheus_error.py new file mode 100644 index 00000000..809b8b07 --- /dev/null +++ b/sysdig_client/models/prometheus_error.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class PrometheusError(BaseModel): + """ + PrometheusError + """ # noqa: E501 + + status: Optional[StrictStr] = Field(default=None, description="Indicates an error response.") + error_type: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Type of error encountered.", alias="errorType" + ) + error: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="Error message describing the issue." + ) + __properties: ClassVar[List[str]] = ["status", "errorType", "error"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["error"]): + raise ValueError("must be one of enum values ('error')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PrometheusError from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PrometheusError from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"status": obj.get("status"), "errorType": obj.get("errorType"), "error": obj.get("error")}) + return _obj diff --git a/sysdig_client/models/promql_matcher.py b/sysdig_client/models/promql_matcher.py new file mode 100644 index 00000000..c82c119c --- /dev/null +++ b/sysdig_client/models/promql_matcher.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class PromqlMatcher(BaseModel): + """ + A PromQL-style filter that narrows the dataset to resources matching specific labels. If not provided, no additional filtering is applied. + """ # noqa: E501 + + label: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field( + description="A valid Prometheus label name. Must match ^[a-zA-Z_][a-zA-Z0-9_]*$" + ) + operator: StrictStr = Field( + description="The operator to use in the filter: - `EQUAL` (`=`): Exact match - `NOT_EQUAL` (`!=`): Exclude exact match - `REGEX_MATCH` (`=~`): Regular expression match - `REGEX_NOT_MATCH` (`!~`): Regular expression mismatch " + ) + value: Annotated[str, Field(min_length=1, strict=True, max_length=1024)] = Field(description="The value to match against.") + __properties: ClassVar[List[str]] = ["label", "operator", "value"] + + @field_validator("label") + def label_validate_regular_expression(cls, value): + """Validates the regular expression""" + if not re.match(r"^[a-zA-Z_][a-zA-Z0-9_]*$", value): + raise ValueError(r"must validate the regular expression /^[a-zA-Z_][a-zA-Z0-9_]*$/") + return value + + @field_validator("operator") + def operator_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["EQUAL", "NOT_EQUAL", "REGEX_MATCH", "REGEX_NOT_MATCH"]): + raise ValueError("must be one of enum values ('EQUAL', 'NOT_EQUAL', 'REGEX_MATCH', 'REGEX_NOT_MATCH')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PromqlMatcher from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PromqlMatcher from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"label": obj.get("label"), "operator": obj.get("operator"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/query_response.py b/sysdig_client/models/query_response.py new file mode 100644 index 00000000..e48d598a --- /dev/null +++ b/sysdig_client/models/query_response.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.query_response_entities import QueryResponseEntities +from sysdig_client.models.query_summary import QuerySummary +from typing import Optional, Set +from typing_extensions import Self + + +class QueryResponse(BaseModel): + """ + Response object containing query results and metadata. + """ # noqa: E501 + + entities: QueryResponseEntities + items: Annotated[List[Dict[str, Any]], Field(max_length=1000)] = Field( + description="Array of query results based on the query fields." + ) + id: Annotated[str, Field(min_length=36, strict=True, max_length=36)] = Field( + description="Unique identifier for the query execution." + ) + summary: QuerySummary + __properties: ClassVar[List[str]] = ["entities", "items", "id", "summary"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of QueryResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of entities + if self.entities: + _dict["entities"] = self.entities.to_dict() + # override the default output from pydantic by calling `to_dict()` of summary + if self.summary: + _dict["summary"] = self.summary.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of QueryResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "entities": QueryResponseEntities.from_dict(obj["entities"]) if obj.get("entities") is not None else None, + "items": obj.get("items"), + "id": obj.get("id"), + "summary": QuerySummary.from_dict(obj["summary"]) if obj.get("summary") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/query_response_entities.py b/sysdig_client/models/query_response_entities.py new file mode 100644 index 00000000..ae6b14ea --- /dev/null +++ b/sysdig_client/models/query_response_entities.py @@ -0,0 +1,105 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.entity_definition import EntityDefinition +from typing import Set +from typing_extensions import Self + + +class QueryResponseEntities(BaseModel): + """ + Metadata about the returned fields. + """ # noqa: E501 + + fields: Optional[EntityDefinition] = None + additional_properties: Dict[str, Any] = {} + __properties: ClassVar[List[str]] = ["fields"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of QueryResponseEntities from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + * Fields in `self.additional_properties` are added to the output dict. + """ + excluded_fields: Set[str] = set( + [ + "additional_properties", + ] + ) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of fields + if self.fields: + _dict["fields"] = self.fields.to_dict() + # puts key-value pairs in additional_properties in the top level + if self.additional_properties is not None: + for _key, _value in self.additional_properties.items(): + _dict[_key] = _value + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of QueryResponseEntities from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"fields": EntityDefinition.from_dict(obj["fields"]) if obj.get("fields") is not None else None} + ) + # store additional fields in additional_properties + for _key in obj.keys(): + if _key not in cls.__properties: + _obj.additional_properties[_key] = obj.get(_key) + + return _obj diff --git a/sysdig_client/models/query_response_v1.py b/sysdig_client/models/query_response_v1.py new file mode 100644 index 00000000..6acfca03 --- /dev/null +++ b/sysdig_client/models/query_response_v1.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.query_response_v1_data import QueryResponseV1Data +from typing import Set +from typing_extensions import Self + + +class QueryResponseV1(BaseModel): + """ + QueryResponseV1 + """ # noqa: E501 + + status: Optional[StrictStr] = Field(default=None, description="Query status.") + data: Optional[QueryResponseV1Data] = None + warnings: Optional[List[StrictStr]] = Field(default=None, description="A set of warning messages attached to the response.") + infos: Optional[List[StrictStr]] = Field(default=None, description="A set of information messages attached to the response.") + __properties: ClassVar[List[str]] = ["status", "data", "warnings", "infos"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["success", "error"]): + raise ValueError("must be one of enum values ('success', 'error')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of QueryResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of data + if self.data: + _dict["data"] = self.data.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of QueryResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "status": obj.get("status"), + "data": QueryResponseV1Data.from_dict(obj["data"]) if obj.get("data") is not None else None, + "warnings": obj.get("warnings"), + "infos": obj.get("infos"), + } + ) + return _obj diff --git a/sysdig_client/models/query_response_v1_data.py b/sysdig_client/models/query_response_v1_data.py new file mode 100644 index 00000000..230b0a7d --- /dev/null +++ b/sysdig_client/models/query_response_v1_data.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.query_response_v1_data_result import QueryResponseV1DataResult +from typing import Set +from typing_extensions import Self + + +class QueryResponseV1Data(BaseModel): + """ + The result of the query. + """ # noqa: E501 + + result_type: Optional[StrictStr] = Field(default=None, description="Type of the result set.", alias="resultType") + result: Optional[QueryResponseV1DataResult] = None + __properties: ClassVar[List[str]] = ["resultType", "result"] + + @field_validator("result_type") + def result_type_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["vector", "scalar", "matrix", "string"]): + raise ValueError("must be one of enum values ('vector', 'scalar', 'matrix', 'string')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of QueryResponseV1Data from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of result + if self.result: + _dict["result"] = self.result.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of QueryResponseV1Data from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "resultType": obj.get("resultType"), + "result": QueryResponseV1DataResult.from_dict(obj["result"]) if obj.get("result") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/query_response_v1_data_result.py b/sysdig_client/models/query_response_v1_data_result.py new file mode 100644 index 00000000..a0304810 --- /dev/null +++ b/sysdig_client/models/query_response_v1_data_result.py @@ -0,0 +1,192 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import List, Optional +from typing_extensions import Annotated +from sysdig_client.models.query_response_v1_data_result_any_of_inner import QueryResponseV1DataResultAnyOfInner +from sysdig_client.models.query_response_v1_data_result_any_of_inner1 import QueryResponseV1DataResultAnyOfInner1 +from sysdig_client.models.query_response_v1_data_result_any_of_inner2 import QueryResponseV1DataResultAnyOfInner2 +from typing import Union, Any, Set, TYPE_CHECKING, Dict +from typing_extensions import Literal, Self + +QUERYRESPONSEV1DATARESULT_ANY_OF_SCHEMAS = [ + "List[QueryResponseV1DataResultAnyOfInner1]", + "List[QueryResponseV1DataResultAnyOfInner2]", + "List[QueryResponseV1DataResultAnyOfInner]", +] + + +class QueryResponseV1DataResult(BaseModel): + """ + QueryResponseV1DataResult + """ + + # data type: List[QueryResponseV1DataResultAnyOfInner] + anyof_schema_1_validator: Optional[ + Annotated[List[QueryResponseV1DataResultAnyOfInner], Field(min_length=2, max_length=2)] + ] = Field(default=None, description="Scalar result") + # data type: List[QueryResponseV1DataResultAnyOfInner1] + anyof_schema_2_validator: Optional[Annotated[List[QueryResponseV1DataResultAnyOfInner1], Field(min_length=0)]] = Field( + default=None, description="Vector result" + ) + # data type: List[QueryResponseV1DataResultAnyOfInner2] + anyof_schema_3_validator: Optional[Annotated[List[QueryResponseV1DataResultAnyOfInner2], Field(min_length=0)]] = Field( + default=None, description="Matrix result" + ) + if TYPE_CHECKING: + actual_instance: Optional[ + Union[ + List[QueryResponseV1DataResultAnyOfInner1], + List[QueryResponseV1DataResultAnyOfInner2], + List[QueryResponseV1DataResultAnyOfInner], + ] + ] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = { + "List[QueryResponseV1DataResultAnyOfInner1]", + "List[QueryResponseV1DataResultAnyOfInner2]", + "List[QueryResponseV1DataResultAnyOfInner]", + } + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_anyof(cls, v): + instance = QueryResponseV1DataResult.model_construct() + error_messages = [] + # validate data type: List[QueryResponseV1DataResultAnyOfInner] + try: + instance.anyof_schema_1_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[QueryResponseV1DataResultAnyOfInner1] + try: + instance.anyof_schema_2_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[QueryResponseV1DataResultAnyOfInner2] + try: + instance.anyof_schema_3_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if error_messages: + # no match + raise ValueError( + "No match found when setting the actual_instance in QueryResponseV1DataResult with anyOf schemas: List[QueryResponseV1DataResultAnyOfInner1], List[QueryResponseV1DataResultAnyOfInner2], List[QueryResponseV1DataResultAnyOfInner]. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # deserialize data into List[QueryResponseV1DataResultAnyOfInner] + try: + # validation + instance.anyof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_1_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[QueryResponseV1DataResultAnyOfInner1] + try: + # validation + instance.anyof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_2_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[QueryResponseV1DataResultAnyOfInner2] + try: + # validation + instance.anyof_schema_3_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_3_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError( + "No match found when deserializing the JSON string into QueryResponseV1DataResult with anyOf schemas: List[QueryResponseV1DataResultAnyOfInner1], List[QueryResponseV1DataResultAnyOfInner2], List[QueryResponseV1DataResultAnyOfInner]. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[ + Union[ + Dict[str, Any], + List[QueryResponseV1DataResultAnyOfInner1], + List[QueryResponseV1DataResultAnyOfInner2], + List[QueryResponseV1DataResultAnyOfInner], + ] + ]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/query_response_v1_data_result_any_of_inner.py b/sysdig_client/models/query_response_v1_data_result_any_of_inner.py new file mode 100644 index 00000000..97fb36b1 --- /dev/null +++ b/sysdig_client/models/query_response_v1_data_result_any_of_inner.py @@ -0,0 +1,142 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr, ValidationError, field_validator +from typing import Optional, Union +from typing import Any, List, Set, TYPE_CHECKING, Dict +from typing_extensions import Literal, Self + +QUERYRESPONSEV1DATARESULTANYOFINNER_ANY_OF_SCHEMAS = ["float", "str"] + + +class QueryResponseV1DataResultAnyOfInner(BaseModel): + """ + QueryResponseV1DataResultAnyOfInner + """ + + # data type: float + anyof_schema_1_validator: Optional[Union[StrictFloat, StrictInt]] = None + # data type: str + anyof_schema_2_validator: Optional[StrictStr] = None + if TYPE_CHECKING: + actual_instance: Optional[Union[float, str]] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = {"float", "str"} + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_anyof(cls, v): + instance = QueryResponseV1DataResultAnyOfInner.model_construct() + error_messages = [] + # validate data type: float + try: + instance.anyof_schema_1_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: str + try: + instance.anyof_schema_2_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if error_messages: + # no match + raise ValueError( + "No match found when setting the actual_instance in QueryResponseV1DataResultAnyOfInner with anyOf schemas: float, str. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # deserialize data into float + try: + # validation + instance.anyof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_1_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into str + try: + # validation + instance.anyof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_2_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError( + "No match found when deserializing the JSON string into QueryResponseV1DataResultAnyOfInner with anyOf schemas: float, str. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], float, str]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/query_response_v1_data_result_any_of_inner1.py b/sysdig_client/models/query_response_v1_data_result_any_of_inner1.py new file mode 100644 index 00000000..e490ab2c --- /dev/null +++ b/sysdig_client/models/query_response_v1_data_result_any_of_inner1.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class QueryResponseV1DataResultAnyOfInner1(BaseModel): + """ + QueryResponseV1DataResultAnyOfInner1 + """ # noqa: E501 + + metric: Dict[str, Annotated[str, Field(strict=True, max_length=100)]] + value: Annotated[List[Annotated[str, Field(strict=True, max_length=100)]], Field(min_length=2, max_length=2)] + __properties: ClassVar[List[str]] = ["metric", "value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of QueryResponseV1DataResultAnyOfInner1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of QueryResponseV1DataResultAnyOfInner1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"metric": obj.get("metric"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/query_response_v1_data_result_any_of_inner2.py b/sysdig_client/models/query_response_v1_data_result_any_of_inner2.py new file mode 100644 index 00000000..5b1cd929 --- /dev/null +++ b/sysdig_client/models/query_response_v1_data_result_any_of_inner2.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class QueryResponseV1DataResultAnyOfInner2(BaseModel): + """ + QueryResponseV1DataResultAnyOfInner2 + """ # noqa: E501 + + metric: Dict[str, Annotated[str, Field(strict=True, max_length=100)]] + values: List[Annotated[List[Annotated[str, Field(strict=True, max_length=100)]], Field(min_length=2, max_length=2)]] + __properties: ClassVar[List[str]] = ["metric", "values"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of QueryResponseV1DataResultAnyOfInner2 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of QueryResponseV1DataResultAnyOfInner2 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"metric": obj.get("metric"), "values": obj.get("values")}) + return _obj diff --git a/sysdig_client/models/query_summary.py b/sysdig_client/models/query_summary.py new file mode 100644 index 00000000..1eb12422 --- /dev/null +++ b/sysdig_client/models/query_summary.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class QuerySummary(BaseModel): + """ + Summary of query execution metrics and timing information. + """ # noqa: E501 + + available_after: StrictInt = Field(description="Time taken for results to become available in milliseconds.") + consumed_after: StrictInt = Field(description="Time taken to consume results in milliseconds.") + total_time: StrictInt = Field(description="Total query execution time in milliseconds.") + __properties: ClassVar[List[str]] = ["available_after", "consumed_after", "total_time"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of QuerySummary from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of QuerySummary from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "available_after": obj.get("available_after"), + "consumed_after": obj.get("consumed_after"), + "total_time": obj.get("total_time"), + } + ) + return _obj diff --git a/sysdig_client/models/query_sysql_post_request.py b/sysdig_client/models/query_sysql_post_request.py new file mode 100644 index 00000000..2e05c085 --- /dev/null +++ b/sysdig_client/models/query_sysql_post_request.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class QuerySysqlPostRequest(BaseModel): + """ + QuerySysqlPostRequest + """ # noqa: E501 + + q: StrictStr = Field(description="The SysQL statement.") + limit: Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]] = Field( + default=50, + description="The limit parameter defines the maximum number of items returned in the result set, specifically within the items array in the response. This parameter is optional. The recommended approach is to define the limit directly in the SysQL statement using the LIMIT clause. If specified in the request body, it will override the limit set in the statement. If not specified, a default limit of 50 will be applied. ", + ) + offset: Optional[Annotated[int, Field(le=10000, strict=True, ge=0)]] = Field( + default=0, + description="The offset parameter specifies how many result set objects to skip in a MATCH statement. Use it when you want to ignore the first few items in the result set. This parameter is optional. The recommended approach is to set the offset directly in the SysQL statement using the OFFSET clause. If specified in the request body, it will override the offset in the statement. If not specified, a default offset of 0 will be applied. Use limit and offset together in SysQL to paginate results, splitting them into pages with a defined number of items for display. ", + ) + deterministic_order: Optional[StrictBool] = Field( + default=False, + description="The deterministic_order parameter controls whether consistent ordering is enforced in the result set. Ordering is implicitly applied when pagination options, such as limit and offset, are specified in the request. This is an optional parameter. ", + ) + __properties: ClassVar[List[str]] = ["q", "limit", "offset", "deterministic_order"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of QuerySysqlPostRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of QuerySysqlPostRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "q": obj.get("q"), + "limit": obj.get("limit") if obj.get("limit") is not None else 50, + "offset": obj.get("offset") if obj.get("offset") is not None else 0, + "deterministic_order": obj.get("deterministic_order") if obj.get("deterministic_order") is not None else False, + } + ) + return _obj diff --git a/sysdig_client/models/query_time.py b/sysdig_client/models/query_time.py new file mode 100644 index 00000000..108aa4a1 --- /dev/null +++ b/sysdig_client/models/query_time.py @@ -0,0 +1,155 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from typing_extensions import Annotated +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +QUERYTIME_ONE_OF_SCHEMAS = ["datetime", "int"] + + +class QueryTime(BaseModel): + """ + Time defined as RFC3339 or a unix timestamp + """ + + # data type: datetime + oneof_schema_1_validator: Optional[datetime] = None + # data type: int + oneof_schema_2_validator: Optional[Annotated[int, Field(le=4102444800, strict=True, ge=0)]] = None + actual_instance: Optional[Union[datetime, int]] = None + one_of_schemas: Set[str] = {"datetime", "int"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = QueryTime.model_construct() + error_messages = [] + match = 0 + # validate data type: datetime + try: + instance.oneof_schema_1_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: int + try: + instance.oneof_schema_2_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in QueryTime with oneOf schemas: datetime, int. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in QueryTime with oneOf schemas: datetime, int. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into datetime + try: + # validation + instance.oneof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_1_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into int + try: + # validation + instance.oneof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_2_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into QueryTime with oneOf schemas: datetime, int. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into QueryTime with oneOf schemas: datetime, int. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], datetime, int]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/registry_result.py b/sysdig_client/models/registry_result.py new file mode 100644 index 00000000..55093ca0 --- /dev/null +++ b/sysdig_client/models/registry_result.py @@ -0,0 +1,114 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.vuln_total_by_severity import VulnTotalBySeverity +from typing import Set +from typing_extensions import Self + + +class RegistryResult(BaseModel): + """ + Registry result + """ # noqa: E501 + + result_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Identifier of the scan result", alias="resultId" + ) + image_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Identifier of the image (hash).", alias="imageId" + ) + vendor: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Identifier the vendor of the image" + ) + pull_string: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="Name of the scanned asset", alias="pullString" + ) + vuln_total_by_severity: Optional[VulnTotalBySeverity] = Field(default=None, alias="vulnTotalBySeverity") + created_at: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field( + default=None, description="datetime of creation", alias="createdAt" + ) + __properties: ClassVar[List[str]] = ["resultId", "imageId", "vendor", "pullString", "vulnTotalBySeverity", "createdAt"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RegistryResult from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of vuln_total_by_severity + if self.vuln_total_by_severity: + _dict["vulnTotalBySeverity"] = self.vuln_total_by_severity.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RegistryResult from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "resultId": obj.get("resultId"), + "imageId": obj.get("imageId"), + "vendor": obj.get("vendor"), + "pullString": obj.get("pullString"), + "vulnTotalBySeverity": VulnTotalBySeverity.from_dict(obj["vulnTotalBySeverity"]) + if obj.get("vulnTotalBySeverity") is not None + else None, + "createdAt": obj.get("createdAt"), + } + ) + return _obj diff --git a/sysdig_client/models/registry_results_response.py b/sysdig_client/models/registry_results_response.py new file mode 100644 index 00000000..4b7df66d --- /dev/null +++ b/sysdig_client/models/registry_results_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.registry_result import RegistryResult +from sysdig_client.models.vulnerability_management_page import VulnerabilityManagementPage +from typing import Set +from typing_extensions import Self + + +class RegistryResultsResponse(BaseModel): + """ + registry results response + """ # noqa: E501 + + page: Optional[VulnerabilityManagementPage] = None + data: Optional[Annotated[List[RegistryResult], Field(min_length=0, max_length=1000)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RegistryResultsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RegistryResultsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": VulnerabilityManagementPage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [RegistryResult.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/request_body_disabled_metrics_v1.py b/sysdig_client/models/request_body_disabled_metrics_v1.py new file mode 100644 index 00000000..265f07ec --- /dev/null +++ b/sysdig_client/models/request_body_disabled_metrics_v1.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.disable_jobs_and_metrics_v1 import DisableJobsAndMetricsV1 +from typing import Optional, Set +from typing_extensions import Self + + +class RequestBodyDisabledMetricsV1(BaseModel): + """ + Change Disabled Metrics per JobName + """ # noqa: E501 + + data: Annotated[List[DisableJobsAndMetricsV1], Field(max_length=1000)] + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RequestBodyDisabledMetricsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RequestBodyDisabledMetricsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [DisableJobsAndMetricsV1.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/responder_type.py b/sysdig_client/models/responder_type.py new file mode 100644 index 00000000..644be2e1 --- /dev/null +++ b/sysdig_client/models/responder_type.py @@ -0,0 +1,36 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class ResponderType(str, Enum): + """ + The type of Responder executing an action. + """ + + """ + allowed enum values + """ + HOST = "HOST" + CLUSTER = "CLUSTER" + CLOUD = "CLOUD" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of ResponderType from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/response_action.py b/sysdig_client/models/response_action.py new file mode 100644 index 00000000..a0644d5c --- /dev/null +++ b/sysdig_client/models/response_action.py @@ -0,0 +1,123 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_outputs_metadata import ActionOutputsMetadata +from sysdig_client.models.action_parameter_metadata import ActionParameterMetadata +from sysdig_client.models.responder_type import ResponderType +from typing import Set +from typing_extensions import Self + + +class ResponseAction(BaseModel): + """ + The action metadata + """ # noqa: E501 + + type: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="The name of the Response Action to execute. It may be one of the following: - KILL_PROCESS - KILL_CONTAINER - STOP_CONTAINER - PAUSE_CONTAINER - FILE_QUARANTINE - FILE_ACQUIRE - UNPAUSE_CONTAINER - FILE_UNQUARANTINE - START_CONTAINER - DELETE_POD - ROLLOUT_RESTART - KUBERNETES_VOLUME_SNAPSHOT - KUBERNETES_DELETE_VOLUME_SNAPSHOT - GET_LOGS - ISOLATE_NETWORK - DELETE_NETWORK_POLICY The following actions serve as the undo for previous actions: - START_CONTAINER: undo for STOP_CONTAINER\\ - UNPAUSE_CONTAINER: undo for PAUSE_CONTAINER\\ - FILE_UNQUARANTINE: undo for FILE_QUARANTINE\\ - KUBERNETES_DELETE_VOLUME_SNAPSHOT: undo for KUBERNETES_VOLUME_SNAPSHOT\\ - DELETE_NETWORK_POLICY: undo for ISOLATE_NETWORK\\ Do not use undo actions in [submitActionExecutionv1](#tag/Response-actions/operation/submitActionExecutionv1). You can execute an undo actions using the service [undoActionExecutionV1](#tag/Response-actions/operation/undoActionExecutionV1). " + ) + responder_type: ResponderType = Field(alias="responderType") + parameters: Annotated[List[ActionParameterMetadata], Field(max_length=100)] = Field( + description="the list of parameters that the action supports" + ) + outputs: Optional[Annotated[List[ActionOutputsMetadata], Field(max_length=100)]] = None + description: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="The description of the action.") + is_undoable: StrictBool = Field(description="Whether the action is undoable.", alias="isUndoable") + __properties: ClassVar[List[str]] = ["type", "responderType", "parameters", "outputs", "description", "isUndoable"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ResponseAction from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in parameters (list) + _items = [] + if self.parameters: + for _item_parameters in self.parameters: + if _item_parameters: + _items.append(_item_parameters.to_dict()) + _dict["parameters"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in outputs (list) + _items = [] + if self.outputs: + for _item_outputs in self.outputs: + if _item_outputs: + _items.append(_item_outputs.to_dict()) + _dict["outputs"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ResponseAction from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "responderType": obj.get("responderType"), + "parameters": [ActionParameterMetadata.from_dict(_item) for _item in obj["parameters"]] + if obj.get("parameters") is not None + else None, + "outputs": [ActionOutputsMetadata.from_dict(_item) for _item in obj["outputs"]] + if obj.get("outputs") is not None + else None, + "description": obj.get("description"), + "isUndoable": obj.get("isUndoable"), + } + ) + return _obj diff --git a/sysdig_client/models/response_list_disabled_metrics_and_error_v1.py b/sysdig_client/models/response_list_disabled_metrics_and_error_v1.py new file mode 100644 index 00000000..95b3aaee --- /dev/null +++ b/sysdig_client/models/response_list_disabled_metrics_and_error_v1.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.list_job_and_disabled_metrics_v1 import ListJobAndDisabledMetricsV1 +from sysdig_client.models.metric_error_v1 import MetricErrorV1 +from typing import Optional, Set +from typing_extensions import Self + + +class ResponseListDisabledMetricsAndErrorV1(BaseModel): + """ + Get Disabled Metrics by Job name Response + """ # noqa: E501 + + data: Annotated[List[ListJobAndDisabledMetricsV1], Field(max_length=1000)] + errors: Annotated[List[MetricErrorV1], Field(max_length=1000)] + __properties: ClassVar[List[str]] = ["data", "errors"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ResponseListDisabledMetricsAndErrorV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in errors (list) + _items = [] + if self.errors: + for _item_errors in self.errors: + if _item_errors: + _items.append(_item_errors.to_dict()) + _dict["errors"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ResponseListDisabledMetricsAndErrorV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "data": [ListJobAndDisabledMetricsV1.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + "errors": [MetricErrorV1.from_dict(_item) for _item in obj["errors"]] if obj.get("errors") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/response_list_disabled_metrics_v1.py b/sysdig_client/models/response_list_disabled_metrics_v1.py new file mode 100644 index 00000000..a465790f --- /dev/null +++ b/sysdig_client/models/response_list_disabled_metrics_v1.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.list_job_and_disabled_metrics_v1 import ListJobAndDisabledMetricsV1 +from sysdig_client.models.metric_error_v1 import MetricErrorV1 +from typing import Set +from typing_extensions import Self + + +class ResponseListDisabledMetricsV1(BaseModel): + """ + Get Disabled Metrics by Job name Response + """ # noqa: E501 + + data: Annotated[List[ListJobAndDisabledMetricsV1], Field(max_length=1000)] + errors: Optional[Annotated[List[MetricErrorV1], Field(max_length=0)]] = None + __properties: ClassVar[List[str]] = ["data", "errors"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ResponseListDisabledMetricsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in errors (list) + _items = [] + if self.errors: + for _item_errors in self.errors: + if _item_errors: + _items.append(_item_errors.to_dict()) + _dict["errors"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ResponseListDisabledMetricsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "data": [ListJobAndDisabledMetricsV1.from_dict(_item) for _item in obj["data"]] + if obj.get("data") is not None + else None, + "errors": [MetricErrorV1.from_dict(_item) for _item in obj["errors"]] if obj.get("errors") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/risk_acceptance_definition.py b/sysdig_client/models/risk_acceptance_definition.py new file mode 100644 index 00000000..1adef1f0 --- /dev/null +++ b/sysdig_client/models/risk_acceptance_definition.py @@ -0,0 +1,148 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.context import Context +from typing import Set +from typing_extensions import Self + + +class RiskAcceptanceDefinition(BaseModel): + """ + RiskAcceptanceDefinition + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=255)] = Field(description="id of the risk acceptance") + entity_type: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="entity type for the risk", alias="entityType" + ) + entity_value: Annotated[str, Field(strict=True, max_length=1024)] = Field( + description="entity value relative to the the entity type", alias="entityValue" + ) + context: Annotated[List[Context], Field(min_length=0, max_length=2147483647)] + status: StrictStr + reason: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="risk acceptance reason" + ) + description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="risk acceptance description" + ) + expiration_date: Optional[date] = Field(alias="expirationDate") + created_at: Annotated[str, Field(strict=True, max_length=100)] = Field(description="datetime of creation", alias="createdAt") + updated_at: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="datetime of last update", alias="updatedAt" + ) + __properties: ClassVar[List[str]] = [ + "id", + "entityType", + "entityValue", + "context", + "status", + "reason", + "description", + "expirationDate", + "createdAt", + "updatedAt", + ] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["active", "expired"]): + raise ValueError("must be one of enum values ('active', 'expired')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RiskAcceptanceDefinition from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in context (list) + _items = [] + if self.context: + for _item_context in self.context: + if _item_context: + _items.append(_item_context.to_dict()) + _dict["context"] = _items + # set to None if expiration_date (nullable) is None + # and model_fields_set contains the field + if self.expiration_date is None and "expiration_date" in self.model_fields_set: + _dict["expirationDate"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RiskAcceptanceDefinition from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "entityType": obj.get("entityType"), + "entityValue": obj.get("entityValue"), + "context": [Context.from_dict(_item) for _item in obj["context"]] if obj.get("context") is not None else None, + "status": obj.get("status"), + "reason": obj.get("reason"), + "description": obj.get("description"), + "expirationDate": obj.get("expirationDate"), + "createdAt": obj.get("createdAt"), + "updatedAt": obj.get("updatedAt"), + } + ) + return _obj diff --git a/sysdig_client/models/risk_accepted_response.py b/sysdig_client/models/risk_accepted_response.py new file mode 100644 index 00000000..8257957d --- /dev/null +++ b/sysdig_client/models/risk_accepted_response.py @@ -0,0 +1,197 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date, datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.risk_accepted_response_all_of_context import RiskAcceptedResponseAllOfContext +from typing import Set +from typing_extensions import Self + + +class RiskAcceptedResponse(BaseModel): + """ + RiskAcceptedResponse + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=512)] = Field(description="The Accepted Risk ID") + expiration_date: Optional[date] = Field( + default=None, description="Date when the accepted risk will expire (in YYYY-MM-DD format)", alias="expirationDate" + ) + created_at: Optional[datetime] = Field(default=None, description="Date when the Accepted Risk was created", alias="createdAt") + updated_at: Optional[datetime] = Field(default=None, description="Date when the Accepted Risk was updated", alias="updatedAt") + status: StrictStr = Field(description="Specifies whether the Accepted Risk is enabled or expired") + created_by: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field( + default=None, description="User who created the risk acceptance", alias="createdBy" + ) + updated_by: Optional[Annotated[str, Field(strict=True, max_length=100)]] = Field( + default=None, description="User who last updated the risk acceptance", alias="updatedBy" + ) + entity_value: Annotated[str, Field(min_length=1, strict=True, max_length=512)] = Field( + description="A value to match with the entityType", alias="entityValue" + ) + reason: StrictStr = Field(description="Reason for acceptance") + description: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Description of why the accepted risk was created" + ) + stages: Optional[Annotated[List[StrictStr], Field(min_length=0, max_length=3)]] = Field( + default=None, + description="List of stages where the risk acceptance is applied, empty list enables risk acceptance for all the stages", + ) + entity_type: StrictStr = Field(description="The entity where the Accepted Risk will be applied.", alias="entityType") + context: RiskAcceptedResponseAllOfContext + __properties: ClassVar[List[str]] = [ + "id", + "expirationDate", + "createdAt", + "updatedAt", + "status", + "createdBy", + "updatedBy", + "entityValue", + "reason", + "description", + "stages", + "entityType", + "context", + ] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["active", "expired"]): + raise ValueError("must be one of enum values ('active', 'expired')") + return value + + @field_validator("reason") + def reason_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["RiskTransferred", "RiskAvoided", "RiskMitigated", "RiskOwned", "RiskNotRelevant", "Custom"]): + raise ValueError( + "must be one of enum values ('RiskTransferred', 'RiskAvoided', 'RiskMitigated', 'RiskOwned', 'RiskNotRelevant', 'Custom')" + ) + return value + + @field_validator("stages") + def stages_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + for i in value: + if i not in set(["runtime", "pipeline", "registry"]): + raise ValueError("each list item must be one of ('runtime', 'pipeline', 'registry')") + return value + + @field_validator("entity_type") + def entity_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set( + [ + "imageName", + "imagePrefix", + "imageSuffix", + "vulnerability", + "hostName", + "hostNameContains", + "imageNameContains", + "policyRule", + "package", + ] + ): + raise ValueError( + "must be one of enum values ('imageName', 'imagePrefix', 'imageSuffix', 'vulnerability', 'hostName', 'hostNameContains', 'imageNameContains', 'policyRule', 'package')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RiskAcceptedResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of context + if self.context: + _dict["context"] = self.context.to_dict() + # set to None if stages (nullable) is None + # and model_fields_set contains the field + if self.stages is None and "stages" in self.model_fields_set: + _dict["stages"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RiskAcceptedResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "expirationDate": obj.get("expirationDate"), + "createdAt": obj.get("createdAt"), + "updatedAt": obj.get("updatedAt"), + "status": obj.get("status"), + "createdBy": obj.get("createdBy"), + "updatedBy": obj.get("updatedBy"), + "entityValue": obj.get("entityValue"), + "reason": obj.get("reason"), + "description": obj.get("description"), + "stages": obj.get("stages"), + "entityType": obj.get("entityType"), + "context": RiskAcceptedResponseAllOfContext.from_dict(obj["context"]) if obj.get("context") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/risk_accepted_response_all_of_context.py b/sysdig_client/models/risk_accepted_response_all_of_context.py new file mode 100644 index 00000000..a332d913 --- /dev/null +++ b/sysdig_client/models/risk_accepted_response_all_of_context.py @@ -0,0 +1,418 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.host_name import HostName +from sysdig_client.models.host_name_contains import HostNameContains +from sysdig_client.models.image_name import ImageName +from sysdig_client.models.image_name_contains import ImageNameContains +from sysdig_client.models.image_prefix import ImagePrefix +from sysdig_client.models.image_suffix import ImageSuffix +from sysdig_client.models.package_name import PackageName +from sysdig_client.models.package_name_version import PackageNameVersion +from sysdig_client.models.package_path import PackagePath +from sysdig_client.models.package_path_version import PackagePathVersion +from sysdig_client.models.package_version import PackageVersion +from typing import Union, Set +from typing_extensions import Literal, Self + +RISKACCEPTEDRESPONSEALLOFCONTEXT_ONE_OF_SCHEMAS = [ + "List[HostNameContains]", + "List[HostName]", + "List[ImageNameContains]", + "List[ImageName]", + "List[ImagePrefix]", + "List[ImageSuffix]", + "List[PackageNameVersion]", + "List[PackageName]", + "List[PackagePathVersion]", + "List[PackagePath]", + "List[PackageVersion]", + "List[object]", +] + + +class RiskAcceptedResponseAllOfContext(BaseModel): + """ + If entityType is not `vulnerability`, `policyRule` or `package`, you should use `Empty Matcher` in the context. + """ + + # data type: List[object] + oneof_schema_1_validator: Optional[Annotated[List[Dict[str, Any]], Field(max_length=0)]] = Field( + default=None, description="To be used when `entityType` is not `vulnerability` or `policyRule`." + ) + # data type: List[ImageName] + oneof_schema_2_validator: Optional[Annotated[List[ImageName], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[ImageSuffix] + oneof_schema_3_validator: Optional[Annotated[List[ImageSuffix], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[ImagePrefix] + oneof_schema_4_validator: Optional[Annotated[List[ImagePrefix], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[ImageNameContains] + oneof_schema_5_validator: Optional[Annotated[List[ImageNameContains], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackageName] + oneof_schema_6_validator: Optional[Annotated[List[PackageName], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackageNameVersion] + oneof_schema_7_validator: Optional[Annotated[List[PackageNameVersion], Field(min_length=2, max_length=2)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[HostName] + oneof_schema_8_validator: Optional[Annotated[List[HostName], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context host name" + ) + # data type: List[HostNameContains] + oneof_schema_9_validator: Optional[Annotated[List[HostNameContains], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackagePath] + oneof_schema_10_validator: Optional[Annotated[List[PackagePath], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackageVersion] + oneof_schema_11_validator: Optional[Annotated[List[PackageVersion], Field(min_length=1, max_length=1)]] = Field( + default=None, description="Context to apply" + ) + # data type: List[PackagePathVersion] + oneof_schema_12_validator: Optional[Annotated[List[PackagePathVersion], Field(min_length=2, max_length=2)]] = Field( + default=None, description="Context to apply" + ) + actual_instance: Optional[ + Union[ + List[HostNameContains], + List[HostName], + List[ImageNameContains], + List[ImageName], + List[ImagePrefix], + List[ImageSuffix], + List[PackageNameVersion], + List[PackageName], + List[PackagePathVersion], + List[PackagePath], + List[PackageVersion], + List[object], + ] + ] = None + one_of_schemas: Set[str] = { + "List[HostNameContains]", + "List[HostName]", + "List[ImageNameContains]", + "List[ImageName]", + "List[ImagePrefix]", + "List[ImageSuffix]", + "List[PackageNameVersion]", + "List[PackageName]", + "List[PackagePathVersion]", + "List[PackagePath]", + "List[PackageVersion]", + "List[object]", + } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = RiskAcceptedResponseAllOfContext.model_construct() + error_messages = [] + match = 0 + # validate data type: List[object] + try: + instance.oneof_schema_1_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[ImageName] + try: + instance.oneof_schema_2_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[ImageSuffix] + try: + instance.oneof_schema_3_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[ImagePrefix] + try: + instance.oneof_schema_4_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[ImageNameContains] + try: + instance.oneof_schema_5_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackageName] + try: + instance.oneof_schema_6_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackageNameVersion] + try: + instance.oneof_schema_7_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[HostName] + try: + instance.oneof_schema_8_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[HostNameContains] + try: + instance.oneof_schema_9_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackagePath] + try: + instance.oneof_schema_10_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackageVersion] + try: + instance.oneof_schema_11_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[PackagePathVersion] + try: + instance.oneof_schema_12_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in RiskAcceptedResponseAllOfContext with oneOf schemas: List[HostNameContains], List[HostName], List[ImageNameContains], List[ImageName], List[ImagePrefix], List[ImageSuffix], List[PackageNameVersion], List[PackageName], List[PackagePathVersion], List[PackagePath], List[PackageVersion], List[object]. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in RiskAcceptedResponseAllOfContext with oneOf schemas: List[HostNameContains], List[HostName], List[ImageNameContains], List[ImageName], List[ImagePrefix], List[ImageSuffix], List[PackageNameVersion], List[PackageName], List[PackagePathVersion], List[PackagePath], List[PackageVersion], List[object]. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into List[object] + try: + # validation + instance.oneof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_1_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[ImageName] + try: + # validation + instance.oneof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_2_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[ImageSuffix] + try: + # validation + instance.oneof_schema_3_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_3_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[ImagePrefix] + try: + # validation + instance.oneof_schema_4_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_4_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[ImageNameContains] + try: + # validation + instance.oneof_schema_5_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_5_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackageName] + try: + # validation + instance.oneof_schema_6_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_6_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackageNameVersion] + try: + # validation + instance.oneof_schema_7_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_7_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[HostName] + try: + # validation + instance.oneof_schema_8_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_8_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[HostNameContains] + try: + # validation + instance.oneof_schema_9_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_9_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackagePath] + try: + # validation + instance.oneof_schema_10_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_10_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackageVersion] + try: + # validation + instance.oneof_schema_11_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_11_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[PackagePathVersion] + try: + # validation + instance.oneof_schema_12_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_12_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into RiskAcceptedResponseAllOfContext with oneOf schemas: List[HostNameContains], List[HostName], List[ImageNameContains], List[ImageName], List[ImagePrefix], List[ImageSuffix], List[PackageNameVersion], List[PackageName], List[PackagePathVersion], List[PackagePath], List[PackageVersion], List[object]. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into RiskAcceptedResponseAllOfContext with oneOf schemas: List[HostNameContains], List[HostName], List[ImageNameContains], List[ImageName], List[ImagePrefix], List[ImageSuffix], List[PackageNameVersion], List[PackageName], List[PackagePathVersion], List[PackagePath], List[PackageVersion], List[object]. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[ + Union[ + Dict[str, Any], + List[HostNameContains], + List[HostName], + List[ImageNameContains], + List[ImageName], + List[ImagePrefix], + List[ImageSuffix], + List[PackageNameVersion], + List[PackageName], + List[PackagePathVersion], + List[PackagePath], + List[PackageVersion], + List[object], + ] + ]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/role_request_v1.py b/sysdig_client/models/role_request_v1.py new file mode 100644 index 00000000..463c85d5 --- /dev/null +++ b/sysdig_client/models/role_request_v1.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class RoleRequestV1(BaseModel): + """ + Create or update role request + """ # noqa: E501 + + description: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Describes the role" + ) + monitor_permissions: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]] = ( + Field( + default=None, + description="Set of Monitor permissions assigned to the role. Check GET /platform/v1/permissions to obtain the list of available values. ", + alias="monitorPermissions", + ) + ) + secure_permissions: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]] = ( + Field( + default=None, + description="Set of Secure permissions assigned to the role. Check GET /platform/v1/permissions to obtain the list of available values. ", + alias="securePermissions", + ) + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The display name of the role") + __properties: ClassVar[List[str]] = ["description", "monitorPermissions", "securePermissions", "name"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RoleRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RoleRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "description": obj.get("description"), + "monitorPermissions": obj.get("monitorPermissions"), + "securePermissions": obj.get("securePermissions"), + "name": obj.get("name"), + } + ) + return _obj diff --git a/sysdig_client/models/role_response_v1.py b/sysdig_client/models/role_response_v1.py new file mode 100644 index 00000000..2359f783 --- /dev/null +++ b/sysdig_client/models/role_response_v1.py @@ -0,0 +1,112 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class RoleResponseV1(BaseModel): + """ + Create role response + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + description: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Describes the role" + ) + monitor_permissions: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]] = ( + Field( + default=None, + description="Set of Monitor permissions assigned to the role. Check GET /platform/v1/permissions to obtain the list of available values. ", + alias="monitorPermissions", + ) + ) + secure_permissions: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(max_length=100)]] = ( + Field( + default=None, + description="Set of Secure permissions assigned to the role. Check GET /platform/v1/permissions to obtain the list of available values. ", + alias="securePermissions", + ) + ) + name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The display name of the role" + ) + __properties: ClassVar[List[str]] = ["id", "description", "monitorPermissions", "securePermissions", "name"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RoleResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RoleResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "description": obj.get("description"), + "monitorPermissions": obj.get("monitorPermissions"), + "securePermissions": obj.get("securePermissions"), + "name": obj.get("name"), + } + ) + return _obj diff --git a/sysdig_client/models/rule.py b/sysdig_client/models/rule.py new file mode 100644 index 00000000..476ea93f --- /dev/null +++ b/sysdig_client/models/rule.py @@ -0,0 +1,158 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.predicate import Predicate +from sysdig_client.models.rule_failures_inner import RuleFailuresInner +from typing import Set +from typing_extensions import Self + + +class Rule(BaseModel): + """ + Rule + """ # noqa: E501 + + rule_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="rule's id", alias="ruleId" + ) + rule_type: Annotated[str, Field(strict=True, max_length=255)] = Field(description="rule type", alias="ruleType") + evaluation_result: Optional[StrictStr] = Field( + default=None, description="result of rule evaluation", alias="evaluationResult" + ) + predicates: Optional[Annotated[List[Predicate], Field(min_length=0, max_length=2147483647)]] = Field( + default=None, description="list of rule's predicates" + ) + failure_type: StrictStr = Field(description="rule failure type", alias="failureType") + description: Annotated[str, Field(strict=True, max_length=255)] = Field(description="rule description") + failures: Optional[Annotated[List[RuleFailuresInner], Field(min_length=0, max_length=2147483647)]] = Field( + default=None, description="list of rule failures" + ) + __properties: ClassVar[List[str]] = [ + "ruleId", + "ruleType", + "evaluationResult", + "predicates", + "failureType", + "description", + "failures", + ] + + @field_validator("evaluation_result") + def evaluation_result_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["passed", "failed", "notApplicable", "accepted"]): + raise ValueError("must be one of enum values ('passed', 'failed', 'notApplicable', 'accepted')") + return value + + @field_validator("failure_type") + def failure_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["pkgVulnFailure", "imageConfigFailure"]): + raise ValueError("must be one of enum values ('pkgVulnFailure', 'imageConfigFailure')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Rule from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in predicates (list) + _items = [] + if self.predicates: + for _item_predicates in self.predicates: + if _item_predicates: + _items.append(_item_predicates.to_dict()) + _dict["predicates"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in failures (list) + _items = [] + if self.failures: + for _item_failures in self.failures: + if _item_failures: + _items.append(_item_failures.to_dict()) + _dict["failures"] = _items + # set to None if predicates (nullable) is None + # and model_fields_set contains the field + if self.predicates is None and "predicates" in self.model_fields_set: + _dict["predicates"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Rule from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "ruleId": obj.get("ruleId"), + "ruleType": obj.get("ruleType"), + "evaluationResult": obj.get("evaluationResult"), + "predicates": [Predicate.from_dict(_item) for _item in obj["predicates"]] + if obj.get("predicates") is not None + else None, + "failureType": obj.get("failureType"), + "description": obj.get("description"), + "failures": [RuleFailuresInner.from_dict(_item) for _item in obj["failures"]] + if obj.get("failures") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/rule_failures_inner.py b/sysdig_client/models/rule_failures_inner.py new file mode 100644 index 00000000..92769743 --- /dev/null +++ b/sysdig_client/models/rule_failures_inner.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Optional +from sysdig_client.models.image_config_failure import ImageConfigFailure +from sysdig_client.models.pkg_vuln_failure import PkgVulnFailure +from typing import Union, Any, List, Set, TYPE_CHECKING, Dict +from typing_extensions import Literal, Self + +RULEFAILURESINNER_ANY_OF_SCHEMAS = ["ImageConfigFailure", "PkgVulnFailure"] + + +class RuleFailuresInner(BaseModel): + """ + RuleFailuresInner + """ + + # data type: ImageConfigFailure + anyof_schema_1_validator: Optional[ImageConfigFailure] = None + # data type: PkgVulnFailure + anyof_schema_2_validator: Optional[PkgVulnFailure] = None + if TYPE_CHECKING: + actual_instance: Optional[Union[ImageConfigFailure, PkgVulnFailure]] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = {"ImageConfigFailure", "PkgVulnFailure"} + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_anyof(cls, v): + instance = RuleFailuresInner.model_construct() + error_messages = [] + # validate data type: ImageConfigFailure + if not isinstance(v, ImageConfigFailure): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageConfigFailure`") + else: + return v + + # validate data type: PkgVulnFailure + if not isinstance(v, PkgVulnFailure): + error_messages.append(f"Error! Input type `{type(v)}` is not `PkgVulnFailure`") + else: + return v + + if error_messages: + # no match + raise ValueError( + "No match found when setting the actual_instance in RuleFailuresInner with anyOf schemas: ImageConfigFailure, PkgVulnFailure. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # anyof_schema_1_validator: Optional[ImageConfigFailure] = None + try: + instance.actual_instance = ImageConfigFailure.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # anyof_schema_2_validator: Optional[PkgVulnFailure] = None + try: + instance.actual_instance = PkgVulnFailure.from_json(json_str) + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError( + "No match found when deserializing the JSON string into RuleFailuresInner with anyOf schemas: ImageConfigFailure, PkgVulnFailure. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], ImageConfigFailure, PkgVulnFailure]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/rules_response_v1.py b/sysdig_client/models/rules_response_v1.py new file mode 100644 index 00000000..f64a4347 --- /dev/null +++ b/sysdig_client/models/rules_response_v1.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.rules_response_v1_data import RulesResponseV1Data +from typing import Set +from typing_extensions import Self + + +class RulesResponseV1(BaseModel): + """ + RulesResponseV1 + """ # noqa: E501 + + status: Optional[StrictStr] = Field(default=None, description="Request status.") + data: Optional[RulesResponseV1Data] = None + warnings: Optional[List[StrictStr]] = Field(default=None, description="A set of warning messages attached to the response.") + infos: Optional[List[StrictStr]] = Field(default=None, description="A set of information messages attached to the response.") + __properties: ClassVar[List[str]] = ["status", "data", "warnings", "infos"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["success", "error"]): + raise ValueError("must be one of enum values ('success', 'error')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RulesResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of data + if self.data: + _dict["data"] = self.data.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RulesResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "status": obj.get("status"), + "data": RulesResponseV1Data.from_dict(obj["data"]) if obj.get("data") is not None else None, + "warnings": obj.get("warnings"), + "infos": obj.get("infos"), + } + ) + return _obj diff --git a/sysdig_client/models/rules_response_v1_data.py b/sysdig_client/models/rules_response_v1_data.py new file mode 100644 index 00000000..bfb82a02 --- /dev/null +++ b/sysdig_client/models/rules_response_v1_data.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.rules_response_v1_data_groups_inner import RulesResponseV1DataGroupsInner +from typing import Set +from typing_extensions import Self + + +class RulesResponseV1Data(BaseModel): + """ + Response payload containing rule groups. + """ # noqa: E501 + + groups: Optional[List[RulesResponseV1DataGroupsInner]] = Field(default=None, description="List of rule groups.") + __properties: ClassVar[List[str]] = ["groups"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RulesResponseV1Data from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in groups (list) + _items = [] + if self.groups: + for _item_groups in self.groups: + if _item_groups: + _items.append(_item_groups.to_dict()) + _dict["groups"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RulesResponseV1Data from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "groups": [RulesResponseV1DataGroupsInner.from_dict(_item) for _item in obj["groups"]] + if obj.get("groups") is not None + else None + } + ) + return _obj diff --git a/sysdig_client/models/rules_response_v1_data_groups_inner.py b/sysdig_client/models/rules_response_v1_data_groups_inner.py new file mode 100644 index 00000000..b05fada0 --- /dev/null +++ b/sysdig_client/models/rules_response_v1_data_groups_inner.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner import RulesResponseV1DataGroupsInnerRulesInner +from typing import Optional, Set +from typing_extensions import Self + + +class RulesResponseV1DataGroupsInner(BaseModel): + """ + RulesResponseV1DataGroupsInner + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Name of the rule group.") + interval: Annotated[str, Field(strict=True, max_length=30)] = Field(description="Evaluation interval of the rule group.") + rules: List[RulesResponseV1DataGroupsInnerRulesInner] = Field(description="List of rules in the group.") + __properties: ClassVar[List[str]] = ["name", "interval", "rules"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RulesResponseV1DataGroupsInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in rules (list) + _items = [] + if self.rules: + for _item_rules in self.rules: + if _item_rules: + _items.append(_item_rules.to_dict()) + _dict["rules"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RulesResponseV1DataGroupsInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "interval": obj.get("interval"), + "rules": [RulesResponseV1DataGroupsInnerRulesInner.from_dict(_item) for _item in obj["rules"]] + if obj.get("rules") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/rules_response_v1_data_groups_inner_rules_inner.py b/sysdig_client/models/rules_response_v1_data_groups_inner_rules_inner.py new file mode 100644 index 00000000..2b77ba15 --- /dev/null +++ b/sysdig_client/models/rules_response_v1_data_groups_inner_rules_inner.py @@ -0,0 +1,127 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner import ( + RulesResponseV1DataGroupsInnerRulesInnerAlertsInner, +) +from typing import Set +from typing_extensions import Self + + +class RulesResponseV1DataGroupsInnerRulesInner(BaseModel): + """ + RulesResponseV1DataGroupsInnerRulesInner + """ # noqa: E501 + + type: StrictStr = Field(description="Type of rule (alerting or recording).") + name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Name of the rule.") + query: Annotated[str, Field(strict=True, max_length=5000)] = Field(description="PromQL query associated with the rule.") + duration: Optional[Annotated[str, Field(strict=True, max_length=30)]] = Field( + default=None, description="Duration for which the rule must be active before triggering." + ) + labels: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=255)]]] = Field( + default=None, description="Labels assigned to the rule." + ) + annotations: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=1024)]]] = Field( + default=None, description="Annotations providing additional information about the rule." + ) + alerts: Optional[List[RulesResponseV1DataGroupsInnerRulesInnerAlertsInner]] = Field( + default=None, description="List of active alerts for this rule (only for alerting rules)." + ) + __properties: ClassVar[List[str]] = ["type", "name", "query", "duration", "labels", "annotations", "alerts"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["alerting", "recording"]): + raise ValueError("must be one of enum values ('alerting', 'recording')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RulesResponseV1DataGroupsInnerRulesInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in alerts (list) + _items = [] + if self.alerts: + for _item_alerts in self.alerts: + if _item_alerts: + _items.append(_item_alerts.to_dict()) + _dict["alerts"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RulesResponseV1DataGroupsInnerRulesInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "name": obj.get("name"), + "query": obj.get("query"), + "duration": obj.get("duration"), + "labels": obj.get("labels"), + "annotations": obj.get("annotations"), + "alerts": [RulesResponseV1DataGroupsInnerRulesInnerAlertsInner.from_dict(_item) for _item in obj["alerts"]] + if obj.get("alerts") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/rules_response_v1_data_groups_inner_rules_inner_alerts_inner.py b/sysdig_client/models/rules_response_v1_data_groups_inner_rules_inner_alerts_inner.py new file mode 100644 index 00000000..14abb8ff --- /dev/null +++ b/sysdig_client/models/rules_response_v1_data_groups_inner_rules_inner_alerts_inner.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class RulesResponseV1DataGroupsInnerRulesInnerAlertsInner(BaseModel): + """ + RulesResponseV1DataGroupsInnerRulesInnerAlertsInner + """ # noqa: E501 + + state: StrictStr = Field(description="Current state of the alert.") + active_at: datetime = Field(description="Timestamp when the alert became active.", alias="activeAt") + value: Annotated[str, Field(strict=True, max_length=20)] = Field(description="The numerical value that triggered the alert.") + __properties: ClassVar[List[str]] = ["state", "activeAt", "value"] + + @field_validator("state") + def state_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["pending", "firing"]): + raise ValueError("must be one of enum values ('pending', 'firing')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RulesResponseV1DataGroupsInnerRulesInnerAlertsInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RulesResponseV1DataGroupsInnerRulesInnerAlertsInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"state": obj.get("state"), "activeAt": obj.get("activeAt"), "value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/runtime_result.py b/sysdig_client/models/runtime_result.py new file mode 100644 index 00000000..fbd15a86 --- /dev/null +++ b/sysdig_client/models/runtime_result.py @@ -0,0 +1,143 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.policy_evaluation_result import PolicyEvaluationResult +from sysdig_client.models.vuln_total_by_severity import VulnTotalBySeverity +from typing import Set +from typing_extensions import Self + + +class RuntimeResult(BaseModel): + """ + Runtime result + """ # noqa: E501 + + scope: Optional[Dict[str, Any]] = Field(default=None, description="Scope labels that define the asset") + result_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Identifier of the scan result", alias="resultId" + ) + resource_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, + description="Identifier of the scanned resource: it will be the image ID for container images or the host ID for hosts.", + alias="resourceId", + ) + sbom_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Identifier of the sbom", alias="sbomId" + ) + main_asset_name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Name of the scanned asset", alias="mainAssetName" + ) + running_vuln_total_by_severity: Optional[VulnTotalBySeverity] = Field(default=None, alias="runningVulnTotalBySeverity") + vuln_total_by_severity: Optional[VulnTotalBySeverity] = Field(default=None, alias="vulnTotalBySeverity") + policy_evaluation_result: Optional[PolicyEvaluationResult] = Field(default=None, alias="policyEvaluationResult") + is_risk_spotlight_enabled: Optional[StrictBool] = Field( + default=None, description="Whether risk spotlight is enabled or not", alias="isRiskSpotlightEnabled" + ) + __properties: ClassVar[List[str]] = [ + "scope", + "resultId", + "resourceId", + "sbomId", + "mainAssetName", + "runningVulnTotalBySeverity", + "vulnTotalBySeverity", + "policyEvaluationResult", + "isRiskSpotlightEnabled", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RuntimeResult from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of running_vuln_total_by_severity + if self.running_vuln_total_by_severity: + _dict["runningVulnTotalBySeverity"] = self.running_vuln_total_by_severity.to_dict() + # override the default output from pydantic by calling `to_dict()` of vuln_total_by_severity + if self.vuln_total_by_severity: + _dict["vulnTotalBySeverity"] = self.vuln_total_by_severity.to_dict() + # set to None if sbom_id (nullable) is None + # and model_fields_set contains the field + if self.sbom_id is None and "sbom_id" in self.model_fields_set: + _dict["sbomId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RuntimeResult from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "scope": obj.get("scope"), + "resultId": obj.get("resultId"), + "resourceId": obj.get("resourceId"), + "sbomId": obj.get("sbomId"), + "mainAssetName": obj.get("mainAssetName"), + "runningVulnTotalBySeverity": VulnTotalBySeverity.from_dict(obj["runningVulnTotalBySeverity"]) + if obj.get("runningVulnTotalBySeverity") is not None + else None, + "vulnTotalBySeverity": VulnTotalBySeverity.from_dict(obj["vulnTotalBySeverity"]) + if obj.get("vulnTotalBySeverity") is not None + else None, + "policyEvaluationResult": obj.get("policyEvaluationResult"), + "isRiskSpotlightEnabled": obj.get("isRiskSpotlightEnabled"), + } + ) + return _obj diff --git a/sysdig_client/models/runtime_results_response.py b/sysdig_client/models/runtime_results_response.py new file mode 100644 index 00000000..c0c278aa --- /dev/null +++ b/sysdig_client/models/runtime_results_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.runtime_result import RuntimeResult +from sysdig_client.models.vulnerability_management_page import VulnerabilityManagementPage +from typing import Set +from typing_extensions import Self + + +class RuntimeResultsResponse(BaseModel): + """ + runtime results response + """ # noqa: E501 + + page: Optional[VulnerabilityManagementPage] = None + data: Optional[Annotated[List[RuntimeResult], Field(min_length=0, max_length=1000)]] = None + __properties: ClassVar[List[str]] = ["page", "data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RuntimeResultsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of page + if self.page: + _dict["page"] = self.page.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RuntimeResultsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": VulnerabilityManagementPage.from_dict(obj["page"]) if obj.get("page") is not None else None, + "data": [RuntimeResult.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/saml_base_v1.py b/sysdig_client/models/saml_base_v1.py new file mode 100644 index 00000000..6a76eb7f --- /dev/null +++ b/sysdig_client/models/saml_base_v1.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SamlBaseV1(BaseModel): + """ + SamlBaseV1 + """ # noqa: E501 + + metadata_url: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, + description="The metadata URL of the SAML provider. **Mutually exclusive with metadata*", + alias="metadataUrl", + ) + metadata_xml: Optional[Annotated[str, Field(strict=True, max_length=65356)]] = Field( + default=None, + description="The metadata XML of the SAML provider. **Mutually exclusive with metadataUrl*", + alias="metadataXml", + ) + email_parameter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The email parameter of the SAML provider.", alias="emailParameter" + ) + is_signature_validation_enabled: Optional[StrictBool] = Field( + default=True, + description="Flag that indicates if the signature validation is enabled.", + alias="isSignatureValidationEnabled", + ) + is_signed_assertion_enabled: Optional[StrictBool] = Field( + default=True, description="Flag that indicates if the signed assertion is enabled.", alias="isSignedAssertionEnabled" + ) + is_destination_verification_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag that indicates if the destination verification is enabled.", + alias="isDestinationVerificationEnabled", + ) + is_encryption_support_enabled: Optional[StrictBool] = Field( + default=None, description="Flag that indicates if the encryption support is enabled.", alias="isEncryptionSupportEnabled" + ) + __properties: ClassVar[List[str]] = [ + "metadataUrl", + "metadataXml", + "emailParameter", + "isSignatureValidationEnabled", + "isSignedAssertionEnabled", + "isDestinationVerificationEnabled", + "isEncryptionSupportEnabled", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SamlBaseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SamlBaseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "metadataUrl": obj.get("metadataUrl"), + "metadataXml": obj.get("metadataXml"), + "emailParameter": obj.get("emailParameter"), + "isSignatureValidationEnabled": obj.get("isSignatureValidationEnabled") + if obj.get("isSignatureValidationEnabled") is not None + else True, + "isSignedAssertionEnabled": obj.get("isSignedAssertionEnabled") + if obj.get("isSignedAssertionEnabled") is not None + else True, + "isDestinationVerificationEnabled": obj.get("isDestinationVerificationEnabled"), + "isEncryptionSupportEnabled": obj.get("isEncryptionSupportEnabled"), + } + ) + return _obj diff --git a/sysdig_client/models/saml_create_request_v1.py b/sysdig_client/models/saml_create_request_v1.py new file mode 100644 index 00000000..afb57e00 --- /dev/null +++ b/sysdig_client/models/saml_create_request_v1.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.sso_settings_create_request_base_v1 import SsoSettingsCreateRequestBaseV1 +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from typing import Set +from typing_extensions import Self + + +class SamlCreateRequestV1(SsoSettingsCreateRequestBaseV1): + """ + SamlCreateRequestV1 + """ # noqa: E501 + + metadata_url: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, + description="The metadata URL of the SAML provider. **Mutually exclusive with metadata*", + alias="metadataUrl", + ) + metadata_xml: Optional[Annotated[str, Field(strict=True, max_length=65356)]] = Field( + default=None, + description="The metadata XML of the SAML provider. **Mutually exclusive with metadataUrl*", + alias="metadataXml", + ) + email_parameter: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The email parameter of the SAML provider.", alias="emailParameter" + ) + is_signature_validation_enabled: Optional[StrictBool] = Field( + default=True, + description="Flag that indicates if the signature validation is enabled.", + alias="isSignatureValidationEnabled", + ) + is_signed_assertion_enabled: Optional[StrictBool] = Field( + default=True, description="Flag that indicates if the signed assertion is enabled.", alias="isSignedAssertionEnabled" + ) + is_destination_verification_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag that indicates if the destination verification is enabled.", + alias="isDestinationVerificationEnabled", + ) + is_encryption_support_enabled: Optional[StrictBool] = Field( + default=None, description="Flag that indicates if the encryption support is enabled.", alias="isEncryptionSupportEnabled" + ) + __properties: ClassVar[List[str]] = [ + "type", + "metadataUrl", + "metadataXml", + "emailParameter", + "isSignatureValidationEnabled", + "isSignedAssertionEnabled", + "isDestinationVerificationEnabled", + "isEncryptionSupportEnabled", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SamlCreateRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SamlCreateRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "metadataUrl": obj.get("metadataUrl"), + "metadataXml": obj.get("metadataXml"), + "emailParameter": obj.get("emailParameter"), + "isSignatureValidationEnabled": obj.get("isSignatureValidationEnabled") + if obj.get("isSignatureValidationEnabled") is not None + else True, + "isSignedAssertionEnabled": obj.get("isSignedAssertionEnabled") + if obj.get("isSignedAssertionEnabled") is not None + else True, + "isDestinationVerificationEnabled": obj.get("isDestinationVerificationEnabled"), + "isEncryptionSupportEnabled": obj.get("isEncryptionSupportEnabled"), + } + ) + return _obj diff --git a/sysdig_client/models/saml_response_v1.py b/sysdig_client/models/saml_response_v1.py new file mode 100644 index 00000000..690d456f --- /dev/null +++ b/sysdig_client/models/saml_response_v1.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.sso_settings_response_base_v1 import SsoSettingsResponseBaseV1 +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from typing import Set +from typing_extensions import Self + + +class SamlResponseV1(SsoSettingsResponseBaseV1): + """ + SamlResponseV1 + """ # noqa: E501 + + metadata_url: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, + description="The metadata URL of the SAML provider. **Mutually exclusive with metadata*", + alias="metadataUrl", + ) + metadata_xml: Optional[Annotated[str, Field(strict=True, max_length=65356)]] = Field( + default=None, + description="The metadata XML of the SAML provider. **Mutually exclusive with metadataUrl*", + alias="metadataXml", + ) + email_parameter: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The email parameter of the SAML provider.", alias="emailParameter" + ) + is_signature_validation_enabled: Optional[StrictBool] = Field( + default=True, + description="Flag that indicates if the signature validation is enabled.", + alias="isSignatureValidationEnabled", + ) + is_signed_assertion_enabled: Optional[StrictBool] = Field( + default=True, description="Flag that indicates if the signed assertion is enabled.", alias="isSignedAssertionEnabled" + ) + is_destination_verification_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag that indicates if the destination verification is enabled.", + alias="isDestinationVerificationEnabled", + ) + is_encryption_support_enabled: Optional[StrictBool] = Field( + default=None, description="Flag that indicates if the encryption support is enabled.", alias="isEncryptionSupportEnabled" + ) + __properties: ClassVar[List[str]] = [ + "type", + "metadataUrl", + "metadataXml", + "emailParameter", + "isSignatureValidationEnabled", + "isSignedAssertionEnabled", + "isDestinationVerificationEnabled", + "isEncryptionSupportEnabled", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SamlResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SamlResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "metadataUrl": obj.get("metadataUrl"), + "metadataXml": obj.get("metadataXml"), + "emailParameter": obj.get("emailParameter"), + "isSignatureValidationEnabled": obj.get("isSignatureValidationEnabled") + if obj.get("isSignatureValidationEnabled") is not None + else True, + "isSignedAssertionEnabled": obj.get("isSignedAssertionEnabled") + if obj.get("isSignedAssertionEnabled") is not None + else True, + "isDestinationVerificationEnabled": obj.get("isDestinationVerificationEnabled"), + "isEncryptionSupportEnabled": obj.get("isEncryptionSupportEnabled"), + } + ) + return _obj diff --git a/sysdig_client/models/saml_update_request_v1.py b/sysdig_client/models/saml_update_request_v1.py new file mode 100644 index 00000000..c6d6de3f --- /dev/null +++ b/sysdig_client/models/saml_update_request_v1.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.sso_settings_update_request_base_v1 import SsoSettingsUpdateRequestBaseV1 +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from typing import Set +from typing_extensions import Self + + +class SamlUpdateRequestV1(SsoSettingsUpdateRequestBaseV1): + """ + SamlUpdateRequestV1 + """ # noqa: E501 + + metadata_url: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, + description="The metadata URL of the SAML provider. **Mutually exclusive with metadata*", + alias="metadataUrl", + ) + metadata_xml: Optional[Annotated[str, Field(strict=True, max_length=65356)]] = Field( + default=None, + description="The metadata XML of the SAML provider. **Mutually exclusive with metadataUrl*", + alias="metadataXml", + ) + email_parameter: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="The email parameter of the SAML provider.", alias="emailParameter" + ) + is_signature_validation_enabled: StrictBool = Field( + description="Flag that indicates if the signature validation is enabled.", alias="isSignatureValidationEnabled" + ) + is_signed_assertion_enabled: StrictBool = Field( + description="Flag that indicates if the signed assertion is enabled.", alias="isSignedAssertionEnabled" + ) + is_destination_verification_enabled: StrictBool = Field( + description="Flag that indicates if the destination verification is enabled.", alias="isDestinationVerificationEnabled" + ) + is_encryption_support_enabled: StrictBool = Field( + description="Flag that indicates if the encryption support is enabled.", alias="isEncryptionSupportEnabled" + ) + __properties: ClassVar[List[str]] = [ + "type", + "metadataUrl", + "metadataXml", + "emailParameter", + "isSignatureValidationEnabled", + "isSignedAssertionEnabled", + "isDestinationVerificationEnabled", + "isEncryptionSupportEnabled", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SamlUpdateRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SamlUpdateRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "metadataUrl": obj.get("metadataUrl"), + "metadataXml": obj.get("metadataXml"), + "emailParameter": obj.get("emailParameter"), + "isSignatureValidationEnabled": obj.get("isSignatureValidationEnabled") + if obj.get("isSignatureValidationEnabled") is not None + else True, + "isSignedAssertionEnabled": obj.get("isSignedAssertionEnabled") + if obj.get("isSignedAssertionEnabled") is not None + else True, + "isDestinationVerificationEnabled": obj.get("isDestinationVerificationEnabled"), + "isEncryptionSupportEnabled": obj.get("isEncryptionSupportEnabled"), + } + ) + return _obj diff --git a/sysdig_client/models/save_capture_storage_configuration_request_v1.py b/sysdig_client/models/save_capture_storage_configuration_request_v1.py new file mode 100644 index 00000000..93bf7d7c --- /dev/null +++ b/sysdig_client/models/save_capture_storage_configuration_request_v1.py @@ -0,0 +1,116 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.bucket_configuration_v1 import BucketConfigurationV1 +from typing import Set +from typing_extensions import Self + + +class SaveCaptureStorageConfigurationRequestV1(BaseModel): + """ + SaveCaptureStorageConfigurationRequestV1 + """ # noqa: E501 + + is_enabled: StrictBool = Field(description="Specifies if capture storage is enabled.", alias="isEnabled") + is_encryption_with_provided_key_enabled: Optional[StrictBool] = Field( + default=False, + description="Specifies if server-side encryption with provided encryption key (SSE-C) is enabled.", + alias="isEncryptionWithProvidedKeyEnabled", + ) + encryption_key: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, + description="AES-256 encryption key to be used for server-side encryption (base64 encoded).", + alias="encryptionKey", + ) + buckets: Optional[Annotated[List[BucketConfigurationV1], Field(max_length=1)]] = Field( + default=None, description="The list of buckets where the captures are stored. Currently only one bucket is supported. " + ) + __properties: ClassVar[List[str]] = ["isEnabled", "isEncryptionWithProvidedKeyEnabled", "encryptionKey", "buckets"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SaveCaptureStorageConfigurationRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in buckets (list) + _items = [] + if self.buckets: + for _item_buckets in self.buckets: + if _item_buckets: + _items.append(_item_buckets.to_dict()) + _dict["buckets"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SaveCaptureStorageConfigurationRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "isEnabled": obj.get("isEnabled"), + "isEncryptionWithProvidedKeyEnabled": obj.get("isEncryptionWithProvidedKeyEnabled") + if obj.get("isEncryptionWithProvidedKeyEnabled") is not None + else False, + "encryptionKey": obj.get("encryptionKey"), + "buckets": [BucketConfigurationV1.from_dict(_item) for _item in obj["buckets"]] + if obj.get("buckets") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/save_team_user_request_v1.py b/sysdig_client/models/save_team_user_request_v1.py new file mode 100644 index 00000000..7c5e5e1a --- /dev/null +++ b/sysdig_client/models/save_team_user_request_v1.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from typing import Set +from typing_extensions import Self + + +class SaveTeamUserRequestV1(BaseModel): + """ + SaveTeamUserRequestV1 + """ # noqa: E501 + + standard_team_role: Optional[TeamRoleV1] = Field( + default=None, + description="The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**.\\ \\ *ROLE_TEAM_SERVICE_MANAGER is only supported in Secure.* ", + alias="standardTeamRole", + ) + custom_team_role_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, + description="The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. ", + alias="customTeamRoleId", + ) + __properties: ClassVar[List[str]] = ["standardTeamRole", "customTeamRoleId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SaveTeamUserRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SaveTeamUserRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"standardTeamRole": obj.get("standardTeamRole"), "customTeamRoleId": obj.get("customTeamRoleId")} + ) + return _obj diff --git a/sysdig_client/models/sbom_component.py b/sysdig_client/models/sbom_component.py new file mode 100644 index 00000000..2fd91d89 --- /dev/null +++ b/sysdig_client/models/sbom_component.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SbomComponent(BaseModel): + """ + SbomComponent + """ # noqa: E501 + + type: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Specifies the type of component. For software components, classify as application if no more specific appropriate classification is available or cannot be determined for the component. Types include: * __application__ = A software application. Refer to [https://en.wikipedia.org/wiki/Application_software](https://en.wikipedia.org/wiki/Application_software) for information about applications. * __framework__ = A software framework. Refer to [https://en.wikipedia.org/wiki/Software_framework](https://en.wikipedia.org/wiki/Software_framework) for information on how frameworks vary slightly from libraries. * __library__ = A software library. Refer to [https://en.wikipedia.org/wiki/Library_(computing)](https://en.wikipedia.org/wiki/Library_(computing)) for information about libraries. All third-party and open source reusable components will likely be a library. If the library also has key features of a framework, then it should be classified as a framework. If not, or is unknown, then specifying library is RECOMMENDED. * __container__ = A packaging and/or runtime format, not specific to any particular technology, which isolates software inside the container from software outside of a container through virtualization technology. Refer to [https://en.wikipedia.org/wiki/OS-level_virtualization](https://en.wikipedia.org/wiki/OS-level_virtualization) * __platform__ = A runtime environment which interprets or executes software. This may include runtimes such as those that execute bytecode or low-code/no-code application platforms. * __operating-system__ = A software operating system without regard to deployment model (i.e. installed on physical hardware, virtual machine, image, etc) Refer to [https://en.wikipedia.org/wiki/Operating_system](https://en.wikipedia.org/wiki/Operating_system) * __device__ = A hardware device such as a processor, or chip-set. A hardware device containing firmware SHOULD include a component for the physical hardware itself, and another component of type 'firmware' or 'operating-system' (whichever is relevant), describing information about the software running on the device. See also the list of [known device properties](https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/device.md). * __device-driver__ = A special type of software that operates or controls a particular type of device. Refer to [https://en.wikipedia.org/wiki/Device_driver](https://en.wikipedia.org/wiki/Device_driver) * __firmware__ = A special type of software that provides low-level control over a devices hardware. Refer to [https://en.wikipedia.org/wiki/Firmware](https://en.wikipedia.org/wiki/Firmware) * __file__ = A computer file. Refer to [https://en.wikipedia.org/wiki/Computer_file](https://en.wikipedia.org/wiki/Computer_file) for information about files. * __machine-learning-model__ = A model based on training data that can make predictions or decisions without being explicitly programmed to do so. * __data__ = A collection of discrete values that convey information." + ) + name: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="The name of the component. This will often be a shortened, single name of the component. Examples: commons-lang3 and jquery" + ) + bom_ref: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="An optional identifier which can be used to reference the component elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.", + alias="bom-ref", + ) + version: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="The component version. The version should ideally comply with semantic versioning but is not enforced.", + ) + group: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="The grouping name or identifier. This will often be a shortened, single name of the company or project that produced the component, or the source package or domain name. Whitespace and special characters should be avoided. Examples include: apache, org.apache.commons, and apache.org.", + ) + purl: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="Specifies the package-url (purl). The purl, if specified, MUST be valid and conform to the specification defined at: [https://github.com/package-url/purl-spec](https://github.com/package-url/purl-spec)", + ) + __properties: ClassVar[List[str]] = ["type", "name", "bom-ref", "version", "group", "purl"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SbomComponent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SbomComponent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "name": obj.get("name"), + "bom-ref": obj.get("bom-ref"), + "version": obj.get("version"), + "group": obj.get("group"), + "purl": obj.get("purl"), + } + ) + return _obj diff --git a/sysdig_client/models/sbom_result_response.py b/sysdig_client/models/sbom_result_response.py new file mode 100644 index 00000000..38936963 --- /dev/null +++ b/sysdig_client/models/sbom_result_response.py @@ -0,0 +1,171 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.bom_metadata import BOMMetadata +from sysdig_client.models.compositions_inner import CompositionsInner +from sysdig_client.models.dependency import Dependency +from sysdig_client.models.sbom_component import SbomComponent +from typing import Set +from typing_extensions import Self + + +class SbomResultResponse(BaseModel): + """ + SBOM of the requested asset + """ # noqa: E501 + + bom_format: StrictStr = Field( + description='Specifies the format of the BOM. This helps to identify the file as CycloneDX since BOMs do not have a filename convention nor does JSON schema support namespaces. This value MUST be "CycloneDX".', + alias="bomFormat", + ) + spec_version: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="The version of the CycloneDX specification a BOM conforms to (starting at version 1.2).", alias="specVersion" + ) + serial_number: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, + description="Every BOM generated SHOULD have a unique serial number, even if the contents of the BOM have not changed over time. If specified, the serial number MUST conform to RFC-4122. Use of serial numbers are RECOMMENDED.", + alias="serialNumber", + ) + version: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=1)]] = Field( + default=1, + description="Whenever an existing BOM is modified, either manually or through automated processes, the version of the BOM SHOULD be incremented by 1. When a system is presented with multiple BOMs with identical serial numbers, the system SHOULD use the most recent version of the BOM. The default version is '1'.", + ) + metadata: Optional[BOMMetadata] = None + components: Optional[Annotated[List[SbomComponent], Field(max_length=1000000)]] = Field( + default=None, description="A list of software and hardware components." + ) + dependencies: Optional[Annotated[List[Dependency], Field(max_length=1000000)]] = Field( + default=None, description="Provides the ability to document dependency relationships." + ) + compositions: Optional[Annotated[List[CompositionsInner], Field(max_length=1000000)]] = Field( + default=None, + description="Compositions describe constituent parts (including components, services, and dependency relationships) and their completeness. The completeness of vulnerabilities expressed in a BOM may also be described.", + ) + __properties: ClassVar[List[str]] = [ + "bomFormat", + "specVersion", + "serialNumber", + "version", + "metadata", + "components", + "dependencies", + "compositions", + ] + + @field_validator("bom_format") + def bom_format_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["CycloneDX"]): + raise ValueError("must be one of enum values ('CycloneDX')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SbomResultResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of metadata + if self.metadata: + _dict["metadata"] = self.metadata.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in components (list) + _items = [] + if self.components: + for _item_components in self.components: + if _item_components: + _items.append(_item_components.to_dict()) + _dict["components"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in dependencies (list) + _items = [] + if self.dependencies: + for _item_dependencies in self.dependencies: + if _item_dependencies: + _items.append(_item_dependencies.to_dict()) + _dict["dependencies"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in compositions (list) + _items = [] + if self.compositions: + for _item_compositions in self.compositions: + if _item_compositions: + _items.append(_item_compositions.to_dict()) + _dict["compositions"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SbomResultResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "bomFormat": obj.get("bomFormat"), + "specVersion": obj.get("specVersion"), + "serialNumber": obj.get("serialNumber"), + "version": obj.get("version") if obj.get("version") is not None else 1, + "metadata": BOMMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, + "components": [SbomComponent.from_dict(_item) for _item in obj["components"]] + if obj.get("components") is not None + else None, + "dependencies": [Dependency.from_dict(_item) for _item in obj["dependencies"]] + if obj.get("dependencies") is not None + else None, + "compositions": [CompositionsInner.from_dict(_item) for _item in obj["compositions"]] + if obj.get("compositions") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/scan_result_response.py b/sysdig_client/models/scan_result_response.py new file mode 100644 index 00000000..e810a7e4 --- /dev/null +++ b/sysdig_client/models/scan_result_response.py @@ -0,0 +1,197 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from sysdig_client.models.base_image import BaseImage +from sysdig_client.models.layer import Layer +from sysdig_client.models.package import Package +from sysdig_client.models.policies import Policies +from sysdig_client.models.producer import Producer +from sysdig_client.models.risk_acceptance_definition import RiskAcceptanceDefinition +from sysdig_client.models.scan_result_response_metadata import ScanResultResponseMetadata +from sysdig_client.models.vulnerability import Vulnerability +from typing import Set +from typing_extensions import Self + + +class ScanResultResponse(BaseModel): + """ + ScanResultResponse + """ # noqa: E501 + + asset_type: StrictStr = Field(description="scan result asset type", alias="assetType") + stage: StrictStr = Field(description="scan result stage") + metadata: ScanResultResponseMetadata + packages: Dict[str, Package] + vulnerabilities: Optional[Dict[str, Vulnerability]] = None + layers: Optional[Dict[str, Layer]] = None + base_images: Optional[Dict[str, BaseImage]] = Field(default=None, alias="baseImages") + policies: Optional[Policies] = None + risk_accepts: Optional[Dict[str, RiskAcceptanceDefinition]] = Field(default=None, alias="riskAccepts") + producer: Optional[Producer] = None + __properties: ClassVar[List[str]] = [ + "assetType", + "stage", + "metadata", + "packages", + "vulnerabilities", + "layers", + "baseImages", + "policies", + "riskAccepts", + "producer", + ] + + @field_validator("asset_type") + def asset_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["containerImage", "host"]): + raise ValueError("must be one of enum values ('containerImage', 'host')") + return value + + @field_validator("stage") + def stage_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["pipeline", "runtime", "registry"]): + raise ValueError("must be one of enum values ('pipeline', 'runtime', 'registry')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ScanResultResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of metadata + if self.metadata: + _dict["metadata"] = self.metadata.to_dict() + # override the default output from pydantic by calling `to_dict()` of each value in packages (dict) + _field_dict = {} + if self.packages: + for _key_packages in self.packages: + if self.packages[_key_packages]: + _field_dict[_key_packages] = self.packages[_key_packages].to_dict() + _dict["packages"] = _field_dict + # override the default output from pydantic by calling `to_dict()` of each value in vulnerabilities (dict) + _field_dict = {} + if self.vulnerabilities: + for _key_vulnerabilities in self.vulnerabilities: + if self.vulnerabilities[_key_vulnerabilities]: + _field_dict[_key_vulnerabilities] = self.vulnerabilities[_key_vulnerabilities].to_dict() + _dict["vulnerabilities"] = _field_dict + # override the default output from pydantic by calling `to_dict()` of each value in layers (dict) + _field_dict = {} + if self.layers: + for _key_layers in self.layers: + if self.layers[_key_layers]: + _field_dict[_key_layers] = self.layers[_key_layers].to_dict() + _dict["layers"] = _field_dict + # override the default output from pydantic by calling `to_dict()` of each value in base_images (dict) + _field_dict = {} + if self.base_images: + for _key_base_images in self.base_images: + if self.base_images[_key_base_images]: + _field_dict[_key_base_images] = self.base_images[_key_base_images].to_dict() + _dict["baseImages"] = _field_dict + # override the default output from pydantic by calling `to_dict()` of policies + if self.policies: + _dict["policies"] = self.policies.to_dict() + # override the default output from pydantic by calling `to_dict()` of each value in risk_accepts (dict) + _field_dict = {} + if self.risk_accepts: + for _key_risk_accepts in self.risk_accepts: + if self.risk_accepts[_key_risk_accepts]: + _field_dict[_key_risk_accepts] = self.risk_accepts[_key_risk_accepts].to_dict() + _dict["riskAccepts"] = _field_dict + # override the default output from pydantic by calling `to_dict()` of producer + if self.producer: + _dict["producer"] = self.producer.to_dict() + # set to None if base_images (nullable) is None + # and model_fields_set contains the field + if self.base_images is None and "base_images" in self.model_fields_set: + _dict["baseImages"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ScanResultResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "assetType": obj.get("assetType"), + "stage": obj.get("stage"), + "metadata": ScanResultResponseMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, + "packages": dict((_k, Package.from_dict(_v)) for _k, _v in obj["packages"].items()) + if obj.get("packages") is not None + else None, + "vulnerabilities": dict((_k, Vulnerability.from_dict(_v)) for _k, _v in obj["vulnerabilities"].items()) + if obj.get("vulnerabilities") is not None + else None, + "layers": dict((_k, Layer.from_dict(_v)) for _k, _v in obj["layers"].items()) + if obj.get("layers") is not None + else None, + "baseImages": dict((_k, BaseImage.from_dict(_v)) for _k, _v in obj["baseImages"].items()) + if obj.get("baseImages") is not None + else None, + "policies": Policies.from_dict(obj["policies"]) if obj.get("policies") is not None else None, + "riskAccepts": dict((_k, RiskAcceptanceDefinition.from_dict(_v)) for _k, _v in obj["riskAccepts"].items()) + if obj.get("riskAccepts") is not None + else None, + "producer": Producer.from_dict(obj["producer"]) if obj.get("producer") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/scan_result_response_metadata.py b/sysdig_client/models/scan_result_response_metadata.py new file mode 100644 index 00000000..ea82b012 --- /dev/null +++ b/sysdig_client/models/scan_result_response_metadata.py @@ -0,0 +1,147 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.host_metadata import HostMetadata +from sysdig_client.models.image_metadata import ImageMetadata +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +SCANRESULTRESPONSEMETADATA_ONE_OF_SCHEMAS = ["HostMetadata", "ImageMetadata"] + + +class ScanResultResponseMetadata(BaseModel): + """ + metadata of the scan result + """ + + # data type: ImageMetadata + oneof_schema_1_validator: Optional[ImageMetadata] = None + # data type: HostMetadata + oneof_schema_2_validator: Optional[HostMetadata] = None + actual_instance: Optional[Union[HostMetadata, ImageMetadata]] = None + one_of_schemas: Set[str] = {"HostMetadata", "ImageMetadata"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = ScanResultResponseMetadata.model_construct() + error_messages = [] + match = 0 + # validate data type: ImageMetadata + if not isinstance(v, ImageMetadata): + error_messages.append(f"Error! Input type `{type(v)}` is not `ImageMetadata`") + else: + match += 1 + # validate data type: HostMetadata + if not isinstance(v, HostMetadata): + error_messages.append(f"Error! Input type `{type(v)}` is not `HostMetadata`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in ScanResultResponseMetadata with oneOf schemas: HostMetadata, ImageMetadata. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in ScanResultResponseMetadata with oneOf schemas: HostMetadata, ImageMetadata. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into ImageMetadata + try: + instance.actual_instance = ImageMetadata.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into HostMetadata + try: + instance.actual_instance = HostMetadata.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into ScanResultResponseMetadata with oneOf schemas: HostMetadata, ImageMetadata. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into ScanResultResponseMetadata with oneOf schemas: HostMetadata, ImageMetadata. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], HostMetadata, ImageMetadata]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/schedule_response.py b/sysdig_client/models/schedule_response.py new file mode 100644 index 00000000..7c155a9c --- /dev/null +++ b/sysdig_client/models/schedule_response.py @@ -0,0 +1,214 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel import NotificationChannel +from typing import Set +from typing_extensions import Self + + +class ScheduleResponse(BaseModel): + """ + Schema for a scheduled report + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Unique identifier for the schedule") + user_id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="ID of the user who created the schedule", alias="userId" + ) + team_id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="ID of the team associated with the schedule", alias="teamId" + ) + customer_id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="ID of the customer associated with the schedule", alias="customerId" + ) + name: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field(default=None, description="Name of the schedule") + description: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="Description of the schedule" + ) + report_id: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field(description="ID of the report", alias="reportId") + report_name: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Name of the report", alias="reportName" + ) + is_report_template: StrictBool = Field(description="Indicates if the report is a template", alias="isReportTemplate") + report_format: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Format of the report", alias="reportFormat" + ) + zones: Annotated[List[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], Field(max_length=100)] = Field( + description="List of zone IDs" + ) + policies: Optional[Annotated[List[Annotated[int, Field(le=2147483647, strict=True, ge=0)]], Field(max_length=100)]] = Field( + default=None, description="List of policy IDs" + ) + timezone: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Timezone for the schedule" + ) + schedule: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Cron expression for the schedule") + enabled: StrictBool = Field(description="Indicates if the schedule is enabled") + notification_channels: Optional[Annotated[List[NotificationChannel], Field(max_length=100)]] = Field( + default=None, description="List of notification channels", alias="notificationChannels" + ) + iac_task_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of the IaC task", alias="iacTaskId" + ) + password_enabled: Optional[StrictBool] = Field( + default=None, description="Indicates if password protection is enabled", alias="passwordEnabled" + ) + compression: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Compression format" + ) + created_by: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Email of the user who created the schedule", alias="createdBy" + ) + updated_by: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Email of the user who last updated the schedule", alias="updatedBy" + ) + created_on: datetime = Field(description="Timestamp when the schedule was created", alias="createdOn") + modified_on: Optional[datetime] = Field( + default=None, description="Timestamp when the schedule was last modified", alias="modifiedOn" + ) + last_scheduled_on: Optional[datetime] = Field( + default=None, description="Timestamp when the schedule was last run", alias="lastScheduledOn" + ) + last_started_on: Optional[datetime] = Field( + default=None, description="Timestamp when the schedule was last started", alias="lastStartedOn" + ) + last_completed_on: Optional[datetime] = Field( + default=None, description="Timestamp when the schedule was last completed", alias="lastCompletedOn" + ) + __properties: ClassVar[List[str]] = [ + "id", + "userId", + "teamId", + "customerId", + "name", + "description", + "reportId", + "reportName", + "isReportTemplate", + "reportFormat", + "zones", + "policies", + "timezone", + "schedule", + "enabled", + "notificationChannels", + "iacTaskId", + "passwordEnabled", + "compression", + "createdBy", + "updatedBy", + "createdOn", + "modifiedOn", + "lastScheduledOn", + "lastStartedOn", + "lastCompletedOn", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ScheduleResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in notification_channels (list) + _items = [] + if self.notification_channels: + for _item_notification_channels in self.notification_channels: + if _item_notification_channels: + _items.append(_item_notification_channels.to_dict()) + _dict["notificationChannels"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ScheduleResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "userId": obj.get("userId"), + "teamId": obj.get("teamId"), + "customerId": obj.get("customerId"), + "name": obj.get("name"), + "description": obj.get("description"), + "reportId": obj.get("reportId"), + "reportName": obj.get("reportName"), + "isReportTemplate": obj.get("isReportTemplate"), + "reportFormat": obj.get("reportFormat"), + "zones": obj.get("zones"), + "policies": obj.get("policies"), + "timezone": obj.get("timezone"), + "schedule": obj.get("schedule"), + "enabled": obj.get("enabled"), + "notificationChannels": [NotificationChannel.from_dict(_item) for _item in obj["notificationChannels"]] + if obj.get("notificationChannels") is not None + else None, + "iacTaskId": obj.get("iacTaskId"), + "passwordEnabled": obj.get("passwordEnabled"), + "compression": obj.get("compression"), + "createdBy": obj.get("createdBy"), + "updatedBy": obj.get("updatedBy"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "lastScheduledOn": obj.get("lastScheduledOn"), + "lastStartedOn": obj.get("lastStartedOn"), + "lastCompletedOn": obj.get("lastCompletedOn"), + } + ) + return _obj diff --git a/sysdig_client/models/scope_type_v1.py b/sysdig_client/models/scope_type_v1.py new file mode 100644 index 00000000..24188e23 --- /dev/null +++ b/sysdig_client/models/scope_type_v1.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class ScopeTypeV1(str, Enum): + """ + ScopeTypeV1 + """ + + """ + allowed enum values + """ + AGENT = "AGENT" + AWS_CLOUD_WATCH = "AWS_CLOUD_WATCH" + HOST_CONTAINER = "HOST_CONTAINER" + IBM_PLATFORM_METRICS = "IBM_PLATFORM_METRICS" + PROMETHEUS_REMOTE_WRITE = "PROMETHEUS_REMOTE_WRITE" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of ScopeTypeV1 from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/scope_v1.py b/sysdig_client/models/scope_v1.py new file mode 100644 index 00000000..932b242c --- /dev/null +++ b/sysdig_client/models/scope_v1.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.scope_type_v1 import ScopeTypeV1 +from typing import Optional, Set +from typing_extensions import Self + + +class ScopeV1(BaseModel): + """ + ScopeV1 + """ # noqa: E501 + + type: ScopeTypeV1 + expression: Annotated[str, Field(strict=True, max_length=65356)] + __properties: ClassVar[List[str]] = ["type", "expression"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ScopeV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ScopeV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "expression": obj.get("expression")}) + return _obj diff --git a/sysdig_client/models/sequence_inner.py b/sysdig_client/models/sequence_inner.py new file mode 100644 index 00000000..bc3a071f --- /dev/null +++ b/sysdig_client/models/sequence_inner.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class SequenceInner(BaseModel): + """ + SequenceInner + """ # noqa: E501 + + event_id: Annotated[str, Field(strict=True, max_length=36)] = Field( + description="The unique identifier of the log event.", alias="eventId" + ) + event_name: Annotated[str, Field(strict=True, max_length=64)] = Field(description="The name of the event.", alias="eventName") + event_time: datetime = Field(description="The time when the event occurred.", alias="eventTime") + ingestion_id: Annotated[str, Field(strict=True, max_length=32)] = Field( + description="The unique identifier of the ingestion.", alias="ingestionId" + ) + region: Annotated[str, Field(strict=True, max_length=64)] = Field(description="The region where the event occurred.") + source: Annotated[str, Field(strict=True, max_length=64)] = Field(description="The source of the event.") + source_ip_address: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="The IP address of the source.", alias="sourceIpAddress" + ) + sub_ingestion_id: Annotated[str, Field(strict=True, max_length=32)] = Field( + description="The unique identifier of the sub ingestion.", alias="subIngestionId" + ) + __properties: ClassVar[List[str]] = [ + "eventId", + "eventName", + "eventTime", + "ingestionId", + "region", + "source", + "sourceIpAddress", + "subIngestionId", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SequenceInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SequenceInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "eventId": obj.get("eventId"), + "eventName": obj.get("eventName"), + "eventTime": obj.get("eventTime"), + "ingestionId": obj.get("ingestionId"), + "region": obj.get("region"), + "source": obj.get("source"), + "sourceIpAddress": obj.get("sourceIpAddress"), + "subIngestionId": obj.get("subIngestionId"), + } + ) + return _obj diff --git a/sysdig_client/models/series_response_v1.py b/sysdig_client/models/series_response_v1.py new file mode 100644 index 00000000..febcfe17 --- /dev/null +++ b/sysdig_client/models/series_response_v1.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class SeriesResponseV1(BaseModel): + """ + SeriesResponseV1 + """ # noqa: E501 + + status: Optional[StrictStr] = Field(default=None, description="Query status.") + data: Optional[List[Dict[str, Any]]] = Field( + default=None, description="List of matching time series, each represented as a set of labels." + ) + warnings: Optional[List[StrictStr]] = Field(default=None, description="A set of warning messages attached to the response.") + infos: Optional[List[StrictStr]] = Field(default=None, description="A set of information messages attached to the response.") + __properties: ClassVar[List[str]] = ["status", "data", "warnings", "infos"] + + @field_validator("status") + def status_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["success", "error"]): + raise ValueError("must be one of enum values ('success', 'error')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SeriesResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SeriesResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"status": obj.get("status"), "data": obj.get("data"), "warnings": obj.get("warnings"), "infos": obj.get("infos")} + ) + return _obj diff --git a/sysdig_client/models/service_account_response_v1.py b/sysdig_client/models/service_account_response_v1.py new file mode 100644 index 00000000..728b2b34 --- /dev/null +++ b/sysdig_client/models/service_account_response_v1.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ServiceAccountResponseV1(BaseModel): + """ + ServiceAccountResponseV1 + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Service Account display name." + ) + date_created: Optional[datetime] = Field( + default=None, description="Date and time when the Service Account was created.", alias="dateCreated" + ) + last_updated: Optional[datetime] = Field( + default=None, description="Date and time when the Service Account was last updated.", alias="lastUpdated" + ) + last_used: Optional[datetime] = Field( + default=None, description="Date and time when the Service Account API key was last used.", alias="lastUsed" + ) + expiration_date: Optional[datetime] = Field( + default=None, description="Date and time when the Service Account API key expires.", alias="expirationDate" + ) + team_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, description="Team ID of the team the service account is associated with.", alias="teamId" + ) + team_role: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The predefined team role for a Service Account, or an ID of a custom role.", alias="teamRole" + ) + system_roles: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=128)]], Field(min_length=1, max_length=20)] + ] = Field(default=None, description="Array of System roles assigned to the global service account.", alias="systemRoles") + __properties: ClassVar[List[str]] = [ + "id", + "name", + "dateCreated", + "lastUpdated", + "lastUsed", + "expirationDate", + "teamId", + "teamRole", + "systemRoles", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ServiceAccountResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ServiceAccountResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "name": obj.get("name"), + "dateCreated": obj.get("dateCreated"), + "lastUpdated": obj.get("lastUpdated"), + "lastUsed": obj.get("lastUsed"), + "expirationDate": obj.get("expirationDate"), + "teamId": obj.get("teamId"), + "teamRole": obj.get("teamRole"), + "systemRoles": obj.get("systemRoles"), + } + ) + return _obj diff --git a/sysdig_client/models/service_account_with_key_response_v1.py b/sysdig_client/models/service_account_with_key_response_v1.py new file mode 100644 index 00000000..84db7b01 --- /dev/null +++ b/sysdig_client/models/service_account_with_key_response_v1.py @@ -0,0 +1,136 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ServiceAccountWithKeyResponseV1(BaseModel): + """ + ServiceAccountWithKeyResponseV1 + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Service Account display name." + ) + date_created: Optional[datetime] = Field( + default=None, description="Date and time when the Service Account was created.", alias="dateCreated" + ) + last_updated: Optional[datetime] = Field( + default=None, description="Date and time when the Service Account was last updated.", alias="lastUpdated" + ) + last_used: Optional[datetime] = Field( + default=None, description="Date and time when the Service Account API key was last used.", alias="lastUsed" + ) + expiration_date: Optional[datetime] = Field( + default=None, description="Date and time when the Service Account API key expires.", alias="expirationDate" + ) + team_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, description="Team ID of the team the service account is associated with.", alias="teamId" + ) + team_role: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The predefined team role for a Service Account, or an ID of a custom role.", alias="teamRole" + ) + system_roles: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=128)]], Field(min_length=1, max_length=20)] + ] = Field(default=None, description="Array of System roles assigned to the global service account.", alias="systemRoles") + api_key: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Service Account API key", alias="apiKey" + ) + __properties: ClassVar[List[str]] = [ + "id", + "name", + "dateCreated", + "lastUpdated", + "lastUsed", + "expirationDate", + "teamId", + "teamRole", + "systemRoles", + "apiKey", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ServiceAccountWithKeyResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ServiceAccountWithKeyResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "name": obj.get("name"), + "dateCreated": obj.get("dateCreated"), + "lastUpdated": obj.get("lastUpdated"), + "lastUsed": obj.get("lastUsed"), + "expirationDate": obj.get("expirationDate"), + "teamId": obj.get("teamId"), + "teamRole": obj.get("teamRole"), + "systemRoles": obj.get("systemRoles"), + "apiKey": obj.get("apiKey"), + } + ) + return _obj diff --git a/sysdig_client/models/service_accounts_notification_settings_response_v1.py b/sysdig_client/models/service_accounts_notification_settings_response_v1.py new file mode 100644 index 00000000..226ab8e3 --- /dev/null +++ b/sysdig_client/models/service_accounts_notification_settings_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ServiceAccountsNotificationSettingsResponseV1(BaseModel): + """ + ServiceAccountsNotificationSettingsResponseV1 + """ # noqa: E501 + + is_enabled: Optional[StrictBool] = Field( + default=None, description="Whether the notification settings are enabled or not.", alias="isEnabled" + ) + notification_channel_ids: Optional[Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=10)]] = Field( + default=None, + description="The list of notification channel IDs to which the notifications are to be sent.\\ \\ Supported types are **EMAIL** and **SLACK**. ", + alias="notificationChannelIds", + ) + days_before_expiry: Optional[Annotated[List[Annotated[int, Field(le=60, strict=True, ge=1)]], Field(max_length=5)]] = Field( + default=None, + description="The number of days before the expiry of the service account when the notifications are to be sent.", + alias="daysBeforeExpiry", + ) + __properties: ClassVar[List[str]] = ["isEnabled", "notificationChannelIds", "daysBeforeExpiry"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ServiceAccountsNotificationSettingsResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ServiceAccountsNotificationSettingsResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "isEnabled": obj.get("isEnabled"), + "notificationChannelIds": obj.get("notificationChannelIds"), + "daysBeforeExpiry": obj.get("daysBeforeExpiry"), + } + ) + return _obj diff --git a/sysdig_client/models/service_accounts_notification_settins_base.py b/sysdig_client/models/service_accounts_notification_settins_base.py new file mode 100644 index 00000000..5281eda6 --- /dev/null +++ b/sysdig_client/models/service_accounts_notification_settins_base.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ServiceAccountsNotificationSettinsBase(BaseModel): + """ + The base schema for the service accounts notification settings. + """ # noqa: E501 + + is_enabled: Optional[StrictBool] = Field( + default=None, description="Whether the notification settings are enabled or not.", alias="isEnabled" + ) + notification_channel_ids: Optional[Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=10)]] = Field( + default=None, + description="The list of notification channel IDs to which the notifications are to be sent.\\ \\ Supported types are **EMAIL** and **SLACK**. ", + alias="notificationChannelIds", + ) + days_before_expiry: Optional[Annotated[List[Annotated[int, Field(le=60, strict=True, ge=1)]], Field(max_length=5)]] = Field( + default=None, + description="The number of days before the expiry of the service account when the notifications are to be sent.", + alias="daysBeforeExpiry", + ) + __properties: ClassVar[List[str]] = ["isEnabled", "notificationChannelIds", "daysBeforeExpiry"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ServiceAccountsNotificationSettinsBase from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ServiceAccountsNotificationSettinsBase from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "isEnabled": obj.get("isEnabled"), + "notificationChannelIds": obj.get("notificationChannelIds"), + "daysBeforeExpiry": obj.get("daysBeforeExpiry"), + } + ) + return _obj diff --git a/sysdig_client/models/services.py b/sysdig_client/models/services.py new file mode 100644 index 00000000..dd79777f --- /dev/null +++ b/sysdig_client/models/services.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class Services(BaseModel): + """ + Certificate registrations + """ # noqa: E501 + + certificate_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)] = Field( + description="The certificate ID.", alias="certificateId" + ) + service_type: StrictStr = Field(description="The service type.", alias="serviceType") + registered_at: datetime = Field( + description="The timestamp the service was configured to use this certificate.", alias="registeredAt" + ) + service_id: Annotated[str, Field(strict=True, max_length=20)] = Field( + description="The integration ID for the service owning the integration that uses the certificate.", alias="serviceId" + ) + __properties: ClassVar[List[str]] = ["certificateId", "serviceType", "registeredAt", "serviceId"] + + @field_validator("service_type") + def service_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["EVENTS_FORWARDER"]): + raise ValueError("must be one of enum values ('EVENTS_FORWARDER')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Services from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Services from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "certificateId": obj.get("certificateId"), + "serviceType": obj.get("serviceType"), + "registeredAt": obj.get("registeredAt"), + "serviceId": obj.get("serviceId"), + } + ) + return _obj diff --git a/sysdig_client/models/services_response.py b/sysdig_client/models/services_response.py new file mode 100644 index 00000000..cbf9b963 --- /dev/null +++ b/sysdig_client/models/services_response.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.services import Services +from typing import Optional, Set +from typing_extensions import Self + + +class ServicesResponse(BaseModel): + """ + LedgersResponse + """ # noqa: E501 + + data: Annotated[List[Services], Field(max_length=1000)] + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ServicesResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ServicesResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [Services.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/slack_base_notification_channel_options_v1.py b/sysdig_client/models/slack_base_notification_channel_options_v1.py new file mode 100644 index 00000000..dec0ca19 --- /dev/null +++ b/sysdig_client/models/slack_base_notification_channel_options_v1.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SlackBaseNotificationChannelOptionsV1(BaseModel): + """ + The Slack base notification channel options + """ # noqa: E501 + + channel: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The name of the Slack channel the user selected as a destination for messages." + ) + url: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The Slack webhook URL") + __properties: ClassVar[List[str]] = ["channel", "url"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SlackBaseNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SlackBaseNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"channel": obj.get("channel"), "url": obj.get("url")}) + return _obj diff --git a/sysdig_client/models/slack_create_notification_channel_options_v1.py b/sysdig_client/models/slack_create_notification_channel_options_v1.py new file mode 100644 index 00000000..7675bde8 --- /dev/null +++ b/sysdig_client/models/slack_create_notification_channel_options_v1.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SlackCreateNotificationChannelOptionsV1(BaseModel): + """ + The Slack create notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + channel: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The name of the Slack channel the user selected as a destination for messages." + ) + url: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The Slack webhook URL") + is_private_channel: Optional[StrictBool] = Field( + default=None, description="Whether the Slack channel is private or not", alias="isPrivateChannel" + ) + private_channel_url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The channel URL, if channel is private", alias="privateChannelUrl" + ) + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "channel", "url", "isPrivateChannel", "privateChannelUrl"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SlackCreateNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SlackCreateNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "channel": obj.get("channel"), + "url": obj.get("url"), + "isPrivateChannel": obj.get("isPrivateChannel"), + "privateChannelUrl": obj.get("privateChannelUrl"), + } + ) + return _obj diff --git a/sysdig_client/models/slack_notification_channel_response_v1.py b/sysdig_client/models/slack_notification_channel_response_v1.py new file mode 100644 index 00000000..faebef0f --- /dev/null +++ b/sysdig_client/models/slack_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.slack_read_notification_channel_options_v1 import SlackReadNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class SlackNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + SlackNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: SlackReadNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SlackNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SlackNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": SlackReadNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/slack_read_notification_channel_options_v1.py b/sysdig_client/models/slack_read_notification_channel_options_v1.py new file mode 100644 index 00000000..33a64a7b --- /dev/null +++ b/sysdig_client/models/slack_read_notification_channel_options_v1.py @@ -0,0 +1,117 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SlackReadNotificationChannelOptionsV1(BaseModel): + """ + The Slack read notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + channel: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The name of the Slack channel the user selected as a destination for messages." + ) + url: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The Slack webhook URL") + is_private_channel: Optional[StrictBool] = Field( + default=None, description="Whether the Slack channel is private or not", alias="isPrivateChannel" + ) + private_channel_url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The channel URL, if channel is private", alias="privateChannelUrl" + ) + channel_creator_user_id: Optional[Annotated[int, Field(le=99999999999999, strict=True, ge=0)]] = Field( + default=None, description="The ID of the user that created the channel.", alias="channelCreatorUserId" + ) + __properties: ClassVar[List[str]] = [ + "hasHidingOfSensitiveInfo", + "channel", + "url", + "isPrivateChannel", + "privateChannelUrl", + "channelCreatorUserId", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SlackReadNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SlackReadNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "channel": obj.get("channel"), + "url": obj.get("url"), + "isPrivateChannel": obj.get("isPrivateChannel"), + "privateChannelUrl": obj.get("privateChannelUrl"), + "channelCreatorUserId": obj.get("channelCreatorUserId"), + } + ) + return _obj diff --git a/sysdig_client/models/slack_update_notification_channel_options_v1.py b/sysdig_client/models/slack_update_notification_channel_options_v1.py new file mode 100644 index 00000000..8c320a83 --- /dev/null +++ b/sysdig_client/models/slack_update_notification_channel_options_v1.py @@ -0,0 +1,98 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SlackUpdateNotificationChannelOptionsV1(BaseModel): + """ + The Slack update notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + channel: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The name of the Slack channel the user selected as a destination for messages." + ) + url: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The Slack webhook URL") + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "channel", "url"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SlackUpdateNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SlackUpdateNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "channel": obj.get("channel"), + "url": obj.get("url"), + } + ) + return _obj diff --git a/sysdig_client/models/sns_notification_channel_options_v1.py b/sysdig_client/models/sns_notification_channel_options_v1.py new file mode 100644 index 00000000..ee82b770 --- /dev/null +++ b/sysdig_client/models/sns_notification_channel_options_v1.py @@ -0,0 +1,95 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SnsNotificationChannelOptionsV1(BaseModel): + """ + The Amazon SNS notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + sns_topic_arns: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=256)]], Field(max_length=100)]] = Field( + default=None, + description="List of sns topic ARNs (Amazon Resource Names) to which notifications should be sent", + alias="snsTopicArns", + ) + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "snsTopicArns"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SnsNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SnsNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), "snsTopicArns": obj.get("snsTopicArns")} + ) + return _obj diff --git a/sysdig_client/models/sns_notification_channel_response_v1.py b/sysdig_client/models/sns_notification_channel_response_v1.py new file mode 100644 index 00000000..b16810a8 --- /dev/null +++ b/sysdig_client/models/sns_notification_channel_response_v1.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.sns_notification_channel_options_v1 import SnsNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class SnsNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + SnsNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: SnsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SnsNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SnsNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": SnsNotificationChannelOptionsV1.from_dict(obj["options"]) if obj.get("options") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/source.py b/sysdig_client/models/source.py new file mode 100644 index 00000000..dc7ed730 --- /dev/null +++ b/sysdig_client/models/source.py @@ -0,0 +1,46 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class Source(str, Enum): + """ + Source of the event: - `syscall` - a syscall within a workload - `windows` - Windows event log - `profiling` - ML workload threat detections - `K8SAdmissionController` - Admission control request coming from the Kubernetes admission controller - `k8s_audit` - Kubernetes audit logs, if the category is `runtime`, otherwise Admission control request - `aws_cloudtrail` - AWS CloudTrail log, from CloudConnector - `awscloudtrail` - AWS CloudTrail log, agentless only - `agentless-aws-ml` - ML threat detections for AWS - `gcp_auditlog` - GCP Audit log - `azure_platformlogs` - Azure platform logs - `okta` - Okta System Logs - `agentless-okta-ml` - ML threat detections for Okta - `github` - Github organization logs + """ + + """ + allowed enum values + """ + SYSCALL = "syscall" + WINDOWS = "windows" + PROFILING = "profiling" + K8SADMISSIONCONTROLLER = "K8SAdmissionController" + K8S_AUDIT = "k8s_audit" + AWS_CLOUDTRAIL = "aws_cloudtrail" + AWSCLOUDTRAIL = "awscloudtrail" + AGENTLESS_MINUS_AWS_MINUS_ML = "agentless-aws-ml" + GCP_AUDITLOG = "gcp_auditlog" + AZURE_PLATFORMLOGS = "azure_platformlogs" + OKTA = "okta" + AGENTLESS_MINUS_OKTA_MINUS_ML = "agentless-okta-ml" + GITHUB = "github" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of Source from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/source_details.py b/sysdig_client/models/source_details.py new file mode 100644 index 00000000..1787be51 --- /dev/null +++ b/sysdig_client/models/source_details.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SourceDetails(BaseModel): + """ + Additional details related to the Event source. + """ # noqa: E501 + + type: Annotated[str, Field(strict=True, max_length=32)] = Field( + description="The type of component that generated the raw event: - `cloud` - Cloud platform - `git` - Git platform - `iam` - Identity and Access Management platform - `kubernetes` - Kubernetes control plane - `workload` - Workload (from bare metal to *aaS compute) " + ) + sub_type: Optional[Annotated[str, Field(strict=True, max_length=32)]] = Field( + default=None, + description="A deeper particularization for the type of component that generated the raw event: - `auditlogs` - Audit logs of platforms/apps - `auditWebhooks` - Kubernetes Audit - `caas` - Container As A Service workload - `dynamicAdmissionControl` - Dynamic admission control - `host` - Non-containerized host - `container` - Container - `workforce` - Workforce type IAM ", + alias="subType", + ) + __properties: ClassVar[List[str]] = ["type", "subType"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SourceDetails from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SourceDetails from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type"), "subType": obj.get("subType")}) + return _obj diff --git a/sysdig_client/models/splunk_create_connection_info.py b/sysdig_client/models/splunk_create_connection_info.py new file mode 100644 index 00000000..97b03542 --- /dev/null +++ b/sysdig_client/models/splunk_create_connection_info.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SplunkCreateConnectionInfo(BaseModel): + """ + SplunkCreateConnectionInfo + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=256)] = Field(description="URL of the Splunk instance") + source_type: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="Source type to override [Sysdig standard data type to source type mapping](https://docs.sysdig.com/en/forward-splunk#reference-data-categories-mapped-to-source-types)", + alias="sourceType", + ) + index: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="index to send data to. If unspecified, it will be used the index specified on the HTTP Event Collector configuration on Splunk", + ) + is_insecure: Optional[StrictBool] = Field(default=None, description="Skip TLS certificate verification", alias="isInsecure") + certificate_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, + description="ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field", + alias="certificateId", + ) + token: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="HTTP Event Collector Token") + __properties: ClassVar[List[str]] = ["endpoint", "sourceType", "index", "isInsecure", "certificateId", "token"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SplunkCreateConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SplunkCreateConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "sourceType": obj.get("sourceType"), + "index": obj.get("index"), + "isInsecure": obj.get("isInsecure"), + "certificateId": obj.get("certificateId"), + "token": obj.get("token"), + } + ) + return _obj diff --git a/sysdig_client/models/splunk_update_connection_info.py b/sysdig_client/models/splunk_update_connection_info.py new file mode 100644 index 00000000..71da7593 --- /dev/null +++ b/sysdig_client/models/splunk_update_connection_info.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SplunkUpdateConnectionInfo(BaseModel): + """ + SplunkUpdateConnectionInfo + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=256)] = Field(description="URL of the Splunk instance") + source_type: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="Source type to override [Sysdig standard data type to source type mapping](https://docs.sysdig.com/en/forward-splunk#reference-data-categories-mapped-to-source-types)", + alias="sourceType", + ) + index: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, + description="index to send data to. If unspecified, it will be used the index specified on the HTTP Event Collector configuration on Splunk", + ) + is_insecure: Optional[StrictBool] = Field(default=None, description="Skip TLS certificate verification", alias="isInsecure") + certificate_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, + description="ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field", + alias="certificateId", + ) + token: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( + default=None, description="HTTP Event Collector Token" + ) + __properties: ClassVar[List[str]] = ["endpoint", "sourceType", "index", "isInsecure", "certificateId", "token"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SplunkUpdateConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SplunkUpdateConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "sourceType": obj.get("sourceType"), + "index": obj.get("index"), + "isInsecure": obj.get("isInsecure"), + "certificateId": obj.get("certificateId"), + "token": obj.get("token"), + } + ) + return _obj diff --git a/sysdig_client/models/sso_settings_base_schema_v1.py b/sysdig_client/models/sso_settings_base_schema_v1.py new file mode 100644 index 00000000..d91ff058 --- /dev/null +++ b/sysdig_client/models/sso_settings_base_schema_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.product import Product +from typing import Set +from typing_extensions import Self + + +class SsoSettingsBaseSchemaV1(BaseModel): + """ + SsoSettingsBaseSchemaV1 + """ # noqa: E501 + + product: Optional[Product] = Field( + default=None, + description="The product to which SSO settings is applied to. SSO settings are configured per specific product.", + ) + is_active: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the SSO settings is active.", alias="isActive" + ) + create_user_on_login: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the user will be created automatically if not found in the system.", + alias="createUserOnLogin", + ) + is_password_login_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the user will be able to login with password. Deprecated: use the API endpoint `/platform/v1/global-sso-settings` for this functionality. This is now a global setting: if this flag is defined here and this SSO setting is set to be active, the setting will be applied at global level.", + alias="isPasswordLoginEnabled", + ) + is_single_logout_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the single logout support is enabled.", alias="isSingleLogoutEnabled" + ) + is_group_mapping_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if group mapping support is enabled.", alias="isGroupMappingEnabled" + ) + group_mapping_attribute_name: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The group mapping attribute name.", alias="groupMappingAttributeName" + ) + __properties: ClassVar[List[str]] = [ + "product", + "isActive", + "createUserOnLogin", + "isPasswordLoginEnabled", + "isSingleLogoutEnabled", + "isGroupMappingEnabled", + "groupMappingAttributeName", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SsoSettingsBaseSchemaV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if group_mapping_attribute_name (nullable) is None + # and model_fields_set contains the field + if self.group_mapping_attribute_name is None and "group_mapping_attribute_name" in self.model_fields_set: + _dict["groupMappingAttributeName"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SsoSettingsBaseSchemaV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "product": obj.get("product"), + "isActive": obj.get("isActive"), + "createUserOnLogin": obj.get("createUserOnLogin"), + "isPasswordLoginEnabled": obj.get("isPasswordLoginEnabled"), + "isSingleLogoutEnabled": obj.get("isSingleLogoutEnabled"), + "isGroupMappingEnabled": obj.get("isGroupMappingEnabled"), + "groupMappingAttributeName": obj.get("groupMappingAttributeName"), + } + ) + return _obj diff --git a/sysdig_client/models/sso_settings_create_request_base_v1.py b/sysdig_client/models/sso_settings_create_request_base_v1.py new file mode 100644 index 00000000..8079eaa4 --- /dev/null +++ b/sysdig_client/models/sso_settings_create_request_base_v1.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from importlib import import_module +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List, Union +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from typing import Optional, Set +from typing_extensions import Self + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from sysdig_client.models.open_id_create_request_v1 import OpenIdCreateRequestV1 + from sysdig_client.models.saml_create_request_v1 import SamlCreateRequestV1 + + +class SsoSettingsCreateRequestBaseV1(BaseModel): + """ + Create Request SSO Settings Base Schema + """ # noqa: E501 + + type: SsoTypeV1 + __properties: ClassVar[List[str]] = ["type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = "type" + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = {"OPENID": "OpenIdCreateRequestV1", "SAML": "SamlCreateRequestV1"} + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Union[OpenIdCreateRequestV1, SamlCreateRequestV1]]: + """Create an instance of SsoSettingsCreateRequestBaseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[OpenIdCreateRequestV1, SamlCreateRequestV1]]: + """Create an instance of SsoSettingsCreateRequestBaseV1 from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == "OpenIdCreateRequestV1": + return import_module("sysdig_client.models.open_id_create_request_v1").OpenIdCreateRequestV1.from_dict(obj) + if object_type == "SamlCreateRequestV1": + return import_module("sysdig_client.models.saml_create_request_v1").SamlCreateRequestV1.from_dict(obj) + + raise ValueError( + "SsoSettingsCreateRequestBaseV1 failed to lookup discriminator value from " + + json.dumps(obj) + + ". Discriminator property name: " + + cls.__discriminator_property_name + + ", mapping: " + + json.dumps(cls.__discriminator_value_class_map) + ) diff --git a/sysdig_client/models/sso_settings_response_base_v1.py b/sysdig_client/models/sso_settings_response_base_v1.py new file mode 100644 index 00000000..f3baf289 --- /dev/null +++ b/sysdig_client/models/sso_settings_response_base_v1.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from importlib import import_module +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List, Union +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from typing import Optional, Set +from typing_extensions import Self + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from sysdig_client.models.open_id_config_response_v1 import OpenIdConfigResponseV1 + from sysdig_client.models.saml_response_v1 import SamlResponseV1 + + +class SsoSettingsResponseBaseV1(BaseModel): + """ + Response SSO Settings Base Schema + """ # noqa: E501 + + type: SsoTypeV1 + __properties: ClassVar[List[str]] = ["type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = "type" + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = {"OPENID": "OpenIdConfigResponseV1", "SAML": "SamlResponseV1"} + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Union[OpenIdConfigResponseV1, SamlResponseV1]]: + """Create an instance of SsoSettingsResponseBaseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[OpenIdConfigResponseV1, SamlResponseV1]]: + """Create an instance of SsoSettingsResponseBaseV1 from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == "OpenIdConfigResponseV1": + return import_module("sysdig_client.models.open_id_config_response_v1").OpenIdConfigResponseV1.from_dict(obj) + if object_type == "SamlResponseV1": + return import_module("sysdig_client.models.saml_response_v1").SamlResponseV1.from_dict(obj) + + raise ValueError( + "SsoSettingsResponseBaseV1 failed to lookup discriminator value from " + + json.dumps(obj) + + ". Discriminator property name: " + + cls.__discriminator_property_name + + ", mapping: " + + json.dumps(cls.__discriminator_value_class_map) + ) diff --git a/sysdig_client/models/sso_settings_response_v1.py b/sysdig_client/models/sso_settings_response_v1.py new file mode 100644 index 00000000..138515a8 --- /dev/null +++ b/sysdig_client/models/sso_settings_response_v1.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.product import Product +from sysdig_client.models.sso_settings_response_base_v1 import SsoSettingsResponseBaseV1 +from typing import Set +from typing_extensions import Self + + +class SsoSettingsResponseV1(BaseModel): + """ + SsoSettingsResponseV1 + """ # noqa: E501 + + product: Optional[Product] = Field( + default=None, + description="The product to which SSO settings is applied to. SSO settings are configured per specific product.", + ) + is_active: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the SSO settings is active.", alias="isActive" + ) + create_user_on_login: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the user will be created automatically if not found in the system.", + alias="createUserOnLogin", + ) + is_password_login_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the user will be able to login with password. Deprecated: use the API endpoint `/platform/v1/global-sso-settings` for this functionality. This is now a global setting: if this flag is defined here and this SSO setting is set to be active, the setting will be applied at global level.", + alias="isPasswordLoginEnabled", + ) + is_single_logout_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if the single logout support is enabled.", alias="isSingleLogoutEnabled" + ) + is_group_mapping_enabled: Optional[StrictBool] = Field( + default=None, description="Flag to indicate if group mapping support is enabled.", alias="isGroupMappingEnabled" + ) + group_mapping_attribute_name: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The group mapping attribute name.", alias="groupMappingAttributeName" + ) + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + config: Optional[SsoSettingsResponseBaseV1] = None + date_created: Optional[datetime] = Field( + default=None, description="The date (in ISO 8601 format) when this SSO config was created.", alias="dateCreated" + ) + last_updated: Optional[datetime] = Field( + default=None, description="The date (in ISO 8601 format) when this SSO config was last updated.", alias="lastUpdated" + ) + version: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + __properties: ClassVar[List[str]] = [ + "product", + "isActive", + "createUserOnLogin", + "isPasswordLoginEnabled", + "isSingleLogoutEnabled", + "isGroupMappingEnabled", + "groupMappingAttributeName", + "id", + "config", + "dateCreated", + "lastUpdated", + "version", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SsoSettingsResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict["config"] = self.config.to_dict() + # set to None if group_mapping_attribute_name (nullable) is None + # and model_fields_set contains the field + if self.group_mapping_attribute_name is None and "group_mapping_attribute_name" in self.model_fields_set: + _dict["groupMappingAttributeName"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SsoSettingsResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "product": obj.get("product"), + "isActive": obj.get("isActive"), + "createUserOnLogin": obj.get("createUserOnLogin"), + "isPasswordLoginEnabled": obj.get("isPasswordLoginEnabled"), + "isSingleLogoutEnabled": obj.get("isSingleLogoutEnabled"), + "isGroupMappingEnabled": obj.get("isGroupMappingEnabled"), + "groupMappingAttributeName": obj.get("groupMappingAttributeName"), + "id": obj.get("id"), + "config": SsoSettingsResponseBaseV1.from_dict(obj["config"]) if obj.get("config") is not None else None, + "dateCreated": obj.get("dateCreated"), + "lastUpdated": obj.get("lastUpdated"), + "version": obj.get("version"), + } + ) + return _obj diff --git a/sysdig_client/models/sso_settings_update_request_base_v1.py b/sysdig_client/models/sso_settings_update_request_base_v1.py new file mode 100644 index 00000000..bf7537cc --- /dev/null +++ b/sysdig_client/models/sso_settings_update_request_base_v1.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from importlib import import_module +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List, Union +from sysdig_client.models.sso_type_v1 import SsoTypeV1 +from typing import Optional, Set +from typing_extensions import Self + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from sysdig_client.models.open_id_update_request_v1 import OpenIdUpdateRequestV1 + from sysdig_client.models.saml_update_request_v1 import SamlUpdateRequestV1 + + +class SsoSettingsUpdateRequestBaseV1(BaseModel): + """ + Update Request SSO Settings Base Schema + """ # noqa: E501 + + type: SsoTypeV1 + __properties: ClassVar[List[str]] = ["type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = "type" + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = {"OPENID": "OpenIdUpdateRequestV1", "SAML": "SamlUpdateRequestV1"} + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Union[OpenIdUpdateRequestV1, SamlUpdateRequestV1]]: + """Create an instance of SsoSettingsUpdateRequestBaseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[OpenIdUpdateRequestV1, SamlUpdateRequestV1]]: + """Create an instance of SsoSettingsUpdateRequestBaseV1 from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == "OpenIdUpdateRequestV1": + return import_module("sysdig_client.models.open_id_update_request_v1").OpenIdUpdateRequestV1.from_dict(obj) + if object_type == "SamlUpdateRequestV1": + return import_module("sysdig_client.models.saml_update_request_v1").SamlUpdateRequestV1.from_dict(obj) + + raise ValueError( + "SsoSettingsUpdateRequestBaseV1 failed to lookup discriminator value from " + + json.dumps(obj) + + ". Discriminator property name: " + + cls.__discriminator_property_name + + ", mapping: " + + json.dumps(cls.__discriminator_value_class_map) + ) diff --git a/sysdig_client/models/sso_type_v1.py b/sysdig_client/models/sso_type_v1.py new file mode 100644 index 00000000..37a291d4 --- /dev/null +++ b/sysdig_client/models/sso_type_v1.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class SsoTypeV1(str, Enum): + """ + Supported SSO types + """ + + """ + allowed enum values + """ + SAML = "SAML" + OPENID = "OPENID" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of SsoTypeV1 from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/stage.py b/sysdig_client/models/stage.py new file mode 100644 index 00000000..0a05a77f --- /dev/null +++ b/sysdig_client/models/stage.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.stage_configuration import StageConfiguration +from typing import Set +from typing_extensions import Self + + +class Stage(BaseModel): + """ + Stage + """ # noqa: E501 + + name: Annotated[str, Field(min_length=0, strict=True, max_length=1024)] = Field(description="stage name.") + configuration: Optional[Annotated[List[StageConfiguration], Field(min_length=0, max_length=1000)]] = Field( + default=None, description="Configurations for the stage." + ) + __properties: ClassVar[List[str]] = ["name", "configuration"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Stage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in configuration (list) + _items = [] + if self.configuration: + for _item_configuration in self.configuration: + if _item_configuration: + _items.append(_item_configuration.to_dict()) + _dict["configuration"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Stage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "configuration": [StageConfiguration.from_dict(_item) for _item in obj["configuration"]] + if obj.get("configuration") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/stage_configuration.py b/sysdig_client/models/stage_configuration.py new file mode 100644 index 00000000..b494b24c --- /dev/null +++ b/sysdig_client/models/stage_configuration.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class StageConfiguration(BaseModel): + """ + StageConfiguration + """ # noqa: E501 + + scope: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=1024)]] = Field( + default=None, + description="Scope to apply the policies for the given stage. An empty string or missing property implies the policies are always active. The scope is defined using a query language expression, which is a subset of the full metrics query language used in monitoring. ", + ) + __properties: ClassVar[List[str]] = ["scope"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of StageConfiguration from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of StageConfiguration from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"scope": obj.get("scope")}) + return _obj diff --git a/sysdig_client/models/stateful_detections_content.py b/sysdig_client/models/stateful_detections_content.py new file mode 100644 index 00000000..ece325bf --- /dev/null +++ b/sysdig_client/models/stateful_detections_content.py @@ -0,0 +1,167 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.event_content_type import EventContentType +from sysdig_client.models.policy_origin import PolicyOrigin +from sysdig_client.models.sequence_inner import SequenceInner +from sysdig_client.models.stateful_detections_content_all_of_fields import StatefulDetectionsContentAllOfFields +from sysdig_client.models.stats_inner import StatsInner +from typing import Set +from typing_extensions import Self + + +class StatefulDetectionsContent(BaseModel): + """ + Stateful detections event content + """ # noqa: E501 + + type: EventContentType + rule_name: Annotated[str, Field(strict=True, max_length=1024)] = Field( + description="Name of the rule the event is generated after", alias="ruleName" + ) + rule_type: Annotated[int, Field(le=14, strict=True, ge=1)] = Field( + description="Rule type: - 1 - List matching - process - 2 - List matching - container - 3 - List matching - file - 4 - List matching - network - 5 - List matching - syscall - 6 - Falco - 7 - Drift detection - 8 - Malware detection - 11 - ML - Cryptominer detection - 13 - ML - AWS anomalous login - 14 - ML - Okta anomalous login ", + alias="ruleType", + ) + rule_tags: Annotated[List[Annotated[str, Field(strict=True, max_length=64)]], Field(max_length=1000)] = Field( + description="The tags attached to the rule", alias="ruleTags" + ) + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field( + description="ID of the policy that generated the event", alias="policyId" + ) + policy_origin: PolicyOrigin = Field(alias="policyOrigin") + policy_notification_channel_ids: Annotated[ + List[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]], Field(max_length=100) + ] = Field( + description="The list of notification channels where an alert is sent after event is generated. Doesn't account for aggregations and eventual thresholds. ", + alias="policyNotificationChannelIds", + ) + output: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="Event output, generated after the configured rule" + ) + stats: Optional[Annotated[List[StatsInner], Field(max_length=1000)]] = Field( + default=None, description="An array representing the relevant APIs and how often they were called in the time window. " + ) + sequence: Optional[List[SequenceInner]] = Field( + default=None, + description="The sequence of events that occurred to trigger the event. The sequence is represented as a list of events, where each event is a map of key-value pairs. ", + ) + fields: StatefulDetectionsContentAllOfFields + __properties: ClassVar[List[str]] = [ + "type", + "ruleName", + "ruleType", + "ruleTags", + "policyId", + "policyOrigin", + "policyNotificationChannelIds", + "output", + "stats", + "sequence", + "fields", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of StatefulDetectionsContent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in stats (list) + _items = [] + if self.stats: + for _item_stats in self.stats: + if _item_stats: + _items.append(_item_stats.to_dict()) + _dict["stats"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in sequence (list) + _items = [] + if self.sequence: + for _item_sequence in self.sequence: + if _item_sequence: + _items.append(_item_sequence.to_dict()) + _dict["sequence"] = _items + # override the default output from pydantic by calling `to_dict()` of fields + if self.fields: + _dict["fields"] = self.fields.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of StatefulDetectionsContent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "ruleName": obj.get("ruleName"), + "ruleType": obj.get("ruleType"), + "ruleTags": obj.get("ruleTags"), + "policyId": obj.get("policyId"), + "policyOrigin": obj.get("policyOrigin"), + "policyNotificationChannelIds": obj.get("policyNotificationChannelIds"), + "output": obj.get("output"), + "stats": [StatsInner.from_dict(_item) for _item in obj["stats"]] if obj.get("stats") is not None else None, + "sequence": [SequenceInner.from_dict(_item) for _item in obj["sequence"]] + if obj.get("sequence") is not None + else None, + "fields": StatefulDetectionsContentAllOfFields.from_dict(obj["fields"]) + if obj.get("fields") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/stateful_detections_content_all_of_fields.py b/sysdig_client/models/stateful_detections_content_all_of_fields.py new file mode 100644 index 00000000..683cd8cb --- /dev/null +++ b/sysdig_client/models/stateful_detections_content_all_of_fields.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class StatefulDetectionsContentAllOfFields(BaseModel): + """ + StatefulDetectionsContentAllOfFields + """ # noqa: E501 + + __properties: ClassVar[List[str]] = [] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of StatefulDetectionsContentAllOfFields from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of StatefulDetectionsContentAllOfFields from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({}) + return _obj diff --git a/sysdig_client/models/stats_inner.py b/sysdig_client/models/stats_inner.py new file mode 100644 index 00000000..1f610f02 --- /dev/null +++ b/sysdig_client/models/stats_inner.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class StatsInner(BaseModel): + """ + StatsInner + """ # noqa: E501 + + api: Optional[Annotated[str, Field(strict=True, max_length=64)]] = None + count: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=1)]] = None + __properties: ClassVar[List[str]] = ["api", "count"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of StatsInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of StatsInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"api": obj.get("api"), "count": obj.get("count")}) + return _obj diff --git a/sysdig_client/models/submit_action_execution_request.py b/sysdig_client/models/submit_action_execution_request.py new file mode 100644 index 00000000..431a2d77 --- /dev/null +++ b/sysdig_client/models/submit_action_execution_request.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.action_execution_parameter_value import ActionExecutionParameterValue +from typing import Set +from typing_extensions import Self + + +class SubmitActionExecutionRequest(BaseModel): + """ + The request for the execution of a Response Action. + """ # noqa: E501 + + action_type: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="The name of the Response Action to execute. It may be one of the following: - KILL_PROCESS - KILL_CONTAINER - STOP_CONTAINER - PAUSE_CONTAINER - FILE_QUARANTINE - FILE_ACQUIRE - UNPAUSE_CONTAINER - FILE_UNQUARANTINE - START_CONTAINER - DELETE_POD - ROLLOUT_RESTART - KUBERNETES_VOLUME_SNAPSHOT - KUBERNETES_DELETE_VOLUME_SNAPSHOT - GET_LOGS - ISOLATE_NETWORK - DELETE_NETWORK_POLICY The following actions serve as the undo for previous actions: - START_CONTAINER: undo for STOP_CONTAINER\\ - UNPAUSE_CONTAINER: undo for PAUSE_CONTAINER\\ - FILE_UNQUARANTINE: undo for FILE_QUARANTINE\\ - KUBERNETES_DELETE_VOLUME_SNAPSHOT: undo for KUBERNETES_VOLUME_SNAPSHOT\\ - DELETE_NETWORK_POLICY: undo for ISOLATE_NETWORK\\ Do not use undo actions in [submitActionExecutionv1](#tag/Response-actions/operation/submitActionExecutionv1). You can execute an undo actions using the service [undoActionExecutionV1](#tag/Response-actions/operation/undoActionExecutionV1). ", + alias="actionType", + ) + caller_id: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field( + default=None, description="The ID of the user that executed the Response action.", alias="callerId" + ) + parameters: Dict[str, ActionExecutionParameterValue] = Field( + description="The parameters used to request the Response Action execution." + ) + __properties: ClassVar[List[str]] = ["actionType", "callerId", "parameters"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SubmitActionExecutionRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each value in parameters (dict) + _field_dict = {} + if self.parameters: + for _key_parameters in self.parameters: + if self.parameters[_key_parameters]: + _field_dict[_key_parameters] = self.parameters[_key_parameters].to_dict() + _dict["parameters"] = _field_dict + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SubmitActionExecutionRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "actionType": obj.get("actionType"), + "callerId": obj.get("callerId"), + "parameters": dict((_k, ActionExecutionParameterValue.from_dict(_v)) for _k, _v in obj["parameters"].items()) + if obj.get("parameters") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/submit_undo_action_execution_request.py b/sysdig_client/models/submit_undo_action_execution_request.py new file mode 100644 index 00000000..aa9644a2 --- /dev/null +++ b/sysdig_client/models/submit_undo_action_execution_request.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class SubmitUndoActionExecutionRequest(BaseModel): + """ + The request for the undo of a Response Action. + """ # noqa: E501 + + caller_id: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field( + default=None, description="The ID of the user that executed the Response action.", alias="callerId" + ) + __properties: ClassVar[List[str]] = ["callerId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SubmitUndoActionExecutionRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SubmitUndoActionExecutionRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"callerId": obj.get("callerId")}) + return _obj diff --git a/sysdig_client/models/supported_filter.py b/sysdig_client/models/supported_filter.py new file mode 100644 index 00000000..0288984a --- /dev/null +++ b/sysdig_client/models/supported_filter.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.operand import Operand +from sysdig_client.models.supported_filter_type import SupportedFilterType +from typing import Set +from typing_extensions import Self + + +class SupportedFilter(BaseModel): + """ + A supported field for filtering events. + """ # noqa: E501 + + id: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Attribute onto which filtering is supported.") + type: SupportedFilterType + operands: Optional[Annotated[List[Operand], Field(min_length=0, max_length=10)]] = Field( + default=None, description="The list of supported operands for filtering events." + ) + __properties: ClassVar[List[str]] = ["id", "type", "operands"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SupportedFilter from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SupportedFilter from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"id": obj.get("id"), "type": obj.get("type"), "operands": obj.get("operands")}) + return _obj diff --git a/sysdig_client/models/supported_filter_type.py b/sysdig_client/models/supported_filter_type.py new file mode 100644 index 00000000..1477f75d --- /dev/null +++ b/sysdig_client/models/supported_filter_type.py @@ -0,0 +1,37 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class SupportedFilterType(str, Enum): + """ + Data type for the attribute values. + """ + + """ + allowed enum values + """ + STRING = "string" + IP = "ip" + NUMBER = "number" + DATE = "date" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of SupportedFilterType from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/supported_filters_response.py b/sysdig_client/models/supported_filters_response.py new file mode 100644 index 00000000..0f36e07b --- /dev/null +++ b/sysdig_client/models/supported_filters_response.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from sysdig_client.models.supported_filter import SupportedFilter +from typing import Optional, Set +from typing_extensions import Self + + +class SupportedFiltersResponse(BaseModel): + """ + The list of supported attributes for filtering events. + """ # noqa: E501 + + data: Annotated[List[SupportedFilter], Field(max_length=1000)] = Field( + description="The list of supported attributes for filtering events." + ) + __properties: ClassVar[List[str]] = ["data"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SupportedFiltersResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict["data"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SupportedFiltersResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"data": [SupportedFilter.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/team_email_notification_channel_options_v1.py b/sysdig_client/models/team_email_notification_channel_options_v1.py new file mode 100644 index 00000000..3db1324a --- /dev/null +++ b/sysdig_client/models/team_email_notification_channel_options_v1.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class TeamEmailNotificationChannelOptionsV1(BaseModel): + """ + The Team Email notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of team to notify", alias="teamId" + ) + is_include_admin_users: Optional[StrictBool] = Field( + default=None, description="Whether the admin users of the team should be notified or not", alias="isIncludeAdminUsers" + ) + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "teamId", "isIncludeAdminUsers"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TeamEmailNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TeamEmailNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "teamId": obj.get("teamId"), + "isIncludeAdminUsers": obj.get("isIncludeAdminUsers"), + } + ) + return _obj diff --git a/sysdig_client/models/team_email_notification_channel_response_v1.py b/sysdig_client/models/team_email_notification_channel_response_v1.py new file mode 100644 index 00000000..14efd85b --- /dev/null +++ b/sysdig_client/models/team_email_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.team_email_notification_channel_options_v1 import TeamEmailNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class TeamEmailNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + TeamEmailNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: TeamEmailNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TeamEmailNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TeamEmailNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": TeamEmailNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/team_map_v1.py b/sysdig_client/models/team_map_v1.py new file mode 100644 index 00000000..292f1034 --- /dev/null +++ b/sysdig_client/models/team_map_v1.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class TeamMapV1(BaseModel): + """ + Determines the teams to which a group is mapped. + """ # noqa: E501 + + is_for_all_teams: Optional[StrictBool] = Field( + default=None, description="If true, the group is mapped to all teams. ", alias="isForAllTeams" + ) + team_ids: Optional[Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=8192)]] = Field( + default=None, + description="The list of teams to which group is mapped. It is empty when 'isForAllTeams' is true, otherwise it should have at least 1 element. ", + alias="teamIds", + ) + __properties: ClassVar[List[str]] = ["isForAllTeams", "teamIds"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TeamMapV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TeamMapV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"isForAllTeams": obj.get("isForAllTeams"), "teamIds": obj.get("teamIds")}) + return _obj diff --git a/sysdig_client/models/team_response_v1.py b/sysdig_client/models/team_response_v1.py new file mode 100644 index 00000000..f69bdee3 --- /dev/null +++ b/sysdig_client/models/team_response_v1.py @@ -0,0 +1,205 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.additional_team_permissions_v1 import AdditionalTeamPermissionsV1 +from sysdig_client.models.product import Product +from sysdig_client.models.scope_v1 import ScopeV1 +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from sysdig_client.models.ui_settings_v1 import UiSettingsV1 +from typing import Set +from typing_extensions import Self + + +class TeamResponseV1(BaseModel): + """ + TeamResponseV1 + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the team. It must be unique." + ) + description: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="A description of the team explaining what is it used for." + ) + is_immutable_team: Optional[StrictBool] = Field( + default=None, + description="Specifies if the team is immutable. This is true if the team was created by the system with full access. It cannot be modified.", + alias="isImmutableTeam", + ) + is_default_team: Optional[StrictBool] = Field( + default=None, + description="Specifies if the team is the default team. The default team is used to automatically assign new users to a team.", + alias="isDefaultTeam", + ) + standard_team_role: Optional[TeamRoleV1] = Field( + default=None, + description="The standard team role assigned by default to users added to this team. Mutually exclusive with 'customTeamRoleId'. ", + alias="standardTeamRole", + ) + custom_team_role_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, + description="The custom team role assigned by default to users added to this team. Mutually exclusive with 'standardTeamRoleId'. ", + alias="customTeamRoleId", + ) + product: Optional[Product] = Field(default=None, description="The product to which the team is assigned to.") + ui_settings: Optional[UiSettingsV1] = Field(default=None, alias="uiSettings") + is_all_zones: Optional[StrictBool] = Field( + default=None, + description="'True' if the users belonging to this team have access to all zones. Mutually exclusive with 'zoneIds'. ", + alias="isAllZones", + ) + zone_ids: Optional[Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=8192)]] = Field( + default=None, + description="The list of zones that users assigned to this team will have access to. Mutually exclusive with 'allZones'. ", + alias="zoneIds", + ) + scopes: Optional[Annotated[List[ScopeV1], Field(max_length=512)]] = Field( + default=None, description="The scopes available to the users of this team." + ) + additional_team_permissions: Optional[AdditionalTeamPermissionsV1] = Field(default=None, alias="additionalTeamPermissions") + date_created: Optional[datetime] = Field( + default=None, description="The date (in ISO 8601 format) when this team was created.", alias="dateCreated" + ) + last_updated: Optional[datetime] = Field( + default=None, description="The date (in ISO 8601 format) when this team was last updated.", alias="lastUpdated" + ) + version: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + __properties: ClassVar[List[str]] = [ + "id", + "name", + "description", + "isImmutableTeam", + "isDefaultTeam", + "standardTeamRole", + "customTeamRoleId", + "product", + "uiSettings", + "isAllZones", + "zoneIds", + "scopes", + "additionalTeamPermissions", + "dateCreated", + "lastUpdated", + "version", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TeamResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of ui_settings + if self.ui_settings: + _dict["uiSettings"] = self.ui_settings.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in scopes (list) + _items = [] + if self.scopes: + for _item_scopes in self.scopes: + if _item_scopes: + _items.append(_item_scopes.to_dict()) + _dict["scopes"] = _items + # override the default output from pydantic by calling `to_dict()` of additional_team_permissions + if self.additional_team_permissions: + _dict["additionalTeamPermissions"] = self.additional_team_permissions.to_dict() + # set to None if description (nullable) is None + # and model_fields_set contains the field + if self.description is None and "description" in self.model_fields_set: + _dict["description"] = None + + # set to None if standard_team_role (nullable) is None + # and model_fields_set contains the field + if self.standard_team_role is None and "standard_team_role" in self.model_fields_set: + _dict["standardTeamRole"] = None + + # set to None if custom_team_role_id (nullable) is None + # and model_fields_set contains the field + if self.custom_team_role_id is None and "custom_team_role_id" in self.model_fields_set: + _dict["customTeamRoleId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TeamResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "name": obj.get("name"), + "description": obj.get("description"), + "isImmutableTeam": obj.get("isImmutableTeam"), + "isDefaultTeam": obj.get("isDefaultTeam"), + "standardTeamRole": obj.get("standardTeamRole"), + "customTeamRoleId": obj.get("customTeamRoleId"), + "product": obj.get("product"), + "uiSettings": UiSettingsV1.from_dict(obj["uiSettings"]) if obj.get("uiSettings") is not None else None, + "isAllZones": obj.get("isAllZones"), + "zoneIds": obj.get("zoneIds"), + "scopes": [ScopeV1.from_dict(_item) for _item in obj["scopes"]] if obj.get("scopes") is not None else None, + "additionalTeamPermissions": AdditionalTeamPermissionsV1.from_dict(obj["additionalTeamPermissions"]) + if obj.get("additionalTeamPermissions") is not None + else None, + "dateCreated": obj.get("dateCreated"), + "lastUpdated": obj.get("lastUpdated"), + "version": obj.get("version"), + } + ) + return _obj diff --git a/sysdig_client/models/team_role_v1.py b/sysdig_client/models/team_role_v1.py new file mode 100644 index 00000000..87dd6f1d --- /dev/null +++ b/sysdig_client/models/team_role_v1.py @@ -0,0 +1,39 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class TeamRoleV1(str, Enum): + """ + The standard team role provided by Sysdig. + """ + + """ + allowed enum values + """ + ROLE_TEAM_NONE = "ROLE_TEAM_NONE" + ROLE_TEAM_READ = "ROLE_TEAM_READ" + ROLE_TEAM_SERVICE_MANAGER = "ROLE_TEAM_SERVICE_MANAGER" + ROLE_TEAM_STANDARD = "ROLE_TEAM_STANDARD" + ROLE_TEAM_EDIT = "ROLE_TEAM_EDIT" + ROLE_TEAM_MANAGER = "ROLE_TEAM_MANAGER" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of TeamRoleV1 from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/team_user_response_v1.py b/sysdig_client/models/team_user_response_v1.py new file mode 100644 index 00000000..bd7eaf8b --- /dev/null +++ b/sysdig_client/models/team_user_response_v1.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from typing import Set +from typing_extensions import Self + + +class TeamUserResponseV1(BaseModel): + """ + TeamUserResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ", alias="teamId") + user_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ", alias="userId") + standard_team_role: Optional[TeamRoleV1] = Field(default=None, alias="standardTeamRole") + custom_team_role_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, description=" ", alias="customTeamRoleId" + ) + __properties: ClassVar[List[str]] = ["teamId", "userId", "standardTeamRole", "customTeamRoleId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TeamUserResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if standard_team_role (nullable) is None + # and model_fields_set contains the field + if self.standard_team_role is None and "standard_team_role" in self.model_fields_set: + _dict["standardTeamRole"] = None + + # set to None if custom_team_role_id (nullable) is None + # and model_fields_set contains the field + if self.custom_team_role_id is None and "custom_team_role_id" in self.model_fields_set: + _dict["customTeamRoleId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TeamUserResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "userId": obj.get("userId"), + "standardTeamRole": obj.get("standardTeamRole"), + "customTeamRoleId": obj.get("customTeamRoleId"), + } + ) + return _obj diff --git a/sysdig_client/models/time_frame.py b/sysdig_client/models/time_frame.py new file mode 100644 index 00000000..338a99df --- /dev/null +++ b/sysdig_client/models/time_frame.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class TimeFrame(BaseModel): + """ + The start and end time of the request + """ # noqa: E501 + + var_from: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ", alias="from") + to: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + __properties: ClassVar[List[str]] = ["from", "to"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TimeFrame from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TimeFrame from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"from": obj.get("from"), "to": obj.get("to")}) + return _obj diff --git a/sysdig_client/models/types.py b/sysdig_client/models/types.py new file mode 100644 index 00000000..0bb120ae --- /dev/null +++ b/sysdig_client/models/types.py @@ -0,0 +1,37 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class Types(str, Enum): + """ + The entry types to filter. This query parameter can be set multiple times to filter for different entry types. + """ + + """ + allowed enum values + """ + COMMANDS = "commands" + CONNECTIONS = "connections" + KUBERNETES = "kubernetes" + FILEACCESSES = "fileaccesses" + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of Types from a JSON string""" + return cls(json.loads(json_str)) diff --git a/sysdig_client/models/ui_settings_v1.py b/sysdig_client/models/ui_settings_v1.py new file mode 100644 index 00000000..27faebf9 --- /dev/null +++ b/sysdig_client/models/ui_settings_v1.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.entry_point_v1 import EntryPointV1 +from typing import Set +from typing_extensions import Self + + +class UiSettingsV1(BaseModel): + """ + UI related settings. + """ # noqa: E501 + + entry_point: Optional[EntryPointV1] = Field(default=None, alias="entryPoint") + theme: Optional[Annotated[str, Field(strict=True, max_length=7)]] = Field( + default=None, description="The color assigned to the team." + ) + __properties: ClassVar[List[str]] = ["entryPoint", "theme"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UiSettingsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of entry_point + if self.entry_point: + _dict["entryPoint"] = self.entry_point.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UiSettingsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "entryPoint": EntryPointV1.from_dict(obj["entryPoint"]) if obj.get("entryPoint") is not None else None, + "theme": obj.get("theme"), + } + ) + return _obj diff --git a/sysdig_client/models/unit_pricing_v1.py b/sysdig_client/models/unit_pricing_v1.py new file mode 100644 index 00000000..27f386e4 --- /dev/null +++ b/sysdig_client/models/unit_pricing_v1.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing import Set +from typing_extensions import Self + + +class UnitPricingV1(BaseModel): + """ + The unit pricing configuration used to compute costs. + """ # noqa: E501 + + cpu: Union[StrictFloat, StrictInt] = Field(description="Hourly cost of one CPU.") + ram: Union[StrictFloat, StrictInt] = Field(description="Hourly cost of one GB of RAM.") + storage: Union[StrictFloat, StrictInt] = Field(description="Hourly cost of one GB of storage.") + spot_cpu: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Hourly cost of one CPU for a spot node.", alias="spotCpu" + ) + spot_ram: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Hourly cost of one GB of RAM for a spot node.", alias="spotRam" + ) + __properties: ClassVar[List[str]] = ["cpu", "ram", "storage", "spotCpu", "spotRam"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UnitPricingV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if spot_cpu (nullable) is None + # and model_fields_set contains the field + if self.spot_cpu is None and "spot_cpu" in self.model_fields_set: + _dict["spotCpu"] = None + + # set to None if spot_ram (nullable) is None + # and model_fields_set contains the field + if self.spot_ram is None and "spot_ram" in self.model_fields_set: + _dict["spotRam"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UnitPricingV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "cpu": obj.get("cpu"), + "ram": obj.get("ram"), + "storage": obj.get("storage"), + "spotCpu": obj.get("spotCpu"), + "spotRam": obj.get("spotRam"), + } + ) + return _obj diff --git a/sysdig_client/models/update_access_key_request_v1.py b/sysdig_client/models/update_access_key_request_v1.py new file mode 100644 index 00000000..9643f6f5 --- /dev/null +++ b/sysdig_client/models/update_access_key_request_v1.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UpdateAccessKeyRequestV1(BaseModel): + """ + Update access key request + """ # noqa: E501 + + agent_limit: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="Maximum number of agents that can be connected with the access key", alias="agentLimit" + ) + agent_reservation: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="Number of agents that are guaranteed to be available for the access key", + alias="agentReservation", + ) + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="ID of team that owns the access key", alias="teamId" + ) + is_enabled: StrictBool = Field( + description="Flag that indicates if the access key should be disabled or enabled", alias="isEnabled" + ) + metadata: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=76)]]] = Field( + default=None, + description="Access key metadata (maximum of 20 key-value pairs where key can be up to 25 characters long and value can be up to 50 characters long)", + ) + __properties: ClassVar[List[str]] = ["agentLimit", "agentReservation", "teamId", "isEnabled", "metadata"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateAccessKeyRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateAccessKeyRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "agentLimit": obj.get("agentLimit"), + "agentReservation": obj.get("agentReservation"), + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled"), + "metadata": obj.get("metadata"), + } + ) + return _obj diff --git a/sysdig_client/models/update_amazon_sqs_integration_request.py b/sysdig_client/models/update_amazon_sqs_integration_request.py new file mode 100644 index 00000000..2c83c8e7 --- /dev/null +++ b/sysdig_client/models/update_amazon_sqs_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.amazon_sqs_update_connection_info import AmazonSQSUpdateConnectionInfo +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class UpdateAmazonSqsIntegrationRequest(BaseModel): + """ + Update Amazon SQS Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: AmazonSQSUpdateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateAmazonSqsIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateAmazonSqsIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": AmazonSQSUpdateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_chronicle_integration_conn_info.py b/sysdig_client/models/update_chronicle_integration_conn_info.py new file mode 100644 index 00000000..8b5d5b46 --- /dev/null +++ b/sysdig_client/models/update_chronicle_integration_conn_info.py @@ -0,0 +1,99 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UpdateChronicleIntegrationConnInfo(BaseModel): + """ + Update Chronicle Integration Connection Info + """ # noqa: E501 + + region: Optional[StrictStr] = Field(default="us", description="The target region") + api_key: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The Chronicle v1 API key", alias="apiKey" + ) + __properties: ClassVar[List[str]] = ["region", "apiKey"] + + @field_validator("region") + def region_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["us", "europe", "asia-southeast1"]): + raise ValueError("must be one of enum values ('us', 'europe', 'asia-southeast1')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateChronicleIntegrationConnInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateChronicleIntegrationConnInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"region": obj.get("region") if obj.get("region") is not None else "us", "apiKey": obj.get("apiKey")} + ) + return _obj diff --git a/sysdig_client/models/update_chronicle_integration_conn_info_v2.py b/sysdig_client/models/update_chronicle_integration_conn_info_v2.py new file mode 100644 index 00000000..446f4da4 --- /dev/null +++ b/sysdig_client/models/update_chronicle_integration_conn_info_v2.py @@ -0,0 +1,126 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UpdateChronicleIntegrationConnInfoV2(BaseModel): + """ + Update Chronicle Integration Connection V2 Info + """ # noqa: E501 + + region: Optional[StrictStr] = Field(default="us", description="The target region") + chronicle_customer_id: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="Unique identifier (UUID) corresponding to a particular Chronicle instance", alias="chronicleCustomerId" + ) + namespace: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="User-configured environment namespace to identify the data domain the logs originated from" + ) + credentials_o_auth2: Optional[Annotated[str, Field(strict=True, max_length=1048576)]] = Field( + default=None, description="The Chronicle v2 OAuth2 credentials", alias="credentialsOAuth2" + ) + __properties: ClassVar[List[str]] = ["region", "chronicleCustomerId", "namespace", "credentialsOAuth2"] + + @field_validator("region") + def region_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set( + [ + "us", + "europe", + "europe-west2", + "europe-west3", + "europe-west6", + "asia-southeast1", + "asia-south1", + "asia-northeast1", + "me-west1", + "me-central2", + "australia-southeast1", + ] + ): + raise ValueError( + "must be one of enum values ('us', 'europe', 'europe-west2', 'europe-west3', 'europe-west6', 'asia-southeast1', 'asia-south1', 'asia-northeast1', 'me-west1', 'me-central2', 'australia-southeast1')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateChronicleIntegrationConnInfoV2 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateChronicleIntegrationConnInfoV2 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "region": obj.get("region") if obj.get("region") is not None else "us", + "chronicleCustomerId": obj.get("chronicleCustomerId"), + "namespace": obj.get("namespace"), + "credentialsOAuth2": obj.get("credentialsOAuth2"), + } + ) + return _obj diff --git a/sysdig_client/models/update_chronicle_integration_request.py b/sysdig_client/models/update_chronicle_integration_request.py new file mode 100644 index 00000000..b2a5d7eb --- /dev/null +++ b/sysdig_client/models/update_chronicle_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.chronicle_update_connection_info import ChronicleUpdateConnectionInfo +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class UpdateChronicleIntegrationRequest(BaseModel): + """ + Update Chronicle Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: ChronicleUpdateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateChronicleIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateChronicleIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": ChronicleUpdateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_custom_webhook_notification_channel_request_v1.py b/sysdig_client/models/update_custom_webhook_notification_channel_request_v1.py new file mode 100644 index 00000000..64b4af8b --- /dev/null +++ b/sysdig_client/models/update_custom_webhook_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.custom_webhook_notification_channel_options_v1 import CustomWebhookNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdateCustomWebhookNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateCustomWebhookNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: CustomWebhookNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "type", + "version", + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateCustomWebhookNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateCustomWebhookNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "version": obj.get("version"), + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "options": CustomWebhookNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_elasticsearch_integration_request.py b/sysdig_client/models/update_elasticsearch_integration_request.py new file mode 100644 index 00000000..dbdffd55 --- /dev/null +++ b/sysdig_client/models/update_elasticsearch_integration_request.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.update_elasticsearch_integration_request_all_of_connection_info import ( + UpdateElasticsearchIntegrationRequestAllOfConnectionInfo, +) +from typing import Set +from typing_extensions import Self + + +class UpdateElasticsearchIntegrationRequest(BaseModel): + """ + Update Elasticsearch Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: UpdateElasticsearchIntegrationRequestAllOfConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateElasticsearchIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateElasticsearchIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": UpdateElasticsearchIntegrationRequestAllOfConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_elasticsearch_integration_request_all_of_connection_info.py b/sysdig_client/models/update_elasticsearch_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..dfe85a8d --- /dev/null +++ b/sysdig_client/models/update_elasticsearch_integration_request_all_of_connection_info.py @@ -0,0 +1,123 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UpdateElasticsearchIntegrationRequestAllOfConnectionInfo(BaseModel): + """ + UpdateElasticsearchIntegrationRequestAllOfConnectionInfo + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Elasticsearch instance endpoint URL") + index: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Name of the index to store the data in") + is_insecure: Optional[StrictBool] = Field(default=False, description="Don't verify TLS certificate", alias="isInsecure") + auth: Optional[StrictStr] = Field(default=None, description="Authentication method") + format: Optional[StrictStr] = Field( + default=None, + description='If specified, transforms `content.fields` and `labels` * `KV_PAIRS` - from objects (i.e. `{"foo": "bar", ...}`) to arrays of objects with "key" and "value" properties {i.e. `[{"key" : "foo", "value": "bar"}, ...]`) ', + ) + secret: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="Authentication secret. To be set if auth is specified" + ) + __properties: ClassVar[List[str]] = ["endpoint", "index", "isInsecure", "auth", "format", "secret"] + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["BASIC_AUTH", "BEARER_TOKEN"]): + raise ValueError("must be one of enum values ('BASIC_AUTH', 'BEARER_TOKEN')") + return value + + @field_validator("format") + def format_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["KV_PAIRS"]): + raise ValueError("must be one of enum values ('KV_PAIRS')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateElasticsearchIntegrationRequestAllOfConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateElasticsearchIntegrationRequestAllOfConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "index": obj.get("index"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "auth": obj.get("auth"), + "format": obj.get("format"), + "secret": obj.get("secret"), + } + ) + return _obj diff --git a/sysdig_client/models/update_email_notification_channel_request_v1.py b/sysdig_client/models/update_email_notification_channel_request_v1.py new file mode 100644 index 00000000..d6f232ee --- /dev/null +++ b/sysdig_client/models/update_email_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.email_notification_channel_options_v1 import EmailNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdateEmailNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateEmailNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: EmailNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateEmailNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateEmailNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": EmailNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_gchat_notification_channel_request_v1.py b/sysdig_client/models/update_gchat_notification_channel_request_v1.py new file mode 100644 index 00000000..d3ab54bf --- /dev/null +++ b/sysdig_client/models/update_gchat_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.gchat_notification_channel_options_v1 import GchatNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdateGchatNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateGchatNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: GchatNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateGchatNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateGchatNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": GchatNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_google_pub_sub_integration_request.py b/sysdig_client/models/update_google_pub_sub_integration_request.py new file mode 100644 index 00000000..54146979 --- /dev/null +++ b/sysdig_client/models/update_google_pub_sub_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.google_pub_sub_create_connection_info1 import GooglePubSubCreateConnectionInfo1 +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class UpdateGooglePubSubIntegrationRequest(BaseModel): + """ + Update Google Pub/Sub Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: GooglePubSubCreateConnectionInfo1 = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateGooglePubSubIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateGooglePubSubIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": GooglePubSubCreateConnectionInfo1.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_google_scc_integration_request.py b/sysdig_client/models/update_google_scc_integration_request.py new file mode 100644 index 00000000..5feaf4fa --- /dev/null +++ b/sysdig_client/models/update_google_scc_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.google_scc_create_connection_info1 import GoogleSCCCreateConnectionInfo1 +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class UpdateGoogleSccIntegrationRequest(BaseModel): + """ + Update Google SCC Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: GoogleSCCCreateConnectionInfo1 = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateGoogleSccIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateGoogleSccIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": GoogleSCCCreateConnectionInfo1.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_group_mapping_request_v1.py b/sysdig_client/models/update_group_mapping_request_v1.py new file mode 100644 index 00000000..5c3a7e62 --- /dev/null +++ b/sysdig_client/models/update_group_mapping_request_v1.py @@ -0,0 +1,125 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.team_map_v1 import TeamMapV1 +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from typing import Set +from typing_extensions import Self + + +class UpdateGroupMappingRequestV1(BaseModel): + """ + UpdateGroupMappingRequestV1 + """ # noqa: E501 + + group_name: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="The group name matching the external provider name.", alias="groupName" + ) + standard_team_role: Optional[TeamRoleV1] = Field( + default=None, + description="The standard team role assigned for the user in this team. **Mutually exclusive with customTeamRoleId**. ", + alias="standardTeamRole", + ) + custom_team_role_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, + description="The custom team role ID assigned for the user in this team. **Mutually exclusive with standardTeamRole**. ", + alias="customTeamRoleId", + ) + is_admin: StrictBool = Field(description="Flag that indicates if the group is an admin group.", alias="isAdmin") + team_map: TeamMapV1 = Field(alias="teamMap") + weight: Annotated[int, Field(le=32767, strict=True, ge=1)] = Field( + description="The weight of the group mapping that is used to determine the priority - a lower number has higher priority." + ) + __properties: ClassVar[List[str]] = ["groupName", "standardTeamRole", "customTeamRoleId", "isAdmin", "teamMap", "weight"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateGroupMappingRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of team_map + if self.team_map: + _dict["teamMap"] = self.team_map.to_dict() + # set to None if standard_team_role (nullable) is None + # and model_fields_set contains the field + if self.standard_team_role is None and "standard_team_role" in self.model_fields_set: + _dict["standardTeamRole"] = None + + # set to None if custom_team_role_id (nullable) is None + # and model_fields_set contains the field + if self.custom_team_role_id is None and "custom_team_role_id" in self.model_fields_set: + _dict["customTeamRoleId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateGroupMappingRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "groupName": obj.get("groupName"), + "standardTeamRole": obj.get("standardTeamRole"), + "customTeamRoleId": obj.get("customTeamRoleId"), + "isAdmin": obj.get("isAdmin"), + "teamMap": TeamMapV1.from_dict(obj["teamMap"]) if obj.get("teamMap") is not None else None, + "weight": obj.get("weight") if obj.get("weight") is not None else 32767, + } + ) + return _obj diff --git a/sysdig_client/models/update_ibm_event_notifications_notification_channel_request_v1.py b/sysdig_client/models/update_ibm_event_notifications_notification_channel_request_v1.py new file mode 100644 index 00000000..9eea5b7f --- /dev/null +++ b/sysdig_client/models/update_ibm_event_notifications_notification_channel_request_v1.py @@ -0,0 +1,135 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.ibm_event_notifications_notification_channel_options_v1 import ( + IbmEventNotificationsNotificationChannelOptionsV1, +) +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdateIbmEventNotificationsNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateIbmEventNotificationsNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: IbmEventNotificationsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateIbmEventNotificationsNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateIbmEventNotificationsNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": IbmEventNotificationsNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_inhibition_rule_request_v1.py b/sysdig_client/models/update_inhibition_rule_request_v1.py new file mode 100644 index 00000000..0f726149 --- /dev/null +++ b/sysdig_client/models/update_inhibition_rule_request_v1.py @@ -0,0 +1,158 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.label_matcher_v1 import LabelMatcherV1 +from typing import Set +from typing_extensions import Self + + +class UpdateInhibitionRuleRequestV1(BaseModel): + """ + UpdateInhibitionRuleRequestV1 + """ # noqa: E501 + + is_enabled: Optional[StrictBool] = Field( + default=True, description="Indicates if the inhibition rule is enabled or not.", alias="isEnabled" + ) + name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="Name of the inhibition rule. If provided, must be unique." + ) + description: Optional[Annotated[str, Field(strict=True, max_length=8192)]] = Field( + default=None, description="Description of the inhibition rule." + ) + source_matchers: Annotated[List[LabelMatcherV1], Field(min_length=1, max_length=100)] = Field( + description="List of source matchers for which one or more alerts have to exist for the inhibition to take effect.", + alias="sourceMatchers", + ) + target_matchers: Annotated[List[LabelMatcherV1], Field(min_length=1, max_length=100)] = Field( + description="List of target matchers that have to be fulfilled by the target alerts to be muted.", alias="targetMatchers" + ) + equal: Optional[ + Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=1024)]], Field(min_length=1, max_length=100)] + ] = Field( + default=None, + description="List of labels that must have an equal value in the source and target alert for the inhibition to take effect.", + ) + version: Annotated[int, Field(strict=True, ge=0)] = Field(description="The current version of the resource.") + __properties: ClassVar[List[str]] = [ + "isEnabled", + "name", + "description", + "sourceMatchers", + "targetMatchers", + "equal", + "version", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateInhibitionRuleRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in source_matchers (list) + _items = [] + if self.source_matchers: + for _item_source_matchers in self.source_matchers: + if _item_source_matchers: + _items.append(_item_source_matchers.to_dict()) + _dict["sourceMatchers"] = _items + # override the default output from pydantic by calling `to_dict()` of each item in target_matchers (list) + _items = [] + if self.target_matchers: + for _item_target_matchers in self.target_matchers: + if _item_target_matchers: + _items.append(_item_target_matchers.to_dict()) + _dict["targetMatchers"] = _items + # set to None if name (nullable) is None + # and model_fields_set contains the field + if self.name is None and "name" in self.model_fields_set: + _dict["name"] = None + + # set to None if description (nullable) is None + # and model_fields_set contains the field + if self.description is None and "description" in self.model_fields_set: + _dict["description"] = None + + # set to None if equal (nullable) is None + # and model_fields_set contains the field + if self.equal is None and "equal" in self.model_fields_set: + _dict["equal"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateInhibitionRuleRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "name": obj.get("name"), + "description": obj.get("description"), + "sourceMatchers": [LabelMatcherV1.from_dict(_item) for _item in obj["sourceMatchers"]] + if obj.get("sourceMatchers") is not None + else None, + "targetMatchers": [LabelMatcherV1.from_dict(_item) for _item in obj["targetMatchers"]] + if obj.get("targetMatchers") is not None + else None, + "equal": obj.get("equal"), + "version": obj.get("version"), + } + ) + return _obj diff --git a/sysdig_client/models/update_integration_request.py b/sysdig_client/models/update_integration_request.py new file mode 100644 index 00000000..1cd9e669 --- /dev/null +++ b/sysdig_client/models/update_integration_request.py @@ -0,0 +1,348 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from sysdig_client.models.update_amazon_sqs_integration_request import UpdateAmazonSqsIntegrationRequest +from sysdig_client.models.update_chronicle_integration_request import UpdateChronicleIntegrationRequest +from sysdig_client.models.update_elasticsearch_integration_request import UpdateElasticsearchIntegrationRequest +from sysdig_client.models.update_google_pub_sub_integration_request import UpdateGooglePubSubIntegrationRequest +from sysdig_client.models.update_google_scc_integration_request import UpdateGoogleSccIntegrationRequest +from sysdig_client.models.update_kafka_integration_request import UpdateKafkaIntegrationRequest +from sysdig_client.models.update_mcm_integration_request import UpdateMcmIntegrationRequest +from sysdig_client.models.update_microsoft_sentinel_integration_request import UpdateMicrosoftSentinelIntegrationRequest +from sysdig_client.models.update_qradar_integration_request import UpdateQradarIntegrationRequest +from sysdig_client.models.update_splunk_integration_request import UpdateSplunkIntegrationRequest +from sysdig_client.models.update_syslog_integration_request import UpdateSyslogIntegrationRequest +from sysdig_client.models.update_webhook_integration_request import UpdateWebhookIntegrationRequest +from typing import Union, Set, Dict +from typing_extensions import Literal, Self + +UPDATEINTEGRATIONREQUEST_ONE_OF_SCHEMAS = [ + "UpdateAmazonSqsIntegrationRequest", + "UpdateChronicleIntegrationRequest", + "UpdateElasticsearchIntegrationRequest", + "UpdateGooglePubSubIntegrationRequest", + "UpdateGoogleSccIntegrationRequest", + "UpdateKafkaIntegrationRequest", + "UpdateMcmIntegrationRequest", + "UpdateMicrosoftSentinelIntegrationRequest", + "UpdateQradarIntegrationRequest", + "UpdateSplunkIntegrationRequest", + "UpdateSyslogIntegrationRequest", + "UpdateWebhookIntegrationRequest", +] + + +class UpdateIntegrationRequest(BaseModel): + """ + Update Integration Request + """ + + # data type: UpdateChronicleIntegrationRequest + oneof_schema_1_validator: Optional[UpdateChronicleIntegrationRequest] = None + # data type: UpdateElasticsearchIntegrationRequest + oneof_schema_2_validator: Optional[UpdateElasticsearchIntegrationRequest] = None + # data type: UpdateGooglePubSubIntegrationRequest + oneof_schema_3_validator: Optional[UpdateGooglePubSubIntegrationRequest] = None + # data type: UpdateKafkaIntegrationRequest + oneof_schema_4_validator: Optional[UpdateKafkaIntegrationRequest] = None + # data type: UpdateMcmIntegrationRequest + oneof_schema_5_validator: Optional[UpdateMcmIntegrationRequest] = None + # data type: UpdateQradarIntegrationRequest + oneof_schema_6_validator: Optional[UpdateQradarIntegrationRequest] = None + # data type: UpdateGoogleSccIntegrationRequest + oneof_schema_7_validator: Optional[UpdateGoogleSccIntegrationRequest] = None + # data type: UpdateMicrosoftSentinelIntegrationRequest + oneof_schema_8_validator: Optional[UpdateMicrosoftSentinelIntegrationRequest] = None + # data type: UpdateSplunkIntegrationRequest + oneof_schema_9_validator: Optional[UpdateSplunkIntegrationRequest] = None + # data type: UpdateAmazonSqsIntegrationRequest + oneof_schema_10_validator: Optional[UpdateAmazonSqsIntegrationRequest] = None + # data type: UpdateSyslogIntegrationRequest + oneof_schema_11_validator: Optional[UpdateSyslogIntegrationRequest] = None + # data type: UpdateWebhookIntegrationRequest + oneof_schema_12_validator: Optional[UpdateWebhookIntegrationRequest] = None + actual_instance: Optional[ + Union[ + UpdateAmazonSqsIntegrationRequest, + UpdateChronicleIntegrationRequest, + UpdateElasticsearchIntegrationRequest, + UpdateGooglePubSubIntegrationRequest, + UpdateGoogleSccIntegrationRequest, + UpdateKafkaIntegrationRequest, + UpdateMcmIntegrationRequest, + UpdateMicrosoftSentinelIntegrationRequest, + UpdateQradarIntegrationRequest, + UpdateSplunkIntegrationRequest, + UpdateSyslogIntegrationRequest, + UpdateWebhookIntegrationRequest, + ] + ] = None + one_of_schemas: Set[str] = { + "UpdateAmazonSqsIntegrationRequest", + "UpdateChronicleIntegrationRequest", + "UpdateElasticsearchIntegrationRequest", + "UpdateGooglePubSubIntegrationRequest", + "UpdateGoogleSccIntegrationRequest", + "UpdateKafkaIntegrationRequest", + "UpdateMcmIntegrationRequest", + "UpdateMicrosoftSentinelIntegrationRequest", + "UpdateQradarIntegrationRequest", + "UpdateSplunkIntegrationRequest", + "UpdateSyslogIntegrationRequest", + "UpdateWebhookIntegrationRequest", + } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + discriminator_value_class_map: Dict[str, str] = {} + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = UpdateIntegrationRequest.model_construct() + error_messages = [] + match = 0 + # validate data type: UpdateChronicleIntegrationRequest + if not isinstance(v, UpdateChronicleIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateChronicleIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateElasticsearchIntegrationRequest + if not isinstance(v, UpdateElasticsearchIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateElasticsearchIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateGooglePubSubIntegrationRequest + if not isinstance(v, UpdateGooglePubSubIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateGooglePubSubIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateKafkaIntegrationRequest + if not isinstance(v, UpdateKafkaIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateKafkaIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateMcmIntegrationRequest + if not isinstance(v, UpdateMcmIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateMcmIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateQradarIntegrationRequest + if not isinstance(v, UpdateQradarIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateQradarIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateGoogleSccIntegrationRequest + if not isinstance(v, UpdateGoogleSccIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateGoogleSccIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateMicrosoftSentinelIntegrationRequest + if not isinstance(v, UpdateMicrosoftSentinelIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateMicrosoftSentinelIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateSplunkIntegrationRequest + if not isinstance(v, UpdateSplunkIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateSplunkIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateAmazonSqsIntegrationRequest + if not isinstance(v, UpdateAmazonSqsIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateAmazonSqsIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateSyslogIntegrationRequest + if not isinstance(v, UpdateSyslogIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateSyslogIntegrationRequest`") + else: + match += 1 + # validate data type: UpdateWebhookIntegrationRequest + if not isinstance(v, UpdateWebhookIntegrationRequest): + error_messages.append(f"Error! Input type `{type(v)}` is not `UpdateWebhookIntegrationRequest`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in UpdateIntegrationRequest with oneOf schemas: UpdateAmazonSqsIntegrationRequest, UpdateChronicleIntegrationRequest, UpdateElasticsearchIntegrationRequest, UpdateGooglePubSubIntegrationRequest, UpdateGoogleSccIntegrationRequest, UpdateKafkaIntegrationRequest, UpdateMcmIntegrationRequest, UpdateMicrosoftSentinelIntegrationRequest, UpdateQradarIntegrationRequest, UpdateSplunkIntegrationRequest, UpdateSyslogIntegrationRequest, UpdateWebhookIntegrationRequest. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in UpdateIntegrationRequest with oneOf schemas: UpdateAmazonSqsIntegrationRequest, UpdateChronicleIntegrationRequest, UpdateElasticsearchIntegrationRequest, UpdateGooglePubSubIntegrationRequest, UpdateGoogleSccIntegrationRequest, UpdateKafkaIntegrationRequest, UpdateMcmIntegrationRequest, UpdateMicrosoftSentinelIntegrationRequest, UpdateQradarIntegrationRequest, UpdateSplunkIntegrationRequest, UpdateSyslogIntegrationRequest, UpdateWebhookIntegrationRequest. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into UpdateChronicleIntegrationRequest + try: + instance.actual_instance = UpdateChronicleIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateElasticsearchIntegrationRequest + try: + instance.actual_instance = UpdateElasticsearchIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateGooglePubSubIntegrationRequest + try: + instance.actual_instance = UpdateGooglePubSubIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateKafkaIntegrationRequest + try: + instance.actual_instance = UpdateKafkaIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateMcmIntegrationRequest + try: + instance.actual_instance = UpdateMcmIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateQradarIntegrationRequest + try: + instance.actual_instance = UpdateQradarIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateGoogleSccIntegrationRequest + try: + instance.actual_instance = UpdateGoogleSccIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateMicrosoftSentinelIntegrationRequest + try: + instance.actual_instance = UpdateMicrosoftSentinelIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateSplunkIntegrationRequest + try: + instance.actual_instance = UpdateSplunkIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateAmazonSqsIntegrationRequest + try: + instance.actual_instance = UpdateAmazonSqsIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateSyslogIntegrationRequest + try: + instance.actual_instance = UpdateSyslogIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into UpdateWebhookIntegrationRequest + try: + instance.actual_instance = UpdateWebhookIntegrationRequest.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into UpdateIntegrationRequest with oneOf schemas: UpdateAmazonSqsIntegrationRequest, UpdateChronicleIntegrationRequest, UpdateElasticsearchIntegrationRequest, UpdateGooglePubSubIntegrationRequest, UpdateGoogleSccIntegrationRequest, UpdateKafkaIntegrationRequest, UpdateMcmIntegrationRequest, UpdateMicrosoftSentinelIntegrationRequest, UpdateQradarIntegrationRequest, UpdateSplunkIntegrationRequest, UpdateSyslogIntegrationRequest, UpdateWebhookIntegrationRequest. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into UpdateIntegrationRequest with oneOf schemas: UpdateAmazonSqsIntegrationRequest, UpdateChronicleIntegrationRequest, UpdateElasticsearchIntegrationRequest, UpdateGooglePubSubIntegrationRequest, UpdateGoogleSccIntegrationRequest, UpdateKafkaIntegrationRequest, UpdateMcmIntegrationRequest, UpdateMicrosoftSentinelIntegrationRequest, UpdateQradarIntegrationRequest, UpdateSplunkIntegrationRequest, UpdateSyslogIntegrationRequest, UpdateWebhookIntegrationRequest. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict( + self, + ) -> Optional[ + Union[ + Dict[str, Any], + UpdateAmazonSqsIntegrationRequest, + UpdateChronicleIntegrationRequest, + UpdateElasticsearchIntegrationRequest, + UpdateGooglePubSubIntegrationRequest, + UpdateGoogleSccIntegrationRequest, + UpdateKafkaIntegrationRequest, + UpdateMcmIntegrationRequest, + UpdateMicrosoftSentinelIntegrationRequest, + UpdateQradarIntegrationRequest, + UpdateSplunkIntegrationRequest, + UpdateSyslogIntegrationRequest, + UpdateWebhookIntegrationRequest, + ] + ]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) diff --git a/sysdig_client/models/update_integration_request_v1.py b/sysdig_client/models/update_integration_request_v1.py new file mode 100644 index 00000000..212de5ad --- /dev/null +++ b/sysdig_client/models/update_integration_request_v1.py @@ -0,0 +1,157 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UpdateIntegrationRequestV1(BaseModel): + """ + UpdateIntegrationRequestV1 + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Integration name.") + is_enabled: StrictBool = Field(description="Integration enabled status.", alias="isEnabled") + is_all_teams: StrictBool = Field( + description="If **true**, the integration will be enabled for all teams. If **false**, the integration will be enabled for the teams specified in the *teamIds* field. ", + alias="isAllTeams", + ) + team_ids: Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=500)] = Field( + description="List of Sysdig's internal team ids for which the integration will be enabled. This field is required if *isAllTeams* is **false**. ", + alias="teamIds", + ) + jira_url: Annotated[str, Field(strict=True, max_length=512)] = Field(description="Customer's Jira URL.", alias="jiraUrl") + jira_email: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="The user email associated with the Jira account.", alias="jiraEmail" + ) + jira_access_token: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="Jira access token for the provided Jira account.", alias="jiraAccessToken" + ) + jira_assignee: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + description='The default assignee Jira account ID for this integration. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-user-search/#api-group-user-search "Jira user documentation") for more info. ', + alias="jiraAssignee", + ) + jira_labels: Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=500)] = Field( + description='The list of Jira labels available for this integration. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-labels/#api-group-labels "Jira labels documentation") for more info. ', + alias="jiraLabels", + ) + parent_issue_type_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + description="Internal Sysdig's issue type id, which will act as a parent issue type for the integration. ", + alias="parentIssueTypeId", + ) + child_issue_type_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + description="Internal Sysdig's issue type id, which will act as a child issue type for the integration. ", + alias="childIssueTypeId", + ) + __properties: ClassVar[List[str]] = [ + "name", + "isEnabled", + "isAllTeams", + "teamIds", + "jiraUrl", + "jiraEmail", + "jiraAccessToken", + "jiraAssignee", + "jiraLabels", + "parentIssueTypeId", + "childIssueTypeId", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateIntegrationRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if jira_assignee (nullable) is None + # and model_fields_set contains the field + if self.jira_assignee is None and "jira_assignee" in self.model_fields_set: + _dict["jiraAssignee"] = None + + # set to None if parent_issue_type_id (nullable) is None + # and model_fields_set contains the field + if self.parent_issue_type_id is None and "parent_issue_type_id" in self.model_fields_set: + _dict["parentIssueTypeId"] = None + + # set to None if child_issue_type_id (nullable) is None + # and model_fields_set contains the field + if self.child_issue_type_id is None and "child_issue_type_id" in self.model_fields_set: + _dict["childIssueTypeId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateIntegrationRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled"), + "isAllTeams": obj.get("isAllTeams"), + "teamIds": obj.get("teamIds"), + "jiraUrl": obj.get("jiraUrl"), + "jiraEmail": obj.get("jiraEmail"), + "jiraAccessToken": obj.get("jiraAccessToken"), + "jiraAssignee": obj.get("jiraAssignee"), + "jiraLabels": obj.get("jiraLabels"), + "parentIssueTypeId": obj.get("parentIssueTypeId"), + "childIssueTypeId": obj.get("childIssueTypeId"), + } + ) + return _obj diff --git a/sysdig_client/models/update_ip_filter_v1.py b/sysdig_client/models/update_ip_filter_v1.py new file mode 100644 index 00000000..db15a103 --- /dev/null +++ b/sysdig_client/models/update_ip_filter_v1.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class UpdateIpFilterV1(BaseModel): + """ + Request to update IP filter. + """ # noqa: E501 + + ip_range: Annotated[str, Field(strict=True, max_length=43)] = Field(description="IP range in CIDR notation", alias="ipRange") + note: Annotated[str, Field(strict=True, max_length=128)] + is_enabled: StrictBool = Field(alias="isEnabled") + __properties: ClassVar[List[str]] = ["ipRange", "note", "isEnabled"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateIpFilterV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateIpFilterV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"ipRange": obj.get("ipRange"), "note": obj.get("note"), "isEnabled": obj.get("isEnabled")}) + return _obj diff --git a/sysdig_client/models/update_issue_type_request_v1.py b/sysdig_client/models/update_issue_type_request_v1.py new file mode 100644 index 00000000..dd9d6e26 --- /dev/null +++ b/sysdig_client/models/update_issue_type_request_v1.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class UpdateIssueTypeRequestV1(BaseModel): + """ + UpdateIssueTypeRequestV1 + """ # noqa: E501 + + jira_open_status_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description='Jira status id mapped to open status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. ', + alias="jiraOpenStatusId", + ) + jira_in_progress_status_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description='Jira status id mapped to in progress status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. ', + alias="jiraInProgressStatusId", + ) + jira_closed_status_id: Annotated[str, Field(strict=True, max_length=512)] = Field( + description='Jira status id mapped to closed status. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status/#api-group-status "Jira status documentation") for more info. ', + alias="jiraClosedStatusId", + ) + custom_field_ids: Annotated[List[Annotated[str, Field(strict=True, max_length=512)]], Field(max_length=500)] = Field( + description='List of supported custom field ids for the issue type. Please refer to the [Jira documentation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-createmeta-get "Jira issue type fields documentation") for more info. ', + alias="customFieldIds", + ) + __properties: ClassVar[List[str]] = ["jiraOpenStatusId", "jiraInProgressStatusId", "jiraClosedStatusId", "customFieldIds"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateIssueTypeRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateIssueTypeRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "jiraOpenStatusId": obj.get("jiraOpenStatusId"), + "jiraInProgressStatusId": obj.get("jiraInProgressStatusId"), + "jiraClosedStatusId": obj.get("jiraClosedStatusId"), + "customFieldIds": obj.get("customFieldIds"), + } + ) + return _obj diff --git a/sysdig_client/models/update_kafka_integration_request.py b/sysdig_client/models/update_kafka_integration_request.py new file mode 100644 index 00000000..3ae7080b --- /dev/null +++ b/sysdig_client/models/update_kafka_integration_request.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.update_kafka_integration_request_all_of_connection_info import ( + UpdateKafkaIntegrationRequestAllOfConnectionInfo, +) +from typing import Set +from typing_extensions import Self + + +class UpdateKafkaIntegrationRequest(BaseModel): + """ + Update Kafka Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: UpdateKafkaIntegrationRequestAllOfConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateKafkaIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateKafkaIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": UpdateKafkaIntegrationRequestAllOfConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_kafka_integration_request_all_of_connection_info.py b/sysdig_client/models/update_kafka_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..e56ee160 --- /dev/null +++ b/sysdig_client/models/update_kafka_integration_request_all_of_connection_info.py @@ -0,0 +1,159 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UpdateKafkaIntegrationRequestAllOfConnectionInfo(BaseModel): + """ + UpdateKafkaIntegrationRequestAllOfConnectionInfo + """ # noqa: E501 + + brokers: Annotated[List[Annotated[str, Field(strict=True, max_length=256)]], Field(max_length=32)] = Field( + description="Kafka server endpoint. A Kafka cluster may provide several brokers; it follows the 'hostname: port' (without protocol scheme)." + ) + topic: Annotated[str, Field(strict=True, max_length=256)] = Field( + description="Kafka topic where you want to store the forwarded data" + ) + balancer: Optional[StrictStr] = Field( + default="murmur2", + description="Algorithm that the client uses to multiplex data between the multiple Brokers. For compatibility with the Java client, Murmur2 is used as the default partitioner", + ) + compression: Optional[StrictStr] = Field(default=None, description="Compression standard used for the data") + is_tls_enabled: Optional[StrictBool] = Field(default=None, alias="isTlsEnabled") + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + auth: StrictStr = Field(description="The authentication method to optionally use. Currently supporting only GSSAPI") + principal: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI principal") + realm: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI realm") + service: Annotated[str, Field(strict=True, max_length=256)] = Field(description="GSSAPI Service name") + krb5: Annotated[str, Field(strict=True, max_length=1048576)] = Field(description="Kerberos krb5.conf file content for GSSAPI") + keytab: Optional[Annotated[str, Field(strict=True, max_length=1048576)]] = Field( + default=None, description="base64 encoded Kerberos keytab" + ) + __properties: ClassVar[List[str]] = [ + "brokers", + "topic", + "balancer", + "compression", + "isTlsEnabled", + "isInsecure", + "auth", + "principal", + "realm", + "service", + "krb5", + "keytab", + ] + + @field_validator("balancer") + def balancer_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["roundrobin", "leastbytes", "hash", "crc32", "murmur2"]): + raise ValueError("must be one of enum values ('roundrobin', 'leastbytes', 'hash', 'crc32', 'murmur2')") + return value + + @field_validator("compression") + def compression_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["lz4", "snappy", "zstd", "gzip"]): + raise ValueError("must be one of enum values ('lz4', 'snappy', 'zstd', 'gzip')") + return value + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["gssapi"]): + raise ValueError("must be one of enum values ('gssapi')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateKafkaIntegrationRequestAllOfConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateKafkaIntegrationRequestAllOfConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "brokers": obj.get("brokers"), + "topic": obj.get("topic"), + "balancer": obj.get("balancer") if obj.get("balancer") is not None else "murmur2", + "compression": obj.get("compression"), + "isTlsEnabled": obj.get("isTlsEnabled"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "auth": obj.get("auth"), + "principal": obj.get("principal"), + "realm": obj.get("realm"), + "service": obj.get("service"), + "krb5": obj.get("krb5"), + "keytab": obj.get("keytab"), + } + ) + return _obj diff --git a/sysdig_client/models/update_mcm_integration_request.py b/sysdig_client/models/update_mcm_integration_request.py new file mode 100644 index 00000000..be946101 --- /dev/null +++ b/sysdig_client/models/update_mcm_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info1 import IBMMulticloudCloudCreateConnectionInfo1 +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class UpdateMcmIntegrationRequest(BaseModel): + """ + Update IBM Multicloud Manager Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: IBMMulticloudCloudCreateConnectionInfo1 = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateMcmIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateMcmIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": IBMMulticloudCloudCreateConnectionInfo1.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_microsoft_sentinel_integration_request.py b/sysdig_client/models/update_microsoft_sentinel_integration_request.py new file mode 100644 index 00000000..b957cd29 --- /dev/null +++ b/sysdig_client/models/update_microsoft_sentinel_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.microsoft_sentinel_update_connection_info import MicrosoftSentinelUpdateConnectionInfo +from typing import Set +from typing_extensions import Self + + +class UpdateMicrosoftSentinelIntegrationRequest(BaseModel): + """ + Update Microsoft Sentinel Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: MicrosoftSentinelUpdateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateMicrosoftSentinelIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateMicrosoftSentinelIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": MicrosoftSentinelUpdateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_ms_teams_notification_channel_request_v1.py b/sysdig_client/models/update_ms_teams_notification_channel_request_v1.py new file mode 100644 index 00000000..72db4303 --- /dev/null +++ b/sysdig_client/models/update_ms_teams_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.ms_teams_notification_channel_options_v1 import MsTeamsNotificationChannelOptionsV1 +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdateMsTeamsNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateMsTeamsNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: MsTeamsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateMsTeamsNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateMsTeamsNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": MsTeamsNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_notification_channel_request_v1.py b/sysdig_client/models/update_notification_channel_request_v1.py new file mode 100644 index 00000000..b0c025c4 --- /dev/null +++ b/sysdig_client/models/update_notification_channel_request_v1.py @@ -0,0 +1,232 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from importlib import import_module +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from typing import Set +from typing_extensions import Self + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from sysdig_client.models.update_custom_webhook_notification_channel_request_v1 import ( + UpdateCustomWebhookNotificationChannelRequestV1, + ) + from sysdig_client.models.update_email_notification_channel_request_v1 import UpdateEmailNotificationChannelRequestV1 + from sysdig_client.models.update_gchat_notification_channel_request_v1 import UpdateGchatNotificationChannelRequestV1 + from sysdig_client.models.update_ibm_event_notifications_notification_channel_request_v1 import ( + UpdateIbmEventNotificationsNotificationChannelRequestV1, + ) + from sysdig_client.models.update_ms_teams_notification_channel_request_v1 import UpdateMsTeamsNotificationChannelRequestV1 + from sysdig_client.models.update_opsgenie_notification_channel_request_v1 import UpdateOpsgenieNotificationChannelRequestV1 + from sysdig_client.models.update_pager_duty_notification_channel_request_v1 import UpdatePagerDutyNotificationChannelRequestV1 + from sysdig_client.models.update_prometheus_alert_manager_notification_channel_request_v1 import ( + UpdatePrometheusAlertManagerNotificationChannelRequestV1, + ) + from sysdig_client.models.update_slack_notification_channel_request_v1 import UpdateSlackNotificationChannelRequestV1 + from sysdig_client.models.update_sns_notification_channel_request_v1 import UpdateSnsNotificationChannelRequestV1 + from sysdig_client.models.update_team_email_notification_channel_request_v1 import UpdateTeamEmailNotificationChannelRequestV1 + from sysdig_client.models.update_victor_ops_notification_channel_request_v1 import UpdateVictorOpsNotificationChannelRequestV1 + from sysdig_client.models.update_webhook_notification_channel_request_v1 import UpdateWebhookNotificationChannelRequestV1 + + +class UpdateNotificationChannelRequestV1(BaseModel): + """ + UpdateNotificationChannelRequestV1 + """ # noqa: E501 + + type: NotificationChannelTypeV1 + version: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, description="The current version of the resource." + ) + __properties: ClassVar[List[str]] = ["type", "version"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + # JSON field name that stores the object type + __discriminator_property_name: ClassVar[str] = "type" + + # discriminator mappings + __discriminator_value_class_map: ClassVar[Dict[str, str]] = { + "CUSTOM_WEBHOOK": "UpdateCustomWebhookNotificationChannelRequestV1", + "EMAIL": "UpdateEmailNotificationChannelRequestV1", + "GCHAT": "UpdateGchatNotificationChannelRequestV1", + "IBM_EVENT_NOTIFICATIONS": "UpdateIbmEventNotificationsNotificationChannelRequestV1", + "MS_TEAMS": "UpdateMsTeamsNotificationChannelRequestV1", + "OPSGENIE": "UpdateOpsgenieNotificationChannelRequestV1", + "PAGER_DUTY": "UpdatePagerDutyNotificationChannelRequestV1", + "PROMETHEUS_ALERT_MANAGER": "UpdatePrometheusAlertManagerNotificationChannelRequestV1", + "SLACK": "UpdateSlackNotificationChannelRequestV1", + "SNS": "UpdateSnsNotificationChannelRequestV1", + "TEAM_EMAIL": "UpdateTeamEmailNotificationChannelRequestV1", + "VICTOROPS": "UpdateVictorOpsNotificationChannelRequestV1", + "WEBHOOK": "UpdateWebhookNotificationChannelRequestV1", + } + + @classmethod + def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: + """Returns the discriminator value (object type) of the data""" + discriminator_value = obj[cls.__discriminator_property_name] + if discriminator_value: + return cls.__discriminator_value_class_map.get(discriminator_value) + else: + return None + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json( + cls, json_str: str + ) -> Optional[ + Union[ + UpdateCustomWebhookNotificationChannelRequestV1, + UpdateEmailNotificationChannelRequestV1, + UpdateGchatNotificationChannelRequestV1, + UpdateIbmEventNotificationsNotificationChannelRequestV1, + UpdateMsTeamsNotificationChannelRequestV1, + UpdateOpsgenieNotificationChannelRequestV1, + UpdatePagerDutyNotificationChannelRequestV1, + UpdatePrometheusAlertManagerNotificationChannelRequestV1, + UpdateSlackNotificationChannelRequestV1, + UpdateSnsNotificationChannelRequestV1, + UpdateTeamEmailNotificationChannelRequestV1, + UpdateVictorOpsNotificationChannelRequestV1, + UpdateWebhookNotificationChannelRequestV1, + ] + ]: + """Create an instance of UpdateNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict( + cls, obj: Dict[str, Any] + ) -> Optional[ + Union[ + UpdateCustomWebhookNotificationChannelRequestV1, + UpdateEmailNotificationChannelRequestV1, + UpdateGchatNotificationChannelRequestV1, + UpdateIbmEventNotificationsNotificationChannelRequestV1, + UpdateMsTeamsNotificationChannelRequestV1, + UpdateOpsgenieNotificationChannelRequestV1, + UpdatePagerDutyNotificationChannelRequestV1, + UpdatePrometheusAlertManagerNotificationChannelRequestV1, + UpdateSlackNotificationChannelRequestV1, + UpdateSnsNotificationChannelRequestV1, + UpdateTeamEmailNotificationChannelRequestV1, + UpdateVictorOpsNotificationChannelRequestV1, + UpdateWebhookNotificationChannelRequestV1, + ] + ]: + """Create an instance of UpdateNotificationChannelRequestV1 from a dict""" + # look up the object type based on discriminator mapping + object_type = cls.get_discriminator_value(obj) + if object_type == "UpdateCustomWebhookNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_custom_webhook_notification_channel_request_v1" + ).UpdateCustomWebhookNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateEmailNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_email_notification_channel_request_v1" + ).UpdateEmailNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateGchatNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_gchat_notification_channel_request_v1" + ).UpdateGchatNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateIbmEventNotificationsNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_ibm_event_notifications_notification_channel_request_v1" + ).UpdateIbmEventNotificationsNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateMsTeamsNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_ms_teams_notification_channel_request_v1" + ).UpdateMsTeamsNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateOpsgenieNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_opsgenie_notification_channel_request_v1" + ).UpdateOpsgenieNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdatePagerDutyNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_pager_duty_notification_channel_request_v1" + ).UpdatePagerDutyNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdatePrometheusAlertManagerNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_prometheus_alert_manager_notification_channel_request_v1" + ).UpdatePrometheusAlertManagerNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateSlackNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_slack_notification_channel_request_v1" + ).UpdateSlackNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateSnsNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_sns_notification_channel_request_v1" + ).UpdateSnsNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateTeamEmailNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_team_email_notification_channel_request_v1" + ).UpdateTeamEmailNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateVictorOpsNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_victor_ops_notification_channel_request_v1" + ).UpdateVictorOpsNotificationChannelRequestV1.from_dict(obj) + if object_type == "UpdateWebhookNotificationChannelRequestV1": + return import_module( + "sysdig_client.models.update_webhook_notification_channel_request_v1" + ).UpdateWebhookNotificationChannelRequestV1.from_dict(obj) + + raise ValueError( + "UpdateNotificationChannelRequestV1 failed to lookup discriminator value from " + + json.dumps(obj) + + ". Discriminator property name: " + + cls.__discriminator_property_name + + ", mapping: " + + json.dumps(cls.__discriminator_value_class_map) + ) diff --git a/sysdig_client/models/update_opsgenie_notification_channel_request_v1.py b/sysdig_client/models/update_opsgenie_notification_channel_request_v1.py new file mode 100644 index 00000000..e7b66173 --- /dev/null +++ b/sysdig_client/models/update_opsgenie_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.opsgenie_notification_channel_options_v1 import OpsgenieNotificationChannelOptionsV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdateOpsgenieNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateOpsgenieNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: OpsgenieNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateOpsgenieNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateOpsgenieNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": OpsgenieNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_pager_duty_notification_channel_request_v1.py b/sysdig_client/models/update_pager_duty_notification_channel_request_v1.py new file mode 100644 index 00000000..4ace04cf --- /dev/null +++ b/sysdig_client/models/update_pager_duty_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.pager_duty_notification_channel_options_v1 import PagerDutyNotificationChannelOptionsV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdatePagerDutyNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdatePagerDutyNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: PagerDutyNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdatePagerDutyNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdatePagerDutyNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": PagerDutyNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_pricing_request_v1.py b/sysdig_client/models/update_pricing_request_v1.py new file mode 100644 index 00000000..10f4ae85 --- /dev/null +++ b/sysdig_client/models/update_pricing_request_v1.py @@ -0,0 +1,126 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.pricing_type import PricingType +from sysdig_client.models.unit_pricing_v1 import UnitPricingV1 +from typing import Set +from typing_extensions import Self + + +class UpdatePricingRequestV1(BaseModel): + """ + UpdatePricingRequestV1 + """ # noqa: E501 + + type: PricingType + cluster_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the cluster. Required when `type` is `CLUSTER`.", alias="clusterName" + ) + name: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The name of the pricing profile.") + unit_pricing: UnitPricingV1 = Field(description="The unit pricing configuration used to compute costs.", alias="unitPricing") + spot_label: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of a node label that is used to identify the node as a spot node.", alias="spotLabel" + ) + spot_label_value: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The value of the spot node label.", alias="spotLabelValue" + ) + version: Annotated[int, Field(strict=True, ge=0)] = Field(description="The current version of the resource. ") + __properties: ClassVar[List[str]] = ["type", "clusterName", "name", "unitPricing", "spotLabel", "spotLabelValue", "version"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdatePricingRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of unit_pricing + if self.unit_pricing: + _dict["unitPricing"] = self.unit_pricing.to_dict() + # set to None if cluster_name (nullable) is None + # and model_fields_set contains the field + if self.cluster_name is None and "cluster_name" in self.model_fields_set: + _dict["clusterName"] = None + + # set to None if spot_label (nullable) is None + # and model_fields_set contains the field + if self.spot_label is None and "spot_label" in self.model_fields_set: + _dict["spotLabel"] = None + + # set to None if spot_label_value (nullable) is None + # and model_fields_set contains the field + if self.spot_label_value is None and "spot_label_value" in self.model_fields_set: + _dict["spotLabelValue"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdatePricingRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "clusterName": obj.get("clusterName"), + "name": obj.get("name"), + "unitPricing": UnitPricingV1.from_dict(obj["unitPricing"]) if obj.get("unitPricing") is not None else None, + "spotLabel": obj.get("spotLabel"), + "spotLabelValue": obj.get("spotLabelValue"), + "version": obj.get("version"), + } + ) + return _obj diff --git a/sysdig_client/models/update_prometheus_alert_manager_notification_channel_request_v1.py b/sysdig_client/models/update_prometheus_alert_manager_notification_channel_request_v1.py new file mode 100644 index 00000000..d026adb5 --- /dev/null +++ b/sysdig_client/models/update_prometheus_alert_manager_notification_channel_request_v1.py @@ -0,0 +1,135 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.prometheus_alert_manager_notification_channel_options_v1 import ( + PrometheusAlertManagerNotificationChannelOptionsV1, +) +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdatePrometheusAlertManagerNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdatePrometheusAlertManagerNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: PrometheusAlertManagerNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdatePrometheusAlertManagerNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdatePrometheusAlertManagerNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": PrometheusAlertManagerNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_qradar_integration_request.py b/sysdig_client/models/update_qradar_integration_request.py new file mode 100644 index 00000000..87b268fe --- /dev/null +++ b/sysdig_client/models/update_qradar_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_qradar import BaseConnectionInfoQradar +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class UpdateQradarIntegrationRequest(BaseModel): + """ + Save IBM QRadar Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: BaseConnectionInfoQradar = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateQradarIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateQradarIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": BaseConnectionInfoQradar.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_risk_accepted.py b/sysdig_client/models/update_risk_accepted.py new file mode 100644 index 00000000..6d701248 --- /dev/null +++ b/sysdig_client/models/update_risk_accepted.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UpdateRiskAccepted(BaseModel): + """ + UpdateRiskAccepted + """ # noqa: E501 + + expiration_date: Optional[Annotated[str, Field(strict=True, max_length=10)]] = Field( + default=None, + description="Date when the accepted risk expires. Setting this to null will make the accepted risk never expire. ", + alias="expirationDate", + ) + reason: Optional[StrictStr] = Field(default=None, description="Reason for acceptance") + description: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Description of why the accepted risk was created" + ) + __properties: ClassVar[List[str]] = ["expirationDate", "reason", "description"] + + @field_validator("reason") + def reason_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["RiskTransferred", "RiskAvoided", "RiskMitigated", "RiskOwned", "RiskNotRelevant", "Custom"]): + raise ValueError( + "must be one of enum values ('RiskTransferred', 'RiskAvoided', 'RiskMitigated', 'RiskOwned', 'RiskNotRelevant', 'Custom')" + ) + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateRiskAccepted from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if expiration_date (nullable) is None + # and model_fields_set contains the field + if self.expiration_date is None and "expiration_date" in self.model_fields_set: + _dict["expirationDate"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateRiskAccepted from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"expirationDate": obj.get("expirationDate"), "reason": obj.get("reason"), "description": obj.get("description")} + ) + return _obj diff --git a/sysdig_client/models/update_service_accounts_notification_settings_request_v1.py b/sysdig_client/models/update_service_accounts_notification_settings_request_v1.py new file mode 100644 index 00000000..efceac51 --- /dev/null +++ b/sysdig_client/models/update_service_accounts_notification_settings_request_v1.py @@ -0,0 +1,98 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class UpdateServiceAccountsNotificationSettingsRequestV1(BaseModel): + """ + UpdateServiceAccountsNotificationSettingsRequestV1 + """ # noqa: E501 + + is_enabled: StrictBool = Field(description="Whether the notification settings are enabled or not.", alias="isEnabled") + notification_channel_ids: Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=10)] = Field( + description="The list of notification channel IDs to which the notifications are to be sent.\\ \\ Supported types are **EMAIL** and **SLACK**. ", + alias="notificationChannelIds", + ) + days_before_expiry: Annotated[List[Annotated[int, Field(le=60, strict=True, ge=1)]], Field(max_length=5)] = Field( + description="The number of days before the expiry of the service account when the notifications are to be sent.", + alias="daysBeforeExpiry", + ) + __properties: ClassVar[List[str]] = ["isEnabled", "notificationChannelIds", "daysBeforeExpiry"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateServiceAccountsNotificationSettingsRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateServiceAccountsNotificationSettingsRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "isEnabled": obj.get("isEnabled"), + "notificationChannelIds": obj.get("notificationChannelIds"), + "daysBeforeExpiry": obj.get("daysBeforeExpiry"), + } + ) + return _obj diff --git a/sysdig_client/models/update_slack_notification_channel_request_v1.py b/sysdig_client/models/update_slack_notification_channel_request_v1.py new file mode 100644 index 00000000..f54b2f83 --- /dev/null +++ b/sysdig_client/models/update_slack_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.slack_update_notification_channel_options_v1 import SlackUpdateNotificationChannelOptionsV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdateSlackNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateSlackNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: SlackUpdateNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateSlackNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateSlackNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": SlackUpdateNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_sns_notification_channel_request_v1.py b/sysdig_client/models/update_sns_notification_channel_request_v1.py new file mode 100644 index 00000000..9dfdff89 --- /dev/null +++ b/sysdig_client/models/update_sns_notification_channel_request_v1.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.sns_notification_channel_options_v1 import SnsNotificationChannelOptionsV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdateSnsNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateSnsNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: SnsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateSnsNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateSnsNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": SnsNotificationChannelOptionsV1.from_dict(obj["options"]) if obj.get("options") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_splunk_integration_request.py b/sysdig_client/models/update_splunk_integration_request.py new file mode 100644 index 00000000..9ea06df5 --- /dev/null +++ b/sysdig_client/models/update_splunk_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.splunk_update_connection_info import SplunkUpdateConnectionInfo +from typing import Set +from typing_extensions import Self + + +class UpdateSplunkIntegrationRequest(BaseModel): + """ + Update Splunk Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: SplunkUpdateConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateSplunkIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateSplunkIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": SplunkUpdateConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_sso_settings_request_v1.py b/sysdig_client/models/update_sso_settings_request_v1.py new file mode 100644 index 00000000..dbcc6aba --- /dev/null +++ b/sysdig_client/models/update_sso_settings_request_v1.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.product import Product +from sysdig_client.models.sso_settings_update_request_base_v1 import SsoSettingsUpdateRequestBaseV1 +from typing import Set +from typing_extensions import Self + + +class UpdateSsoSettingsRequestV1(BaseModel): + """ + UpdateSsoSettingsRequestV1 + """ # noqa: E501 + + product: Product = Field( + description="The product to which SSO settings is applied to. SSO settings are configured per specific product." + ) + is_active: StrictBool = Field(description="Flag to indicate if the SSO settings is active.", alias="isActive") + create_user_on_login: StrictBool = Field( + description="Flag to indicate if the user will be created automatically if not found in the system.", + alias="createUserOnLogin", + ) + is_password_login_enabled: Optional[StrictBool] = Field( + default=None, + description="Flag to indicate if the user will be able to login with password. Deprecated: use the API endpoint `/platform/v1/global-sso-settings` for this functionality. This is now a global setting: if this flag is defined here and this SSO setting is set to be active, the setting will be applied at global level.", + alias="isPasswordLoginEnabled", + ) + is_single_logout_enabled: StrictBool = Field( + description="Flag to indicate if the single logout support is enabled.", alias="isSingleLogoutEnabled" + ) + is_group_mapping_enabled: StrictBool = Field( + description="Flag to indicate if group mapping support is enabled.", alias="isGroupMappingEnabled" + ) + group_mapping_attribute_name: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, description="The group mapping attribute name.", alias="groupMappingAttributeName" + ) + version: Annotated[int, Field(strict=True, ge=0)] = Field(description=" ") + config: SsoSettingsUpdateRequestBaseV1 + __properties: ClassVar[List[str]] = [ + "product", + "isActive", + "createUserOnLogin", + "isPasswordLoginEnabled", + "isSingleLogoutEnabled", + "isGroupMappingEnabled", + "groupMappingAttributeName", + "version", + "config", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateSsoSettingsRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of config + if self.config: + _dict["config"] = self.config.to_dict() + # set to None if group_mapping_attribute_name (nullable) is None + # and model_fields_set contains the field + if self.group_mapping_attribute_name is None and "group_mapping_attribute_name" in self.model_fields_set: + _dict["groupMappingAttributeName"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateSsoSettingsRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "product": obj.get("product"), + "isActive": obj.get("isActive"), + "createUserOnLogin": obj.get("createUserOnLogin"), + "isPasswordLoginEnabled": obj.get("isPasswordLoginEnabled"), + "isSingleLogoutEnabled": obj.get("isSingleLogoutEnabled"), + "isGroupMappingEnabled": obj.get("isGroupMappingEnabled"), + "groupMappingAttributeName": obj.get("groupMappingAttributeName"), + "version": obj.get("version"), + "config": SsoSettingsUpdateRequestBaseV1.from_dict(obj["config"]) if obj.get("config") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_syslog_integration_request.py b/sysdig_client/models/update_syslog_integration_request.py new file mode 100644 index 00000000..929473ba --- /dev/null +++ b/sysdig_client/models/update_syslog_integration_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.base_connection_info_syslog import BaseConnectionInfoSyslog +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from typing import Set +from typing_extensions import Self + + +class UpdateSyslogIntegrationRequest(BaseModel): + """ + Update Syslog Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: BaseConnectionInfoSyslog = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateSyslogIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateSyslogIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": BaseConnectionInfoSyslog.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_team_email_notification_channel_request_v1.py b/sysdig_client/models/update_team_email_notification_channel_request_v1.py new file mode 100644 index 00000000..4d53e7ae --- /dev/null +++ b/sysdig_client/models/update_team_email_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.team_email_notification_channel_options_v1 import TeamEmailNotificationChannelOptionsV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from typing import Set +from typing_extensions import Self + + +class UpdateTeamEmailNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateTeamEmailNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: TeamEmailNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateTeamEmailNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateTeamEmailNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": TeamEmailNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_team_request_v1.py b/sysdig_client/models/update_team_request_v1.py new file mode 100644 index 00000000..efdeede9 --- /dev/null +++ b/sysdig_client/models/update_team_request_v1.py @@ -0,0 +1,162 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.additional_team_permissions_v1 import AdditionalTeamPermissionsV1 +from sysdig_client.models.scope_v1 import ScopeV1 +from sysdig_client.models.team_role_v1 import TeamRoleV1 +from sysdig_client.models.ui_settings_v1 import UiSettingsV1 +from typing import Set +from typing_extensions import Self + + +class UpdateTeamRequestV1(BaseModel): + """ + UpdateTeamRequestV1 + """ # noqa: E501 + + version: Annotated[int, Field(strict=True, ge=0)] = Field(description=" ") + name: Annotated[str, Field(strict=True, max_length=256)] = Field(description="The name of the team.") + description: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="A description of the team explaining what is it used for." + ) + is_default_team: StrictBool = Field( + description="Specifies if this is the default team. The default team is used to automatically assign new users to a team.", + alias="isDefaultTeam", + ) + standard_team_role: Optional[TeamRoleV1] = Field( + default=None, + description="The standard team role assigned by default to users added to this team. ", + alias="standardTeamRole", + ) + custom_team_role_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, + description="The custom team role assigned by default to users added to this team. ", + alias="customTeamRoleId", + ) + ui_settings: UiSettingsV1 = Field(alias="uiSettings") + is_all_zones: Optional[StrictBool] = Field( + default=None, + description="**True** if the users that are members of this team have access to all zones. **Mutually exclusive with zoneIds**.\\ \\ _Only supported in Secure features._ ", + alias="isAllZones", + ) + zone_ids: Optional[Annotated[List[Annotated[int, Field(strict=True, ge=0)]], Field(max_length=20)]] = Field( + default=None, + description="The list of zones that users assigned to this team will have access to. **Mutually exclusive with allZones**.\\ \\ _Only supported in Secure features._ ", + alias="zoneIds", + ) + scopes: Annotated[List[ScopeV1], Field(min_length=1, max_length=512)] = Field( + description="Scopes is a list of different scope types and filter values that will be applied to resources when accessed through the team. " + ) + additional_team_permissions: AdditionalTeamPermissionsV1 = Field(alias="additionalTeamPermissions") + __properties: ClassVar[List[str]] = [ + "version", + "name", + "description", + "isDefaultTeam", + "standardTeamRole", + "customTeamRoleId", + "uiSettings", + "isAllZones", + "zoneIds", + "scopes", + "additionalTeamPermissions", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateTeamRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of ui_settings + if self.ui_settings: + _dict["uiSettings"] = self.ui_settings.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in scopes (list) + _items = [] + if self.scopes: + for _item_scopes in self.scopes: + if _item_scopes: + _items.append(_item_scopes.to_dict()) + _dict["scopes"] = _items + # override the default output from pydantic by calling `to_dict()` of additional_team_permissions + if self.additional_team_permissions: + _dict["additionalTeamPermissions"] = self.additional_team_permissions.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateTeamRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "version": obj.get("version"), + "name": obj.get("name"), + "description": obj.get("description"), + "isDefaultTeam": obj.get("isDefaultTeam"), + "standardTeamRole": obj.get("standardTeamRole"), + "customTeamRoleId": obj.get("customTeamRoleId"), + "uiSettings": UiSettingsV1.from_dict(obj["uiSettings"]) if obj.get("uiSettings") is not None else None, + "isAllZones": obj.get("isAllZones"), + "zoneIds": obj.get("zoneIds"), + "scopes": [ScopeV1.from_dict(_item) for _item in obj["scopes"]] if obj.get("scopes") is not None else None, + "additionalTeamPermissions": AdditionalTeamPermissionsV1.from_dict(obj["additionalTeamPermissions"]) + if obj.get("additionalTeamPermissions") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_user_deactivation_configuration_request_v1.py b/sysdig_client/models/update_user_deactivation_configuration_request_v1.py new file mode 100644 index 00000000..b8638882 --- /dev/null +++ b/sysdig_client/models/update_user_deactivation_configuration_request_v1.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class UpdateUserDeactivationConfigurationRequestV1(BaseModel): + """ + UpdateUserDeactivationConfigurationRequestV1 + """ # noqa: E501 + + is_enabled: StrictBool = Field(description="Specifies if user deactivation is enabled for this customer.", alias="isEnabled") + number_days_before_deactivation: Annotated[int, Field(le=365, strict=True, ge=1)] = Field( + description="Number of days before inactive users are deactivated. ", alias="numberDaysBeforeDeactivation" + ) + __properties: ClassVar[List[str]] = ["isEnabled", "numberDaysBeforeDeactivation"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateUserDeactivationConfigurationRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateUserDeactivationConfigurationRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"isEnabled": obj.get("isEnabled"), "numberDaysBeforeDeactivation": obj.get("numberDaysBeforeDeactivation")} + ) + return _obj diff --git a/sysdig_client/models/update_user_request_v1.py b/sysdig_client/models/update_user_request_v1.py new file mode 100644 index 00000000..a8f4ca9c --- /dev/null +++ b/sysdig_client/models/update_user_request_v1.py @@ -0,0 +1,112 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UpdateUserRequestV1(BaseModel): + """ + UpdateUserRequestV1 + """ # noqa: E501 + + first_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the user. ", alias="firstName" + ) + last_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The surname of the user. ", alias="lastName" + ) + is_admin: Optional[StrictBool] = Field( + default=None, description="**True** if the user has Administration permissions. ", alias="isAdmin" + ) + is_enabled: Optional[StrictBool] = Field( + default=None, + description="When **True**, the user can bypass SSO enforcement. **Warning:** This allows the user to log in without SSO even when username and password login is disabled. ", + alias="isEnabled", + ) + version: Annotated[int, Field(strict=True, ge=0)] = Field(description="The current version of the resource. ") + bypass_sso_enforcement: Optional[StrictBool] = Field( + default=None, + description="When **True**, the user can bypass SSO enforcement. **Warning:** This allows the user to log in without SSO even when username and password login is disabled. If a field is omitted, its value will be left unchanged. ", + alias="bypassSsoEnforcement", + ) + __properties: ClassVar[List[str]] = ["firstName", "lastName", "isAdmin", "isEnabled", "version", "bypassSsoEnforcement"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateUserRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateUserRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "firstName": obj.get("firstName"), + "lastName": obj.get("lastName"), + "isAdmin": obj.get("isAdmin"), + "isEnabled": obj.get("isEnabled"), + "version": obj.get("version"), + "bypassSsoEnforcement": obj.get("bypassSsoEnforcement"), + } + ) + return _obj diff --git a/sysdig_client/models/update_victor_ops_notification_channel_request_v1.py b/sysdig_client/models/update_victor_ops_notification_channel_request_v1.py new file mode 100644 index 00000000..a40f1eb7 --- /dev/null +++ b/sysdig_client/models/update_victor_ops_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from sysdig_client.models.victor_ops_notification_channel_options_v1 import VictorOpsNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class UpdateVictorOpsNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateVictorOpsNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: VictorOpsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateVictorOpsNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateVictorOpsNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": VictorOpsNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_webhook_integration_request.py b/sysdig_client/models/update_webhook_integration_request.py new file mode 100644 index 00000000..84c74f0e --- /dev/null +++ b/sysdig_client/models/update_webhook_integration_request.py @@ -0,0 +1,110 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.integration_channel import IntegrationChannel +from sysdig_client.models.integration_type import IntegrationType +from sysdig_client.models.update_webhook_integration_request_all_of_connection_info import ( + UpdateWebhookIntegrationRequestAllOfConnectionInfo, +) +from typing import Set +from typing_extensions import Self + + +class UpdateWebhookIntegrationRequest(BaseModel): + """ + Update Webhook Integration Request + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=512)] = Field(description="A descriptive name to give to the integration") + is_enabled: Optional[StrictBool] = Field( + default=True, description="If the forwarding should be enabled or not", alias="isEnabled" + ) + type: IntegrationType + channels: Optional[Annotated[List[IntegrationChannel], Field(max_length=32)]] = Field( + default=None, description="Data types to forward. Must be compatible with the specified Integration type" + ) + connection_info: UpdateWebhookIntegrationRequestAllOfConnectionInfo = Field(alias="connectionInfo") + __properties: ClassVar[List[str]] = ["name", "isEnabled", "type", "channels", "connectionInfo"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateWebhookIntegrationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of connection_info + if self.connection_info: + _dict["connectionInfo"] = self.connection_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateWebhookIntegrationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else True, + "type": obj.get("type"), + "channels": obj.get("channels"), + "connectionInfo": UpdateWebhookIntegrationRequestAllOfConnectionInfo.from_dict(obj["connectionInfo"]) + if obj.get("connectionInfo") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/update_webhook_integration_request_all_of_connection_info.py b/sysdig_client/models/update_webhook_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..d963bd73 --- /dev/null +++ b/sysdig_client/models/update_webhook_integration_request_all_of_connection_info.py @@ -0,0 +1,164 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.key_value_object import KeyValueObject +from typing import Set +from typing_extensions import Self + + +class UpdateWebhookIntegrationRequestAllOfConnectionInfo(BaseModel): + """ + UpdateWebhookIntegrationRequestAllOfConnectionInfo + """ # noqa: E501 + + endpoint: Annotated[str, Field(strict=True, max_length=128)] = Field( + description="Webhook endpoint following the schema protocol" + ) + is_insecure: Optional[StrictBool] = Field(default=False, description="Skip TLS certificate verification", alias="isInsecure") + headers: Optional[Annotated[List[KeyValueObject], Field(max_length=256)]] = Field( + default=None, + description="Extra headers to add to the request. Each header mapping requires 2 keys: 'key' for the header key and 'value' for its value", + ) + output: Optional[StrictStr] = Field(default="json", description="Payload format") + timestamp_format: Optional[StrictStr] = Field( + default="nanoseconds", description='The resolution of the "timestamp" field in the payload', alias="timestampFormat" + ) + auth: Optional[StrictStr] = Field(default=None, description="Authentication method") + certificate_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, + description="ID of a certificate stored in Sysdig's [Certificates Management tool](#tag/Certificates). Note that the RFC 5425 (TLS) protocol is required for you to see this field", + alias="certificateId", + ) + secret: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field( + default=None, description='Secret to use, according to the "auth" value.' + ) + __properties: ClassVar[List[str]] = [ + "endpoint", + "isInsecure", + "headers", + "output", + "timestampFormat", + "auth", + "certificateId", + "secret", + ] + + @field_validator("output") + def output_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["json", "ndjson"]): + raise ValueError("must be one of enum values ('json', 'ndjson')") + return value + + @field_validator("timestamp_format") + def timestamp_format_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["seconds", "milliseconds", "microseconds", "nanoseconds"]): + raise ValueError("must be one of enum values ('seconds', 'milliseconds', 'microseconds', 'nanoseconds')") + return value + + @field_validator("auth") + def auth_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["BASIC_AUTH", "BEARER_TOKEN", "SIGNATURE", "CERTIFICATE"]): + raise ValueError("must be one of enum values ('BASIC_AUTH', 'BEARER_TOKEN', 'SIGNATURE', 'CERTIFICATE')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateWebhookIntegrationRequestAllOfConnectionInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in headers (list) + _items = [] + if self.headers: + for _item_headers in self.headers: + if _item_headers: + _items.append(_item_headers.to_dict()) + _dict["headers"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateWebhookIntegrationRequestAllOfConnectionInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "endpoint": obj.get("endpoint"), + "isInsecure": obj.get("isInsecure") if obj.get("isInsecure") is not None else False, + "headers": [KeyValueObject.from_dict(_item) for _item in obj["headers"]] + if obj.get("headers") is not None + else None, + "output": obj.get("output") if obj.get("output") is not None else "json", + "timestampFormat": obj.get("timestampFormat") if obj.get("timestampFormat") is not None else "nanoseconds", + "auth": obj.get("auth"), + "certificateId": obj.get("certificateId"), + "secret": obj.get("secret"), + } + ) + return _obj diff --git a/sysdig_client/models/update_webhook_notification_channel_request_v1.py b/sysdig_client/models/update_webhook_notification_channel_request_v1.py new file mode 100644 index 00000000..1078a150 --- /dev/null +++ b/sysdig_client/models/update_webhook_notification_channel_request_v1.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 +from sysdig_client.models.webhook_notification_channel_options_v1 import WebhookNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class UpdateWebhookNotificationChannelRequestV1(UpdateNotificationChannelRequestV1): + """ + UpdateWebhookNotificationChannelRequestV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: WebhookNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "version", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateWebhookNotificationChannelRequestV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateWebhookNotificationChannelRequestV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "version": obj.get("version"), + "options": WebhookNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/user.py b/sysdig_client/models/user.py new file mode 100644 index 00000000..d13ba2ec --- /dev/null +++ b/sysdig_client/models/user.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class User(BaseModel): + """ + The full representation of a User + """ # noqa: E501 + + username: Optional[Annotated[str, Field(strict=True, max_length=20)]] = Field( + default=None, description="The username of the User" + ) + groups: Optional[Annotated[List[Annotated[str, Field(strict=True, max_length=20)]], Field(max_length=100)]] = None + __properties: ClassVar[List[str]] = ["username", "groups"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of User from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of User from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"username": obj.get("username"), "groups": obj.get("groups")}) + return _obj diff --git a/sysdig_client/models/user_deactivation_configuration_response_v1.py b/sysdig_client/models/user_deactivation_configuration_response_v1.py new file mode 100644 index 00000000..74be4466 --- /dev/null +++ b/sysdig_client/models/user_deactivation_configuration_response_v1.py @@ -0,0 +1,98 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UserDeactivationConfigurationResponseV1(BaseModel): + """ + UserDeactivationConfigurationResponseV1 + """ # noqa: E501 + + customer_id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, description="The customer Id. ", alias="customerId" + ) + is_enabled: Optional[StrictBool] = Field( + default=None, description="Specifies if user deactivation is enabled for this customer.", alias="isEnabled" + ) + number_days_before_deactivation: Optional[Annotated[int, Field(le=365, strict=True, ge=1)]] = Field( + default=None, description="Number of days before inactive users are deactivated. ", alias="numberDaysBeforeDeactivation" + ) + __properties: ClassVar[List[str]] = ["customerId", "isEnabled", "numberDaysBeforeDeactivation"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UserDeactivationConfigurationResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UserDeactivationConfigurationResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "customerId": obj.get("customerId"), + "isEnabled": obj.get("isEnabled"), + "numberDaysBeforeDeactivation": obj.get("numberDaysBeforeDeactivation"), + } + ) + return _obj diff --git a/sysdig_client/models/user_response_v1.py b/sysdig_client/models/user_response_v1.py new file mode 100644 index 00000000..cca13002 --- /dev/null +++ b/sysdig_client/models/user_response_v1.py @@ -0,0 +1,156 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class UserResponseV1(BaseModel): + """ + UserResponseV1 + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + email: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="The email address of the user. " + ) + first_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The name of the user. ", alias="firstName" + ) + last_name: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The last name of the user. ", alias="lastName" + ) + is_admin: Optional[StrictBool] = Field( + default=None, description="**True** if the user has Administration permissions. ", alias="isAdmin" + ) + is_enabled: Optional[StrictBool] = Field(default=None, description="**True** if the user is enabled. ", alias="isEnabled") + activation_status: Optional[Annotated[str, Field(strict=True, max_length=256)]] = Field( + default=None, description="The current activation status of the user. ", alias="activationStatus" + ) + date_created: Optional[datetime] = Field( + default=None, description="The date and time when the user was created. ", alias="dateCreated" + ) + last_updated: Optional[datetime] = Field( + default=None, description="The date and time when the user was last updated. ", alias="lastUpdated" + ) + version: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, description="The current version of the resource. " + ) + bypass_sso_enforcement: Optional[StrictBool] = Field( + default=None, + description="When **True**, the user can bypass SSO enforcement. **Warning:** This allows the user to log in without SSO even when username and password login is disabled. ", + alias="bypassSsoEnforcement", + ) + __properties: ClassVar[List[str]] = [ + "id", + "email", + "firstName", + "lastName", + "isAdmin", + "isEnabled", + "activationStatus", + "dateCreated", + "lastUpdated", + "version", + "bypassSsoEnforcement", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UserResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # set to None if first_name (nullable) is None + # and model_fields_set contains the field + if self.first_name is None and "first_name" in self.model_fields_set: + _dict["firstName"] = None + + # set to None if last_name (nullable) is None + # and model_fields_set contains the field + if self.last_name is None and "last_name" in self.model_fields_set: + _dict["lastName"] = None + + # set to None if last_updated (nullable) is None + # and model_fields_set contains the field + if self.last_updated is None and "last_updated" in self.model_fields_set: + _dict["lastUpdated"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UserResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "email": obj.get("email"), + "firstName": obj.get("firstName"), + "lastName": obj.get("lastName"), + "isAdmin": obj.get("isAdmin"), + "isEnabled": obj.get("isEnabled"), + "activationStatus": obj.get("activationStatus"), + "dateCreated": obj.get("dateCreated"), + "lastUpdated": obj.get("lastUpdated"), + "version": obj.get("version"), + "bypassSsoEnforcement": obj.get("bypassSsoEnforcement"), + } + ) + return _obj diff --git a/sysdig_client/models/victor_ops_notification_channel_options_v1.py b/sysdig_client/models/victor_ops_notification_channel_options_v1.py new file mode 100644 index 00000000..fac15901 --- /dev/null +++ b/sysdig_client/models/victor_ops_notification_channel_options_v1.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VictorOpsNotificationChannelOptionsV1(BaseModel): + """ + The VictorOps notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + api_key: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The VictorOps api key", alias="apiKey" + ) + routing_key: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The VictorOps routing key", alias="routingKey" + ) + __properties: ClassVar[List[str]] = ["hasHidingOfSensitiveInfo", "apiKey", "routingKey"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VictorOpsNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VictorOpsNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "apiKey": obj.get("apiKey"), + "routingKey": obj.get("routingKey"), + } + ) + return _obj diff --git a/sysdig_client/models/victor_ops_notification_channel_response_v1.py b/sysdig_client/models/victor_ops_notification_channel_response_v1.py new file mode 100644 index 00000000..d4eaa2f2 --- /dev/null +++ b/sysdig_client/models/victor_ops_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.victor_ops_notification_channel_options_v1 import VictorOpsNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class VictorOpsNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + VictorOpsNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: VictorOpsNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VictorOpsNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VictorOpsNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": VictorOpsNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/vuln_age.py b/sysdig_client/models/vuln_age.py new file mode 100644 index 00000000..389f77f8 --- /dev/null +++ b/sysdig_client/models/vuln_age.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_age_extra import VulnAgeExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnAge(BaseModel): + """ + Predicate expressing \"the Vulnerability is older than days\" + """ # noqa: E501 + + type: StrictStr + extra: VulnAgeExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnAge"]): + raise ValueError("must be one of enum values ('vulnAge')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnAge from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnAge from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"type": obj.get("type"), "extra": VulnAgeExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/vuln_age_extra.py b/sysdig_client/models/vuln_age_extra.py new file mode 100644 index 00000000..d2102243 --- /dev/null +++ b/sysdig_client/models/vuln_age_extra.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VulnAgeExtra(BaseModel): + """ + VulnAgeExtra + """ # noqa: E501 + + age: Optional[Annotated[int, Field(le=36500, strict=True, ge=0)]] = Field( + default=None, description="The age of the vulnerability in days." + ) + __properties: ClassVar[List[str]] = ["age"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnAgeExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnAgeExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"age": obj.get("age")}) + return _obj diff --git a/sysdig_client/models/vuln_cvss.py b/sysdig_client/models/vuln_cvss.py new file mode 100644 index 00000000..c1970629 --- /dev/null +++ b/sysdig_client/models/vuln_cvss.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_cvss_extra import VulnCvssExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnCvss(BaseModel): + """ + Predicate expressing \"the Vulnerability CVSS Score is higher than \" + """ # noqa: E501 + + type: StrictStr + extra: VulnCvssExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnCVSS"]): + raise ValueError("must be one of enum values ('vulnCVSS')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnCvss from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnCvss from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"type": obj.get("type"), "extra": VulnCvssExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/vuln_cvss_equals.py b/sysdig_client/models/vuln_cvss_equals.py new file mode 100644 index 00000000..26af2773 --- /dev/null +++ b/sysdig_client/models/vuln_cvss_equals.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_cvss_equals_extra import VulnCvssEqualsExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnCvssEquals(BaseModel): + """ + Predicate expressing \"the Vulnerability CVSS Score is exactly equal to \" + """ # noqa: E501 + + type: StrictStr + extra: VulnCvssEqualsExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnCVSSEquals"]): + raise ValueError("must be one of enum values ('vulnCVSSEquals')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnCvssEquals from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnCvssEquals from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": VulnCvssEqualsExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/vuln_cvss_equals_extra.py b/sysdig_client/models/vuln_cvss_equals_extra.py new file mode 100644 index 00000000..23b91f8d --- /dev/null +++ b/sysdig_client/models/vuln_cvss_equals_extra.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VulnCvssEqualsExtra(BaseModel): + """ + VulnCvssEqualsExtra + """ # noqa: E501 + + value: Optional[Union[Annotated[float, Field(le=10, strict=True, ge=0)], Annotated[int, Field(le=10, strict=True, ge=0)]]] = ( + Field(default=None, description="The threshold for equality comparison with the CVSS Score.") + ) + __properties: ClassVar[List[str]] = ["value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnCvssEqualsExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnCvssEqualsExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/vuln_cvss_extra.py b/sysdig_client/models/vuln_cvss_extra.py new file mode 100644 index 00000000..da6e217d --- /dev/null +++ b/sysdig_client/models/vuln_cvss_extra.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VulnCvssExtra(BaseModel): + """ + VulnCvssExtra + """ # noqa: E501 + + value: Optional[Union[Annotated[float, Field(le=10, strict=True, ge=0)], Annotated[int, Field(le=10, strict=True, ge=0)]]] = ( + Field(default=None, description="The threshold for greater-than-or-equal comparison with CVSS Score.") + ) + __properties: ClassVar[List[str]] = ["value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnCvssExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnCvssExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"value": obj.get("value")}) + return _obj diff --git a/sysdig_client/models/vuln_disclosure_range.py b/sysdig_client/models/vuln_disclosure_range.py new file mode 100644 index 00000000..d7d97eae --- /dev/null +++ b/sysdig_client/models/vuln_disclosure_range.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_disclosure_range_extra import VulnDisclosureRangeExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnDisclosureRange(BaseModel): + """ + The start and end dates (inclusive) when vulnerabilities were disclosed. + """ # noqa: E501 + + type: StrictStr + extra: VulnDisclosureRangeExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnDisclosureRange"]): + raise ValueError("must be one of enum values ('vulnDisclosureRange')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnDisclosureRange from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnDisclosureRange from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": VulnDisclosureRangeExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/vuln_disclosure_range_extra.py b/sysdig_client/models/vuln_disclosure_range_extra.py new file mode 100644 index 00000000..fc8494cd --- /dev/null +++ b/sysdig_client/models/vuln_disclosure_range_extra.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class VulnDisclosureRangeExtra(BaseModel): + """ + VulnDisclosureRangeExtra + """ # noqa: E501 + + start_date: Optional[date] = Field( + default=None, description="The start date (inclusive) of disclosed vulnerabilities.", alias="startDate" + ) + end_date: Optional[date] = Field( + default=None, description="The end date (inclusive) of disclosed vulnerabilities.", alias="endDate" + ) + __properties: ClassVar[List[str]] = ["startDate", "endDate"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnDisclosureRangeExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnDisclosureRangeExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"startDate": obj.get("startDate"), "endDate": obj.get("endDate")}) + return _obj diff --git a/sysdig_client/models/vuln_epss_percentile_gte.py b/sysdig_client/models/vuln_epss_percentile_gte.py new file mode 100644 index 00000000..a191a4e8 --- /dev/null +++ b/sysdig_client/models/vuln_epss_percentile_gte.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_epss_percentile_gte_extra import VulnEpssPercentileGteExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnEpssPercentileGte(BaseModel): + """ + The EPSS percentile score that is greater than or equal to the specified value. + """ # noqa: E501 + + type: StrictStr + extra: VulnEpssPercentileGteExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnEpssPercentileGte"]): + raise ValueError("must be one of enum values ('vulnEpssPercentileGte')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnEpssPercentileGte from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnEpssPercentileGte from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": VulnEpssPercentileGteExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/vuln_epss_percentile_gte_extra.py b/sysdig_client/models/vuln_epss_percentile_gte_extra.py new file mode 100644 index 00000000..3ab8de5a --- /dev/null +++ b/sysdig_client/models/vuln_epss_percentile_gte_extra.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VulnEpssPercentileGteExtra(BaseModel): + """ + VulnEpssPercentileGteExtra + """ # noqa: E501 + + percentile: Optional[Annotated[int, Field(le=100, strict=True, ge=0)]] = Field( + default=None, description="Percentile value to compare." + ) + __properties: ClassVar[List[str]] = ["percentile"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnEpssPercentileGteExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnEpssPercentileGteExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"percentile": obj.get("percentile")}) + return _obj diff --git a/sysdig_client/models/vuln_epss_score_gte.py b/sysdig_client/models/vuln_epss_score_gte.py new file mode 100644 index 00000000..a1266748 --- /dev/null +++ b/sysdig_client/models/vuln_epss_score_gte.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_epss_score_gte_extra import VulnEpssScoreGteExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnEpssScoreGte(BaseModel): + """ + The EPSS score that meets or exceeds the specified threshold value. + """ # noqa: E501 + + type: StrictStr + extra: VulnEpssScoreGteExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnEpssScoreGte"]): + raise ValueError("must be one of enum values ('vulnEpssScoreGte')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnEpssScoreGte from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnEpssScoreGte from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": VulnEpssScoreGteExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/vuln_epss_score_gte_extra.py b/sysdig_client/models/vuln_epss_score_gte_extra.py new file mode 100644 index 00000000..d4667a46 --- /dev/null +++ b/sysdig_client/models/vuln_epss_score_gte_extra.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VulnEpssScoreGteExtra(BaseModel): + """ + VulnEpssScoreGteExtra + """ # noqa: E501 + + score: Optional[Annotated[int, Field(le=100, strict=True, ge=0)]] = Field(default=None, description="Score value to compare.") + __properties: ClassVar[List[str]] = ["score"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnEpssScoreGteExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnEpssScoreGteExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"score": obj.get("score")}) + return _obj diff --git a/sysdig_client/models/vuln_exploitable.py b/sysdig_client/models/vuln_exploitable.py new file mode 100644 index 00000000..317b516f --- /dev/null +++ b/sysdig_client/models/vuln_exploitable.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class VulnExploitable(BaseModel): + """ + Predicate expressing \"the Vulnerability is exploitable\". + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnExploitable"]): + raise ValueError("must be one of enum values ('vulnExploitable')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnExploitable from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnExploitable from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/vuln_exploitable_no_admin.py b/sysdig_client/models/vuln_exploitable_no_admin.py new file mode 100644 index 00000000..1dc771c1 --- /dev/null +++ b/sysdig_client/models/vuln_exploitable_no_admin.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class VulnExploitableNoAdmin(BaseModel): + """ + Predicate expressing \"the Vulnerability is exploitable and the exploit does not. require admin privileges\" + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnExploitableNoAdmin"]): + raise ValueError("must be one of enum values ('vulnExploitableNoAdmin')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnExploitableNoAdmin from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnExploitableNoAdmin from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/vuln_exploitable_no_user.py b/sysdig_client/models/vuln_exploitable_no_user.py new file mode 100644 index 00000000..033cdb44 --- /dev/null +++ b/sysdig_client/models/vuln_exploitable_no_user.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class VulnExploitableNoUser(BaseModel): + """ + Predicate expressing \"the Vulnerability is exploitable and the exploit does not. require user interaction\" + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnExploitableNoUser"]): + raise ValueError("must be one of enum values ('vulnExploitableNoUser')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnExploitableNoUser from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnExploitableNoUser from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/vuln_exploitable_via_network.py b/sysdig_client/models/vuln_exploitable_via_network.py new file mode 100644 index 00000000..eb1fa36d --- /dev/null +++ b/sysdig_client/models/vuln_exploitable_via_network.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class VulnExploitableViaNetwork(BaseModel): + """ + Predicate expressing \"the Vulnerability is exploitable via network\". + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnExploitableViaNetwork"]): + raise ValueError("must be one of enum values ('vulnExploitableViaNetwork')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnExploitableViaNetwork from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnExploitableViaNetwork from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/vuln_exploitable_with_age.py b/sysdig_client/models/vuln_exploitable_with_age.py new file mode 100644 index 00000000..4e489c83 --- /dev/null +++ b/sysdig_client/models/vuln_exploitable_with_age.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_exploitable_with_age_extra import VulnExploitableWithAgeExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnExploitableWithAge(BaseModel): + """ + Predicate expressing \"the Vulnerability is exploitable and the exploit is older. than days\" + """ # noqa: E501 + + type: StrictStr + extra: VulnExploitableWithAgeExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnExploitableWithAge"]): + raise ValueError("must be one of enum values ('vulnExploitableWithAge')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnExploitableWithAge from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnExploitableWithAge from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": VulnExploitableWithAgeExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/vuln_exploitable_with_age_extra.py b/sysdig_client/models/vuln_exploitable_with_age_extra.py new file mode 100644 index 00000000..0ab73cd3 --- /dev/null +++ b/sysdig_client/models/vuln_exploitable_with_age_extra.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VulnExploitableWithAgeExtra(BaseModel): + """ + VulnExploitableWithAgeExtra + """ # noqa: E501 + + age: Optional[Annotated[int, Field(le=36500, strict=True, ge=0)]] = Field( + default=None, description="The age of the exploit in days" + ) + __properties: ClassVar[List[str]] = ["age"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnExploitableWithAgeExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnExploitableWithAgeExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"age": obj.get("age")}) + return _obj diff --git a/sysdig_client/models/vuln_is_fixable.py b/sysdig_client/models/vuln_is_fixable.py new file mode 100644 index 00000000..3b0f8bb4 --- /dev/null +++ b/sysdig_client/models/vuln_is_fixable.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class VulnIsFixable(BaseModel): + """ + Predicate expressing \"the Vulnerability is Fixable\". + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnIsFixable"]): + raise ValueError("must be one of enum values ('vulnIsFixable')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnIsFixable from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnIsFixable from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/vuln_is_fixable_with_age.py b/sysdig_client/models/vuln_is_fixable_with_age.py new file mode 100644 index 00000000..2c2a4218 --- /dev/null +++ b/sysdig_client/models/vuln_is_fixable_with_age.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_is_fixable_with_age_extra import VulnIsFixableWithAgeExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnIsFixableWithAge(BaseModel): + """ + Predicate expressing \"the Vulnerability is Fixable and its fix is older than days\". + """ # noqa: E501 + + type: StrictStr + extra: VulnIsFixableWithAgeExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnIsFixableWithAge"]): + raise ValueError("must be one of enum values ('vulnIsFixableWithAge')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnIsFixableWithAge from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnIsFixableWithAge from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": VulnIsFixableWithAgeExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/vuln_is_fixable_with_age_extra.py b/sysdig_client/models/vuln_is_fixable_with_age_extra.py new file mode 100644 index 00000000..95e00118 --- /dev/null +++ b/sysdig_client/models/vuln_is_fixable_with_age_extra.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VulnIsFixableWithAgeExtra(BaseModel): + """ + VulnIsFixableWithAgeExtra + """ # noqa: E501 + + age: Optional[Annotated[int, Field(le=36500, strict=True, ge=0)]] = Field( + default=None, description="The age of the fix in days" + ) + __properties: ClassVar[List[str]] = ["age"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnIsFixableWithAgeExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnIsFixableWithAgeExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"age": obj.get("age")}) + return _obj diff --git a/sysdig_client/models/vuln_is_in_use.py b/sysdig_client/models/vuln_is_in_use.py new file mode 100644 index 00000000..180e687d --- /dev/null +++ b/sysdig_client/models/vuln_is_in_use.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class VulnIsInUse(BaseModel): + """ + The vulnerable resources currently in use. + """ # noqa: E501 + + type: StrictStr + __properties: ClassVar[List[str]] = ["type"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnIsInUse"]): + raise ValueError("must be one of enum values ('vulnIsInUse')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnIsInUse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnIsInUse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"type": obj.get("type")}) + return _obj diff --git a/sysdig_client/models/vuln_pkg_type.py b/sysdig_client/models/vuln_pkg_type.py new file mode 100644 index 00000000..58307550 --- /dev/null +++ b/sysdig_client/models/vuln_pkg_type.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_pkg_type_extra import VulnPkgTypeExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnPkgType(BaseModel): + """ + Predicate expressing \"the Vulnerability is related to a package of \". + """ # noqa: E501 + + type: StrictStr + extra: VulnPkgTypeExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnPkgType"]): + raise ValueError("must be one of enum values ('vulnPkgType')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnPkgType from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnPkgType from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + {"type": obj.get("type"), "extra": VulnPkgTypeExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None} + ) + return _obj diff --git a/sysdig_client/models/vuln_pkg_type_extra.py b/sysdig_client/models/vuln_pkg_type_extra.py new file mode 100644 index 00000000..26ea92ca --- /dev/null +++ b/sysdig_client/models/vuln_pkg_type_extra.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class VulnPkgTypeExtra(BaseModel): + """ + VulnPkgTypeExtra + """ # noqa: E501 + + pkg_type: StrictStr = Field( + description="The package type, either OS or non-OS. There is no enforcement on the value for future extensibility. ", + alias="pkgType", + ) + __properties: ClassVar[List[str]] = ["pkgType"] + + @field_validator("pkg_type") + def pkg_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["os", "nonOs"]): + raise ValueError("must be one of enum values ('os', 'nonOs')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnPkgTypeExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnPkgTypeExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"pkgType": obj.get("pkgType")}) + return _obj diff --git a/sysdig_client/models/vuln_severity.py b/sysdig_client/models/vuln_severity.py new file mode 100644 index 00000000..3e4760ff --- /dev/null +++ b/sysdig_client/models/vuln_severity.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_severity_extra import VulnSeverityExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnSeverity(BaseModel): + """ + Predicate expressing \"the Vulnerability Severity is or higher\". + """ # noqa: E501 + + type: StrictStr + extra: VulnSeverityExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnSeverity"]): + raise ValueError("must be one of enum values ('vulnSeverity')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnSeverity from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnSeverity from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": VulnSeverityExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/vuln_severity_equals.py b/sysdig_client/models/vuln_severity_equals.py new file mode 100644 index 00000000..e0188fa1 --- /dev/null +++ b/sysdig_client/models/vuln_severity_equals.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from sysdig_client.models.vuln_severity_extra import VulnSeverityExtra +from typing import Optional, Set +from typing_extensions import Self + + +class VulnSeverityEquals(BaseModel): + """ + Predicate expressing \"the Vulnerability Severity is exactly \". + """ # noqa: E501 + + type: StrictStr + extra: VulnSeverityExtra + __properties: ClassVar[List[str]] = ["type", "extra"] + + @field_validator("type") + def type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["vulnSeverityEquals"]): + raise ValueError("must be one of enum values ('vulnSeverityEquals')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnSeverityEquals from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of extra + if self.extra: + _dict["extra"] = self.extra.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnSeverityEquals from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "extra": VulnSeverityExtra.from_dict(obj["extra"]) if obj.get("extra") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/vuln_severity_extra.py b/sysdig_client/models/vuln_severity_extra.py new file mode 100644 index 00000000..a60c7dc1 --- /dev/null +++ b/sysdig_client/models/vuln_severity_extra.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing import Set +from typing_extensions import Self + + +class VulnSeverityExtra(BaseModel): + """ + VulnSeverityExtra + """ # noqa: E501 + + level: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["level"] + + @field_validator("level") + def level_validate_enum(cls, value): + """Validates the enum""" + if value is None: + return value + + if value not in set(["critical", "high", "medium", "low", "negligible"]): + raise ValueError("must be one of enum values ('critical', 'high', 'medium', 'low', 'negligible')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnSeverityExtra from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnSeverityExtra from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"level": obj.get("level")}) + return _obj diff --git a/sysdig_client/models/vuln_total_by_severity.py b/sysdig_client/models/vuln_total_by_severity.py new file mode 100644 index 00000000..7598b0fd --- /dev/null +++ b/sysdig_client/models/vuln_total_by_severity.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VulnTotalBySeverity(BaseModel): + """ + total vulnerabilities by severity + """ # noqa: E501 + + critical: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="number of critical vulnerabilities" + ) + high: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="number of high severity vulnerabilities" + ) + medium: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="number of medium severity vulnerabilities" + ) + low: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="number of low severity vulnerabilities" + ) + negligible: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=0)]] = Field( + default=None, description="number of negligible severity vulnerabilities" + ) + __properties: ClassVar[List[str]] = ["critical", "high", "medium", "low", "negligible"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnTotalBySeverity from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnTotalBySeverity from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "critical": obj.get("critical"), + "high": obj.get("high"), + "medium": obj.get("medium"), + "low": obj.get("low"), + "negligible": obj.get("negligible"), + } + ) + return _obj diff --git a/sysdig_client/models/vulnerability.py b/sysdig_client/models/vulnerability.py new file mode 100644 index 00000000..60b1d12c --- /dev/null +++ b/sysdig_client/models/vulnerability.py @@ -0,0 +1,156 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.cvss_score import CvssScore +from sysdig_client.models.exploit import Exploit +from typing import Set +from typing_extensions import Self + + +class Vulnerability(BaseModel): + """ + Vulnerability + """ # noqa: E501 + + name: Annotated[str, Field(strict=True, max_length=255)] + severity: StrictStr + cvss_score: CvssScore = Field(alias="cvssScore") + disclosure_date: Optional[date] = Field(default=None, alias="disclosureDate") + solution_date: Optional[date] = Field(default=None, alias="solutionDate") + exploitable: StrictBool + exploit: Optional[Exploit] = None + fix_version: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="fixVersion") + main_provider: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="mainProvider") + package_ref: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="reference to the affected package", alias="packageRef" + ) + risk_accept_refs: Optional[ + Annotated[List[Annotated[str, Field(strict=True, max_length=255)]], Field(min_length=0, max_length=2147483647)] + ] = Field(default=None, alias="riskAcceptRefs") + providers_metadata: Optional[Dict[str, Any]] = Field(default=None, alias="providersMetadata") + cisa_kev: Optional[Dict[str, Any]] = Field(default=None, alias="cisaKev") + __properties: ClassVar[List[str]] = [ + "name", + "severity", + "cvssScore", + "disclosureDate", + "solutionDate", + "exploitable", + "exploit", + "fixVersion", + "mainProvider", + "packageRef", + "riskAcceptRefs", + "providersMetadata", + "cisaKev", + ] + + @field_validator("severity") + def severity_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["critical", "high", "medium", "low", "negligible"]): + raise ValueError("must be one of enum values ('critical', 'high', 'medium', 'low', 'negligible')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Vulnerability from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of cvss_score + if self.cvss_score: + _dict["cvssScore"] = self.cvss_score.to_dict() + # override the default output from pydantic by calling `to_dict()` of exploit + if self.exploit: + _dict["exploit"] = self.exploit.to_dict() + # set to None if risk_accept_refs (nullable) is None + # and model_fields_set contains the field + if self.risk_accept_refs is None and "risk_accept_refs" in self.model_fields_set: + _dict["riskAcceptRefs"] = None + + # set to None if providers_metadata (nullable) is None + # and model_fields_set contains the field + if self.providers_metadata is None and "providers_metadata" in self.model_fields_set: + _dict["providersMetadata"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Vulnerability from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "name": obj.get("name"), + "severity": obj.get("severity"), + "cvssScore": CvssScore.from_dict(obj["cvssScore"]) if obj.get("cvssScore") is not None else None, + "disclosureDate": obj.get("disclosureDate"), + "solutionDate": obj.get("solutionDate"), + "exploitable": obj.get("exploitable"), + "exploit": Exploit.from_dict(obj["exploit"]) if obj.get("exploit") is not None else None, + "fixVersion": obj.get("fixVersion"), + "mainProvider": obj.get("mainProvider"), + "packageRef": obj.get("packageRef"), + "riskAcceptRefs": obj.get("riskAcceptRefs"), + "providersMetadata": obj.get("providersMetadata"), + "cisaKev": obj.get("cisaKev"), + } + ) + return _obj diff --git a/sysdig_client/models/vulnerability_management_page.py b/sysdig_client/models/vulnerability_management_page.py new file mode 100644 index 00000000..df9f23af --- /dev/null +++ b/sysdig_client/models/vulnerability_management_page.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class VulnerabilityManagementPage(BaseModel): + """ + API paging response + """ # noqa: E501 + + total: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field(default=None, description="Total of scans") + next: Optional[Annotated[str, Field(strict=True, max_length=300)]] = Field( + default=None, description="Next cursor for pagination" + ) + __properties: ClassVar[List[str]] = ["total", "next"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnerabilityManagementPage from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnerabilityManagementPage from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"total": obj.get("total"), "next": obj.get("next")}) + return _obj diff --git a/sysdig_client/models/vulnerability_summary.py b/sysdig_client/models/vulnerability_summary.py new file mode 100644 index 00000000..2b2deabb --- /dev/null +++ b/sysdig_client/models/vulnerability_summary.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + + +class VulnerabilitySummary(BaseModel): + """ + Vulnerability summary of a resource + """ # noqa: E501 + + critical_severity_count: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="Number of critical severity vulnerabilities", alias="criticalSeverityCount" + ) + high_severity_count: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="Number of high severity vulnerabilities", alias="highSeverityCount" + ) + medium_severity_count: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="Number of medium severity vulnerabilities", alias="mediumSeverityCount" + ) + low_severity_count: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="Number of low severity vulnerabilities", alias="lowSeverityCount" + ) + negligible_severity_count: Annotated[int, Field(le=2147483647, strict=True, ge=0)] = Field( + description="Number of negligible severity vulnerabilities", alias="negligibleSeverityCount" + ) + has_exploit: StrictBool = Field(description="Indicates if a resource has an exploit", alias="hasExploit") + __properties: ClassVar[List[str]] = [ + "criticalSeverityCount", + "highSeverityCount", + "mediumSeverityCount", + "lowSeverityCount", + "negligibleSeverityCount", + "hasExploit", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VulnerabilitySummary from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VulnerabilitySummary from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "criticalSeverityCount": obj.get("criticalSeverityCount"), + "highSeverityCount": obj.get("highSeverityCount"), + "mediumSeverityCount": obj.get("mediumSeverityCount"), + "lowSeverityCount": obj.get("lowSeverityCount"), + "negligibleSeverityCount": obj.get("negligibleSeverityCount"), + "hasExploit": obj.get("hasExploit"), + } + ) + return _obj diff --git a/sysdig_client/models/wasted_workload_data_request.py b/sysdig_client/models/wasted_workload_data_request.py new file mode 100644 index 00000000..1a56fff3 --- /dev/null +++ b/sysdig_client/models/wasted_workload_data_request.py @@ -0,0 +1,112 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.date_range import DateRange +from sysdig_client.models.promql_matcher import PromqlMatcher +from typing import Set +from typing_extensions import Self + + +class WastedWorkloadDataRequest(BaseModel): + """ + WastedWorkloadDataRequest + """ # noqa: E501 + + date_range: DateRange = Field(alias="dateRange") + scope: Optional[Annotated[List[PromqlMatcher], Field(max_length=512)]] = Field( + default=None, description="A list of PromQL-style filters" + ) + group_by: Optional[ + Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=1024)]], Field(max_length=7)] + ] = Field( + default=None, + description="Specifies Prometheus labels to group the report data by. By default, the following labels will always be included: - kube_cluster_name - kube_namespace_name - kube_workload_name A maximum of 7 additional custom labels can be specified. ", + alias="groupBy", + ) + __properties: ClassVar[List[str]] = ["dateRange", "scope", "groupBy"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WastedWorkloadDataRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of date_range + if self.date_range: + _dict["dateRange"] = self.date_range.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in scope (list) + _items = [] + if self.scope: + for _item_scope in self.scope: + if _item_scope: + _items.append(_item_scope.to_dict()) + _dict["scope"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WastedWorkloadDataRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "dateRange": DateRange.from_dict(obj["dateRange"]) if obj.get("dateRange") is not None else None, + "scope": [PromqlMatcher.from_dict(_item) for _item in obj["scope"]] if obj.get("scope") is not None else None, + "groupBy": obj.get("groupBy"), + } + ) + return _obj diff --git a/sysdig_client/models/wasted_workload_spend_data_response.py b/sysdig_client/models/wasted_workload_spend_data_response.py new file mode 100644 index 00000000..7c28cebd --- /dev/null +++ b/sysdig_client/models/wasted_workload_spend_data_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.wasted_workload_spend_data_response_group_by_data_inner import ( + WastedWorkloadSpendDataResponseGroupByDataInner, +) +from sysdig_client.models.wasted_workload_spend_data_response_total import WastedWorkloadSpendDataResponseTotal +from typing import Set +from typing_extensions import Self + + +class WastedWorkloadSpendDataResponse(BaseModel): + """ + Aggregated and grouped cost data representing Wasted Workload Spend over a specific date range. + """ # noqa: E501 + + total: Optional[WastedWorkloadSpendDataResponseTotal] = None + group_by_data: Optional[Annotated[List[WastedWorkloadSpendDataResponseGroupByDataInner], Field(max_length=10000)]] = Field( + default=None, description="Grouped cost data for each combination of Prometheus label values.", alias="groupByData" + ) + __properties: ClassVar[List[str]] = ["total", "groupByData"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WastedWorkloadSpendDataResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of total + if self.total: + _dict["total"] = self.total.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in group_by_data (list) + _items = [] + if self.group_by_data: + for _item_group_by_data in self.group_by_data: + if _item_group_by_data: + _items.append(_item_group_by_data.to_dict()) + _dict["groupByData"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WastedWorkloadSpendDataResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "total": WastedWorkloadSpendDataResponseTotal.from_dict(obj["total"]) if obj.get("total") is not None else None, + "groupByData": [WastedWorkloadSpendDataResponseGroupByDataInner.from_dict(_item) for _item in obj["groupByData"]] + if obj.get("groupByData") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/wasted_workload_spend_data_response_group_by_data_inner.py b/sysdig_client/models/wasted_workload_spend_data_response_group_by_data_inner.py new file mode 100644 index 00000000..bcf152f2 --- /dev/null +++ b/sysdig_client/models/wasted_workload_spend_data_response_group_by_data_inner.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class WastedWorkloadSpendDataResponseGroupByDataInner(BaseModel): + """ + WastedWorkloadSpendDataResponseGroupByDataInner + """ # noqa: E501 + + group: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=1024)]]] = Field( + default=None, description="Key-value pairs representing grouping labels." + ) + accrued: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Accrued cost for this group.") + estimated: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Estimated cost for this group.") + wasted: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Wasted cost for this group.") + __properties: ClassVar[List[str]] = ["group", "accrued", "estimated", "wasted"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WastedWorkloadSpendDataResponseGroupByDataInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WastedWorkloadSpendDataResponseGroupByDataInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "group": obj.get("group"), + "accrued": obj.get("accrued"), + "estimated": obj.get("estimated"), + "wasted": obj.get("wasted"), + } + ) + return _obj diff --git a/sysdig_client/models/wasted_workload_spend_data_response_total.py b/sysdig_client/models/wasted_workload_spend_data_response_total.py new file mode 100644 index 00000000..02d56c26 --- /dev/null +++ b/sysdig_client/models/wasted_workload_spend_data_response_total.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing import Set +from typing_extensions import Self + + +class WastedWorkloadSpendDataResponseTotal(BaseModel): + """ + Aggregated cost values for the specified time range. + """ # noqa: E501 + + accrued: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Total cost accrued during the reporting period." + ) + estimated: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Estimated efficient cost during the reporting period." + ) + wasted: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Difference between accrued and estimated cost." + ) + __properties: ClassVar[List[str]] = ["accrued", "estimated", "wasted"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WastedWorkloadSpendDataResponseTotal from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WastedWorkloadSpendDataResponseTotal from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"accrued": obj.get("accrued"), "estimated": obj.get("estimated"), "wasted": obj.get("wasted")}) + return _obj diff --git a/sysdig_client/models/webhook_notification_channel_options_v1.py b/sysdig_client/models/webhook_notification_channel_options_v1.py new file mode 100644 index 00000000..f19bfc1f --- /dev/null +++ b/sysdig_client/models/webhook_notification_channel_options_v1.py @@ -0,0 +1,116 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class WebhookNotificationChannelOptionsV1(BaseModel): + """ + The Webhook notification channel options + """ # noqa: E501 + + has_hiding_of_sensitive_info: Optional[StrictBool] = Field( + default=None, + description="Whether the notification info should be hidden when notifications are sent to this notification channel", + alias="hasHidingOfSensitiveInfo", + ) + url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field( + default=None, description="The url to which the request should be posted" + ) + is_allows_insecure_connections: Optional[StrictBool] = Field( + default=None, + description="Specifies if the channel allows insecure connections (e.g. plain http, self-signed https)", + alias="isAllowsInsecureConnections", + ) + additional_headers: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=255)]]] = Field( + default=None, description="Additional headers to send in the request to the target url", alias="additionalHeaders" + ) + custom_data: Optional[Dict[str, Dict[str, Any]]] = Field( + default=None, description="Additional data to be added to the template rendering context", alias="customData" + ) + __properties: ClassVar[List[str]] = [ + "hasHidingOfSensitiveInfo", + "url", + "isAllowsInsecureConnections", + "additionalHeaders", + "customData", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WebhookNotificationChannelOptionsV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WebhookNotificationChannelOptionsV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "hasHidingOfSensitiveInfo": obj.get("hasHidingOfSensitiveInfo"), + "url": obj.get("url"), + "isAllowsInsecureConnections": obj.get("isAllowsInsecureConnections"), + "additionalHeaders": obj.get("additionalHeaders"), + "customData": obj.get("customData"), + } + ) + return _obj diff --git a/sysdig_client/models/webhook_notification_channel_response_v1.py b/sysdig_client/models/webhook_notification_channel_response_v1.py new file mode 100644 index 00000000..407c2970 --- /dev/null +++ b/sysdig_client/models/webhook_notification_channel_response_v1.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 +from sysdig_client.models.webhook_notification_channel_options_v1 import WebhookNotificationChannelOptionsV1 +from typing import Set +from typing_extensions import Self + + +class WebhookNotificationChannelResponseV1(NotificationChannelResponseV1): + """ + WebhookNotificationChannelResponseV1 + """ # noqa: E501 + + team_id: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, + description="ID of team that owns the notification channel. If null, this will be a global notification channel", + alias="teamId", + ) + is_enabled: Optional[StrictBool] = Field( + default=False, description="Indicates if the notification channel is enabled or not.", alias="isEnabled" + ) + name: Annotated[str, Field(strict=True, max_length=255)] = Field( + description="Name of the notification channel. It must be unique." + ) + has_test_notification_enabled: Optional[StrictBool] = Field( + default=False, + description="Indicates whether or not a test notification should be sent upon creation or update of this notification channel resource", + alias="hasTestNotificationEnabled", + ) + options: WebhookNotificationChannelOptionsV1 + __properties: ClassVar[List[str]] = [ + "teamId", + "isEnabled", + "name", + "hasTestNotificationEnabled", + "type", + "customerId", + "id", + "version", + "createdOn", + "modifiedOn", + "options", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WebhookNotificationChannelResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of options + if self.options: + _dict["options"] = self.options.to_dict() + # set to None if team_id (nullable) is None + # and model_fields_set contains the field + if self.team_id is None and "team_id" in self.model_fields_set: + _dict["teamId"] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WebhookNotificationChannelResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "teamId": obj.get("teamId"), + "isEnabled": obj.get("isEnabled") if obj.get("isEnabled") is not None else False, + "name": obj.get("name"), + "hasTestNotificationEnabled": obj.get("hasTestNotificationEnabled") + if obj.get("hasTestNotificationEnabled") is not None + else False, + "type": obj.get("type"), + "customerId": obj.get("customerId"), + "id": obj.get("id"), + "version": obj.get("version"), + "createdOn": obj.get("createdOn"), + "modifiedOn": obj.get("modifiedOn"), + "options": WebhookNotificationChannelOptionsV1.from_dict(obj["options"]) + if obj.get("options") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/workload_cost_trends_data_request.py b/sysdig_client/models/workload_cost_trends_data_request.py new file mode 100644 index 00000000..9571fd06 --- /dev/null +++ b/sysdig_client/models/workload_cost_trends_data_request.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date +from pydantic import BaseModel, ConfigDict, Field, field_validator +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from sysdig_client.models.promql_matcher import PromqlMatcher +from typing import Set +from typing_extensions import Self + + +class WorkloadCostTrendsDataRequest(BaseModel): + """ + WorkloadCostTrendsDataRequest + """ # noqa: E501 + + trend_range_in_days: Union[ + Annotated[float, Field(le=30, strict=True, ge=1)], Annotated[int, Field(le=30, strict=True, ge=1)] + ] = Field( + description="Specifies the number of days used to calculate and extract cost data. Must be a positive integer. ", + alias="trendRangeInDays", + ) + var_date: date = Field( + description="The reference date used to define the time window for cost trend calculation. When combined with `trendRangeInDays`, this date represents the inclusive upper bound of the time range — the trend is calculated from (`date - trendRangeInDays`). For example, if `date` is 2025-02-12 and `trendRangeInDays` is 10, the time range used for calculation is from 2025-02-03 to 2025-02-12 (inclusive). Must be in YYYY-MM-DD format. ", + alias="date", + ) + scope: Optional[Annotated[List[PromqlMatcher], Field(max_length=512)]] = Field( + default=None, description="A list of PromQL-style filters" + ) + group_by: Optional[ + Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=1024)]], Field(max_length=10)] + ] = Field(default=None, alias="groupBy") + __properties: ClassVar[List[str]] = ["trendRangeInDays", "date", "scope", "groupBy"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in scope (list) + _items = [] + if self.scope: + for _item_scope in self.scope: + if _item_scope: + _items.append(_item_scope.to_dict()) + _dict["scope"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "trendRangeInDays": obj.get("trendRangeInDays"), + "date": obj.get("date"), + "scope": [PromqlMatcher.from_dict(_item) for _item in obj["scope"]] if obj.get("scope") is not None else None, + "groupBy": obj.get("groupBy"), + } + ) + return _obj diff --git a/sysdig_client/models/workload_cost_trends_data_response.py b/sysdig_client/models/workload_cost_trends_data_response.py new file mode 100644 index 00000000..f234f65a --- /dev/null +++ b/sysdig_client/models/workload_cost_trends_data_response.py @@ -0,0 +1,119 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.date_range import DateRange +from sysdig_client.models.workload_cost_trends_data_response_group_by_data_inner import ( + WorkloadCostTrendsDataResponseGroupByDataInner, +) +from sysdig_client.models.workload_cost_trends_data_response_total import WorkloadCostTrendsDataResponseTotal +from typing import Set +from typing_extensions import Self + + +class WorkloadCostTrendsDataResponse(BaseModel): + """ + Cost trends observed between two consecutive time periods in the past. + """ # noqa: E501 + + current_range: Optional[DateRange] = Field(default=None, alias="currentRange") + previous_range: Optional[DateRange] = Field(default=None, alias="previousRange") + total: Optional[WorkloadCostTrendsDataResponseTotal] = None + group_by_data: Optional[Annotated[List[WorkloadCostTrendsDataResponseGroupByDataInner], Field(max_length=10000)]] = Field( + default=None, description="Grouped cost data for each combination of label values.", alias="groupByData" + ) + __properties: ClassVar[List[str]] = ["currentRange", "previousRange", "total", "groupByData"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of current_range + if self.current_range: + _dict["currentRange"] = self.current_range.to_dict() + # override the default output from pydantic by calling `to_dict()` of previous_range + if self.previous_range: + _dict["previousRange"] = self.previous_range.to_dict() + # override the default output from pydantic by calling `to_dict()` of total + if self.total: + _dict["total"] = self.total.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in group_by_data (list) + _items = [] + if self.group_by_data: + for _item_group_by_data in self.group_by_data: + if _item_group_by_data: + _items.append(_item_group_by_data.to_dict()) + _dict["groupByData"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "currentRange": DateRange.from_dict(obj["currentRange"]) if obj.get("currentRange") is not None else None, + "previousRange": DateRange.from_dict(obj["previousRange"]) if obj.get("previousRange") is not None else None, + "total": WorkloadCostTrendsDataResponseTotal.from_dict(obj["total"]) if obj.get("total") is not None else None, + "groupByData": [WorkloadCostTrendsDataResponseGroupByDataInner.from_dict(_item) for _item in obj["groupByData"]] + if obj.get("groupByData") is not None + else None, + } + ) + return _obj diff --git a/sysdig_client/models/workload_cost_trends_data_response_current_range.py b/sysdig_client/models/workload_cost_trends_data_response_current_range.py new file mode 100644 index 00000000..e1dbd6a7 --- /dev/null +++ b/sysdig_client/models/workload_cost_trends_data_response_current_range.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class WorkloadCostTrendsDataResponseCurrentRange(BaseModel): + """ + WorkloadCostTrendsDataResponseCurrentRange + """ # noqa: E501 + + start_date: date = Field(description="The beginning of the date range.", alias="startDate") + end_date: date = Field(description="The end of the date range.", alias="endDate") + __properties: ClassVar[List[str]] = ["startDate", "endDate"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponseCurrentRange from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponseCurrentRange from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"startDate": obj.get("startDate"), "endDate": obj.get("endDate")}) + return _obj diff --git a/sysdig_client/models/workload_cost_trends_data_response_group_by_data_inner.py b/sysdig_client/models/workload_cost_trends_data_response_group_by_data_inner.py new file mode 100644 index 00000000..4672079a --- /dev/null +++ b/sysdig_client/models/workload_cost_trends_data_response_group_by_data_inner.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class WorkloadCostTrendsDataResponseGroupByDataInner(BaseModel): + """ + WorkloadCostTrendsDataResponseGroupByDataInner + """ # noqa: E501 + + group: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=1024)]]] = Field( + default=None, description="Key-value pairs representing the grouping labels." + ) + current: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="The cost for the current range within this group." + ) + previous: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="The cost for the previous range within this group." + ) + change: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="The difference in cost between current and previous ranges for this group." + ) + __properties: ClassVar[List[str]] = ["group", "current", "previous", "change"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponseGroupByDataInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponseGroupByDataInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "group": obj.get("group"), + "current": obj.get("current"), + "previous": obj.get("previous"), + "change": obj.get("change"), + } + ) + return _obj diff --git a/sysdig_client/models/workload_cost_trends_data_response_previous_range.py b/sysdig_client/models/workload_cost_trends_data_response_previous_range.py new file mode 100644 index 00000000..ec826886 --- /dev/null +++ b/sysdig_client/models/workload_cost_trends_data_response_previous_range.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import date +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class WorkloadCostTrendsDataResponsePreviousRange(BaseModel): + """ + WorkloadCostTrendsDataResponsePreviousRange + """ # noqa: E501 + + start_date: date = Field(description="The beginning of the date range.", alias="startDate") + end_date: date = Field(description="The end of the date range.", alias="endDate") + __properties: ClassVar[List[str]] = ["startDate", "endDate"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponsePreviousRange from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponsePreviousRange from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"startDate": obj.get("startDate"), "endDate": obj.get("endDate")}) + return _obj diff --git a/sysdig_client/models/workload_cost_trends_data_response_total.py b/sysdig_client/models/workload_cost_trends_data_response_total.py new file mode 100644 index 00000000..ff368559 --- /dev/null +++ b/sysdig_client/models/workload_cost_trends_data_response_total.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing import Set +from typing_extensions import Self + + +class WorkloadCostTrendsDataResponseTotal(BaseModel): + """ + Aggregated cost values for the current and previous ranges. + """ # noqa: E501 + + current: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The total cost for the current range.") + previous: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The total cost for the previous range.") + change: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="The difference between the current and the previous cost periods expressed in percentages." + ) + __properties: ClassVar[List[str]] = ["current", "previous", "change"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponseTotal from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadCostTrendsDataResponseTotal from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"current": obj.get("current"), "previous": obj.get("previous"), "change": obj.get("change")}) + return _obj diff --git a/sysdig_client/models/workload_ml_runtime_detection_content.py b/sysdig_client/models/workload_ml_runtime_detection_content.py new file mode 100644 index 00000000..0515d449 --- /dev/null +++ b/sysdig_client/models/workload_ml_runtime_detection_content.py @@ -0,0 +1,101 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Union +from typing_extensions import Annotated +from sysdig_client.models.event_content_type import EventContentType +from typing import Optional, Set +from typing_extensions import Self + + +class WorkloadMlRuntimeDetectionContent(BaseModel): + """ + Workload ML event content + """ # noqa: E501 + + type: EventContentType + command: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="The command name") + exe: Annotated[str, Field(strict=True, max_length=1024)] = Field(description="The command path") + detected_class_probability: Union[ + Annotated[float, Field(le=1, strict=True, ge=0)], Annotated[int, Field(le=1, strict=True, ge=0)] + ] = Field(description="The detected class probability (confidence score)", alias="detectedClassProbability") + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field( + description="ID of the policy that generated the event", alias="policyId" + ) + __properties: ClassVar[List[str]] = ["type", "command", "exe", "detectedClassProbability", "policyId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadMlRuntimeDetectionContent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadMlRuntimeDetectionContent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "command": obj.get("command"), + "exe": obj.get("exe"), + "detectedClassProbability": obj.get("detectedClassProbability"), + "policyId": obj.get("policyId"), + } + ) + return _obj diff --git a/sysdig_client/models/workload_rightsizing_data_request.py b/sysdig_client/models/workload_rightsizing_data_request.py new file mode 100644 index 00000000..d8f89a24 --- /dev/null +++ b/sysdig_client/models/workload_rightsizing_data_request.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.date_range import DateRange +from sysdig_client.models.promql_matcher import PromqlMatcher +from typing import Set +from typing_extensions import Self + + +class WorkloadRightsizingDataRequest(BaseModel): + """ + WorkloadRightsizingDataRequest + """ # noqa: E501 + + date_range: DateRange = Field(alias="dateRange") + algorithm: Annotated[str, Field(strict=True, max_length=64)] = Field( + description="Aggregation algorithm used for rightsizing analysis. Currently supported values are: - AVG - P95 - MAX This field is case-sensitive and may support more values in the future. " + ) + scope: Optional[Annotated[List[PromqlMatcher], Field(max_length=512)]] = Field( + default=None, description="A list of PromQL-style filters" + ) + __properties: ClassVar[List[str]] = ["dateRange", "algorithm", "scope"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadRightsizingDataRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of date_range + if self.date_range: + _dict["dateRange"] = self.date_range.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in scope (list) + _items = [] + if self.scope: + for _item_scope in self.scope: + if _item_scope: + _items.append(_item_scope.to_dict()) + _dict["scope"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadRightsizingDataRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "dateRange": DateRange.from_dict(obj["dateRange"]) if obj.get("dateRange") is not None else None, + "algorithm": obj.get("algorithm"), + "scope": [PromqlMatcher.from_dict(_item) for _item in obj["scope"]] if obj.get("scope") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/workload_rightsizing_data_response.py b/sysdig_client/models/workload_rightsizing_data_response.py new file mode 100644 index 00000000..4d5f5650 --- /dev/null +++ b/sysdig_client/models/workload_rightsizing_data_response.py @@ -0,0 +1,104 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.workload_rightsizing_data_response_group_by_data_inner import ( + WorkloadRightsizingDataResponseGroupByDataInner, +) +from typing import Set +from typing_extensions import Self + + +class WorkloadRightsizingDataResponse(BaseModel): + """ + Cost data representing Workload Rightsizing over a specific date range. + """ # noqa: E501 + + group_by_data: Optional[Annotated[List[WorkloadRightsizingDataResponseGroupByDataInner], Field(max_length=10000)]] = Field( + default=None, + description="Grouped workload rightsizing data by cluster, namespace, workload, and container.", + alias="groupByData", + ) + __properties: ClassVar[List[str]] = ["groupByData"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadRightsizingDataResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in group_by_data (list) + _items = [] + if self.group_by_data: + for _item_group_by_data in self.group_by_data: + if _item_group_by_data: + _items.append(_item_group_by_data.to_dict()) + _dict["groupByData"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadRightsizingDataResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "groupByData": [WorkloadRightsizingDataResponseGroupByDataInner.from_dict(_item) for _item in obj["groupByData"]] + if obj.get("groupByData") is not None + else None + } + ) + return _obj diff --git a/sysdig_client/models/workload_rightsizing_data_response_group_by_data_inner.py b/sysdig_client/models/workload_rightsizing_data_response_group_by_data_inner.py new file mode 100644 index 00000000..a7b82081 --- /dev/null +++ b/sysdig_client/models/workload_rightsizing_data_response_group_by_data_inner.py @@ -0,0 +1,135 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class WorkloadRightsizingDataResponseGroupByDataInner(BaseModel): + """ + WorkloadRightsizingDataResponseGroupByDataInner + """ # noqa: E501 + + group: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=1024)]]] = Field( + default=None, + description="Key-value pairs representing the logical grouping keys. The data is grouped by the following dimensions: - cluster - namespace - workload - container ", + ) + suggested_cpu: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Suggested CPU allocation (in milicores).", alias="suggestedCpu" + ) + suggested_memory: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Suggested memory allocation (in MiB).", alias="suggestedMemory" + ) + monthly_cost: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Estimated current monthly cost in USD.", alias="monthlyCost" + ) + monthly_potential_savings: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Estimated potential monthly savings in USD.", alias="monthlyPotentialSavings" + ) + workload_type: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field( + default=None, + description="Type of Kubernetes workload. Possible values include: - Deployment - StatefulSet - DaemonSet - Job - CronJob - ReplicaSet - ReplicationController ", + alias="workloadType", + ) + number_of_pods: Optional[Annotated[int, Field(le=2147483647, strict=True, ge=0)]] = Field( + default=None, description="Number of pods currently running in the workload.", alias="numberOfPods" + ) + requested_cpu: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="CPU requested by the container (in milicores).", alias="requestedCpu" + ) + requested_memory: Optional[Union[StrictFloat, StrictInt]] = Field( + default=None, description="Memory requested by the container (in MiB).", alias="requestedMemory" + ) + __properties: ClassVar[List[str]] = [ + "group", + "suggestedCpu", + "suggestedMemory", + "monthlyCost", + "monthlyPotentialSavings", + "workloadType", + "numberOfPods", + "requestedCpu", + "requestedMemory", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadRightsizingDataResponseGroupByDataInner from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadRightsizingDataResponseGroupByDataInner from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "group": obj.get("group"), + "suggestedCpu": obj.get("suggestedCpu"), + "suggestedMemory": obj.get("suggestedMemory"), + "monthlyCost": obj.get("monthlyCost"), + "monthlyPotentialSavings": obj.get("monthlyPotentialSavings"), + "workloadType": obj.get("workloadType"), + "numberOfPods": obj.get("numberOfPods"), + "requestedCpu": obj.get("requestedCpu"), + "requestedMemory": obj.get("requestedMemory"), + } + ) + return _obj diff --git a/sysdig_client/models/workload_runtime_detection_content.py b/sysdig_client/models/workload_runtime_detection_content.py new file mode 100644 index 00000000..6a12343f --- /dev/null +++ b/sysdig_client/models/workload_runtime_detection_content.py @@ -0,0 +1,141 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.event_content_type import EventContentType +from sysdig_client.models.policy_origin import PolicyOrigin +from sysdig_client.models.workload_runtime_detection_content_all_of_fields import WorkloadRuntimeDetectionContentAllOfFields +from typing import Set +from typing_extensions import Self + + +class WorkloadRuntimeDetectionContent(BaseModel): + """ + Policy Event + """ # noqa: E501 + + type: EventContentType + policy_id: Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)] = Field( + description="ID of the policy that generated the event", alias="policyId" + ) + rule_name: Annotated[str, Field(strict=True, max_length=1024)] = Field( + description="Name of the rule the event is generated after", alias="ruleName" + ) + rule_type: Annotated[int, Field(le=14, strict=True, ge=1)] = Field( + description="Rule type: - 1 - List matching - process - 2 - List matching - container - 3 - List matching - file - 4 - List matching - network - 5 - List matching - syscall - 6 - Falco - 7 - Drift detection - 8 - Malware detection - 11 - ML - Cryptominer detection - 13 - ML - AWS anomalous login - 14 - ML - Okta anomalous login ", + alias="ruleType", + ) + rule_sub_type: Annotated[int, Field(le=5, strict=True, ge=1)] = Field( + description="Rule subtype: - 1 - List matching - network - inbound - 2 - List matching - network - outbound - 3 - List matching - network - listening - 4 - List matching - file - readwrite - 5 - List matching - file - read only ", + alias="ruleSubType", + ) + rule_tags: Annotated[List[Annotated[str, Field(strict=True, max_length=64)]], Field(max_length=1000)] = Field( + description="The tags attached to the rule", alias="ruleTags" + ) + output: Annotated[str, Field(strict=True, max_length=2048)] = Field( + description="Event output, generated after the configured rule" + ) + fields: WorkloadRuntimeDetectionContentAllOfFields + run_book: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="The runbook URL as configured in the policy.", alias="runBook" + ) + origin: Optional[PolicyOrigin] = None + __properties: ClassVar[List[str]] = [ + "type", + "policyId", + "ruleName", + "ruleType", + "ruleSubType", + "ruleTags", + "output", + "fields", + "runBook", + "origin", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadRuntimeDetectionContent from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of fields + if self.fields: + _dict["fields"] = self.fields.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadRuntimeDetectionContent from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "type": obj.get("type"), + "policyId": obj.get("policyId"), + "ruleName": obj.get("ruleName"), + "ruleType": obj.get("ruleType"), + "ruleSubType": obj.get("ruleSubType"), + "ruleTags": obj.get("ruleTags"), + "output": obj.get("output"), + "fields": WorkloadRuntimeDetectionContentAllOfFields.from_dict(obj["fields"]) + if obj.get("fields") is not None + else None, + "runBook": obj.get("runBook"), + "origin": obj.get("origin"), + } + ) + return _obj diff --git a/sysdig_client/models/workload_runtime_detection_content_all_of_fields.py b/sysdig_client/models/workload_runtime_detection_content_all_of_fields.py new file mode 100644 index 00000000..9aeea07a --- /dev/null +++ b/sysdig_client/models/workload_runtime_detection_content_all_of_fields.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + + +class WorkloadRuntimeDetectionContentAllOfFields(BaseModel): + """ + WorkloadRuntimeDetectionContentAllOfFields + """ # noqa: E501 + + __properties: ClassVar[List[str]] = [] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of WorkloadRuntimeDetectionContentAllOfFields from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of WorkloadRuntimeDetectionContentAllOfFields from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({}) + return _obj diff --git a/sysdig_client/models/zone.py b/sysdig_client/models/zone.py new file mode 100644 index 00000000..4bad2978 --- /dev/null +++ b/sysdig_client/models/zone.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class Zone(BaseModel): + """ + A collection of scopes representing business areas. + """ # noqa: E501 + + zone_name: Annotated[str, Field(strict=True, max_length=256)] = Field(description="Zone name", alias="zoneName") + zone_id: Optional[Annotated[int, Field(le=9223372036854775616, strict=True, ge=1)]] = Field( + default=None, description="Zone ID", alias="zoneId" + ) + __properties: ClassVar[List[str]] = ["zoneName", "zoneId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Zone from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Zone from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"zoneName": obj.get("zoneName"), "zoneId": obj.get("zoneId")}) + return _obj diff --git a/sysdig_client/models/zone_response_v1.py b/sysdig_client/models/zone_response_v1.py new file mode 100644 index 00000000..8773a54e --- /dev/null +++ b/sysdig_client/models/zone_response_v1.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from sysdig_client.models.zone_scope import ZoneScope +from typing import Set +from typing_extensions import Self + + +class ZoneResponseV1(BaseModel): + """ + ZoneResponseV1 + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + name: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field(default=None, description="The name of the Zone") + description: Optional[Annotated[str, Field(strict=True, max_length=8192)]] = Field( + default=None, description="The description of the Zone" + ) + author: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Email of the user who created this Zone" + ) + last_modified_by: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field( + default=None, description="Email of the user who last modified the Zone", alias="lastModifiedBy" + ) + last_updated: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=None, + description="Timestamp indicating the moment the Zone has been last updated.\\ It is expressed in milliseconds elapsed since January 1, 1970 UTC. ", + alias="lastUpdated", + ) + is_system: Optional[StrictBool] = Field( + default=None, description="Boolean value indicating if the Zone is a *System* one", alias="isSystem" + ) + scopes: Optional[Annotated[List[ZoneScope], Field(max_length=8192)]] = Field(default=None, description="Attached Zone Scopes") + __properties: ClassVar[List[str]] = [ + "id", + "name", + "description", + "author", + "lastModifiedBy", + "lastUpdated", + "isSystem", + "scopes", + ] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ZoneResponseV1 from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in scopes (list) + _items = [] + if self.scopes: + for _item_scopes in self.scopes: + if _item_scopes: + _items.append(_item_scopes.to_dict()) + _dict["scopes"] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ZoneResponseV1 from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "id": obj.get("id"), + "name": obj.get("name"), + "description": obj.get("description"), + "author": obj.get("author"), + "lastModifiedBy": obj.get("lastModifiedBy"), + "lastUpdated": obj.get("lastUpdated"), + "isSystem": obj.get("isSystem"), + "scopes": [ZoneScope.from_dict(_item) for _item in obj["scopes"]] if obj.get("scopes") is not None else None, + } + ) + return _obj diff --git a/sysdig_client/models/zone_scope.py b/sysdig_client/models/zone_scope.py new file mode 100644 index 00000000..01fbf18a --- /dev/null +++ b/sysdig_client/models/zone_scope.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Set +from typing_extensions import Self + + +class ZoneScope(BaseModel): + """ + ZoneScope + """ # noqa: E501 + + id: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description=" ") + target_type: Annotated[str, Field(strict=True, max_length=512)] = Field( + description="The target type of the Scope", alias="targetType" + ) + rules: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field( + default=None, description="Scoping rules to be applied" + ) + __properties: ClassVar[List[str]] = ["id", "targetType", "rules"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ZoneScope from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ZoneScope from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({"id": obj.get("id"), "targetType": obj.get("targetType"), "rules": obj.get("rules")}) + return _obj diff --git a/sysdig_client/py.typed b/sysdig_client/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/sysdig_client/rest.py b/sysdig_client/rest.py new file mode 100644 index 00000000..7e557c3e --- /dev/null +++ b/sysdig_client/rest.py @@ -0,0 +1,203 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import io +import json +import re +import ssl + +import urllib3 + +from sysdig_client.exceptions import ApiException, ApiValueError + +SUPPORTED_SOCKS_PROXIES = {"socks5", "socks5h", "socks4", "socks4a"} +RESTResponseType = urllib3.HTTPResponse + + +def is_socks_proxy_url(url): + if url is None: + return False + split_section = url.split("://") + if len(split_section) < 2: + return False + else: + return split_section[0].lower() in SUPPORTED_SOCKS_PROXIES + + +class RESTResponse(io.IOBase): + def __init__(self, resp) -> None: + self.response = resp + self.status = resp.status + self.reason = resp.reason + self.data = None + + def read(self): + if self.data is None: + self.data = self.response.data + return self.data + + def getheaders(self): + """Returns a dictionary of the response headers.""" + return self.response.headers + + def getheader(self, name, default=None): + """Returns a given response header.""" + return self.response.headers.get(name, default) + + +class RESTClientObject: + def __init__(self, configuration) -> None: + # urllib3.PoolManager will pass all kw parameters to connectionpool + # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501 + # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501 + # Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501 + + # cert_reqs + if configuration.verify_ssl: + cert_reqs = ssl.CERT_REQUIRED + else: + cert_reqs = ssl.CERT_NONE + + pool_args = { + "cert_reqs": cert_reqs, + "ca_certs": configuration.ssl_ca_cert, + "cert_file": configuration.cert_file, + "key_file": configuration.key_file, + "ca_cert_data": configuration.ca_cert_data, + } + if configuration.assert_hostname is not None: + pool_args["assert_hostname"] = configuration.assert_hostname + + if configuration.retries is not None: + pool_args["retries"] = configuration.retries + + if configuration.tls_server_name: + pool_args["server_hostname"] = configuration.tls_server_name + + if configuration.socket_options is not None: + pool_args["socket_options"] = configuration.socket_options + + if configuration.connection_pool_maxsize is not None: + pool_args["maxsize"] = configuration.connection_pool_maxsize + + # https pool manager + self.pool_manager: urllib3.PoolManager + + if configuration.proxy: + if is_socks_proxy_url(configuration.proxy): + from urllib3.contrib.socks import SOCKSProxyManager + + pool_args["proxy_url"] = configuration.proxy + pool_args["headers"] = configuration.proxy_headers + self.pool_manager = SOCKSProxyManager(**pool_args) + else: + pool_args["proxy_url"] = configuration.proxy + pool_args["proxy_headers"] = configuration.proxy_headers + self.pool_manager = urllib3.ProxyManager(**pool_args) + else: + self.pool_manager = urllib3.PoolManager(**pool_args) + + def request(self, method, url, headers=None, body=None, post_params=None, _request_timeout=None): + """Perform requests. + + :param method: http request method + :param url: http request url + :param headers: http request headers + :param body: request json body, for `application/json` + :param post_params: request post parameters, + `application/x-www-form-urlencoded` + and `multipart/form-data` + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + """ + method = method.upper() + assert method in ["GET", "HEAD", "DELETE", "POST", "PUT", "PATCH", "OPTIONS"] + + if post_params and body: + raise ApiValueError("body parameter cannot be used with post_params parameter.") + + post_params = post_params or {} + headers = headers or {} + + timeout = None + if _request_timeout: + if isinstance(_request_timeout, (int, float)): + timeout = urllib3.Timeout(total=_request_timeout) + elif isinstance(_request_timeout, tuple) and len(_request_timeout) == 2: + timeout = urllib3.Timeout(connect=_request_timeout[0], read=_request_timeout[1]) + + try: + # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` + if method in ["POST", "PUT", "PATCH", "OPTIONS", "DELETE"]: + # no content type provided or payload is json + content_type = headers.get("Content-Type") + if not content_type or re.search("json", content_type, re.IGNORECASE): + request_body = None + if body is not None: + request_body = json.dumps(body) + r = self.pool_manager.request( + method, url, body=request_body, timeout=timeout, headers=headers, preload_content=False + ) + elif content_type == "application/x-www-form-urlencoded": + r = self.pool_manager.request( + method, + url, + fields=post_params, + encode_multipart=False, + timeout=timeout, + headers=headers, + preload_content=False, + ) + elif content_type == "multipart/form-data": + # must del headers['Content-Type'], or the correct + # Content-Type which generated by urllib3 will be + # overwritten. + del headers["Content-Type"] + # Ensures that dict objects are serialized + post_params = [(a, json.dumps(b)) if isinstance(b, dict) else (a, b) for a, b in post_params] + r = self.pool_manager.request( + method, + url, + fields=post_params, + encode_multipart=True, + timeout=timeout, + headers=headers, + preload_content=False, + ) + # Pass a `string` parameter directly in the body to support + # other content types than JSON when `body` argument is + # provided in serialized form. + elif isinstance(body, str) or isinstance(body, bytes): + r = self.pool_manager.request(method, url, body=body, timeout=timeout, headers=headers, preload_content=False) + elif headers["Content-Type"].startswith("text/") and isinstance(body, bool): + request_body = "true" if body else "false" + r = self.pool_manager.request( + method, url, body=request_body, preload_content=False, timeout=timeout, headers=headers + ) + else: + # Cannot generate the request from given parameters + msg = """Cannot prepare a request message for provided + arguments. Please check that your arguments match + declared content type.""" + raise ApiException(status=0, reason=msg) + # For `GET`, `HEAD` + else: + r = self.pool_manager.request(method, url, fields={}, timeout=timeout, headers=headers, preload_content=False) + except urllib3.exceptions.SSLError as e: + msg = "\n".join([type(e).__name__, str(e)]) + raise ApiException(status=0, reason=msg) + + return RESTResponse(r) diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/test_access_key_response_v1.py b/test/test_access_key_response_v1.py new file mode 100644 index 00000000..b1c27935 --- /dev/null +++ b/test/test_access_key_response_v1.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.access_key_response_v1 import AccessKeyResponseV1 + + +class TestAccessKeyResponseV1(unittest.TestCase): + """AccessKeyResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AccessKeyResponseV1: + """Test AccessKeyResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AccessKeyResponseV1` + """ + model = AccessKeyResponseV1() + if include_optional: + return AccessKeyResponseV1( + id = 1, + is_enabled = True, + access_key = 'f97af7c5-dac3-49b1-b5e0-710871d34a15', + date_created = '2022-01-31T22:15:28Z', + date_disabled = '2022-01-31T22:15:28Z', + agent_limit = 100, + agent_reservation = 5, + team_id = 13, + metadata = { + 'key' : 'metaKey1:metaValue1' + } + ) + else: + return AccessKeyResponseV1( + ) + """ + + def testAccessKeyResponseV1(self): + """Test AccessKeyResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_access_keys_api.py b/test/test_access_keys_api.py new file mode 100644 index 00000000..e8afda57 --- /dev/null +++ b/test/test_access_keys_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.access_keys_api import AccessKeysApi + + +class TestAccessKeysApi(unittest.TestCase): + """AccessKeysApi unit test stubs""" + + def setUp(self) -> None: + self.api = AccessKeysApi() + + def tearDown(self) -> None: + pass + + def test_create_access_key_v1(self) -> None: + """Test case for create_access_key_v1 + + Create Access Key + """ + pass + + def test_delete_access_key_by_id_v1(self) -> None: + """Test case for delete_access_key_by_id_v1 + + Delete Access Key + """ + pass + + def test_get_access_key_by_id_v1(self) -> None: + """Test case for get_access_key_by_id_v1 + + Get Access Key + """ + pass + + def test_get_access_keys_v1(self) -> None: + """Test case for get_access_keys_v1 + + List Access Keys + """ + pass + + def test_update_access_key_by_id_v1(self) -> None: + """Test case for update_access_key_by_id_v1 + + Update Access Key + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_action.py b/test/test_action.py new file mode 100644 index 00000000..d67e4275 --- /dev/null +++ b/test/test_action.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.action import Action + + +class TestAction(unittest.TestCase): + """Action unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Action: + """Test Action + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Action` + """ + model = Action() + if include_optional: + return Action( + type = 'capture', + is_successful = True, + err_msg = 'Rule with name non_existent refers to a rule that does not exist', + token = '4f24c92e-48f5-45ab-84a5-c394f07e855e', + after_event_ns = 18000000000, + before_event_ns = 5000000000 + ) + else: + return Action( + type = 'capture', + ) + """ + + def testAction(self): + """Test Action""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_action_execution.py b/test/test_action_execution.py new file mode 100644 index 00000000..79fc5363 --- /dev/null +++ b/test/test_action_execution.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.action_execution import ActionExecution + + +class TestActionExecution(unittest.TestCase): + """ActionExecution unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ActionExecution: + """Test ActionExecution + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ActionExecution` + """ + model = ActionExecution() + if include_optional: + return ActionExecution( + id = 'b137bf86-399f-43f7-8d2b-53060af4da9f', + caller_id = 'Mary-Response', + action_type = 'KILL_PROCESS', + execution_context = { + 'key' : '' + }, + parameters = { + 'key' : null + }, + outputs = { + 'key' : null + }, + failure = sysdig_client.models.failure.Failure( + failure_reason = 'forbidden', + log_message = 'Could not execute the action.', ), + status = 'COMPLETED', + user_id = 1234, + created_at = '2020-01-01T00:00Z', + updated_at = '2020-01-01T00:00Z', + action_execution_id_being_undone = 'b137bf86-399f-43f7-8d2b-53060af4da9f' + ) + else: + return ActionExecution( + id = 'b137bf86-399f-43f7-8d2b-53060af4da9f', + action_type = 'KILL_PROCESS', + execution_context = { + 'key' : '' + }, + parameters = { + 'key' : null + }, + status = 'COMPLETED', + created_at = '2020-01-01T00:00Z', + ) + """ + + def testActionExecution(self): + """Test ActionExecution""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_action_execution_parameter_value.py b/test/test_action_execution_parameter_value.py new file mode 100644 index 00000000..8ce55e51 --- /dev/null +++ b/test/test_action_execution_parameter_value.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.action_execution_parameter_value import ActionExecutionParameterValue + + +class TestActionExecutionParameterValue(unittest.TestCase): + """ActionExecutionParameterValue unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ActionExecutionParameterValue: + """Test ActionExecutionParameterValue + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ActionExecutionParameterValue` + """ + model = ActionExecutionParameterValue() + if include_optional: + return ActionExecutionParameterValue( + ) + else: + return ActionExecutionParameterValue( + ) + """ + + def testActionExecutionParameterValue(self): + """Test ActionExecutionParameterValue""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_action_execution_status.py b/test/test_action_execution_status.py new file mode 100644 index 00000000..f93f7062 --- /dev/null +++ b/test/test_action_execution_status.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.action_execution_status import ActionExecutionStatus + + +class TestActionExecutionStatus(unittest.TestCase): + """ActionExecutionStatus unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testActionExecutionStatus(self): + """Test ActionExecutionStatus""" + # inst = ActionExecutionStatus() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_action_executions.py b/test/test_action_executions.py new file mode 100644 index 00000000..8a3d3266 --- /dev/null +++ b/test/test_action_executions.py @@ -0,0 +1,98 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.action_executions import ActionExecutions + + +class TestActionExecutions(unittest.TestCase): + """ActionExecutions unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ActionExecutions: + """Test ActionExecutions + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ActionExecutions` + """ + model = ActionExecutions() + if include_optional: + return ActionExecutions( + data = [ + sysdig_client.models.action_execution.ActionExecution( + id = 'b137bf86-399f-43f7-8d2b-53060af4da9f', + caller_id = 'Mary-Response', + action_type = 'KILL_PROCESS', + execution_context = { + 'key' : '' + }, + parameters = { + 'key' : null + }, + outputs = { + 'key' : null + }, + failure = sysdig_client.models.failure.Failure( + failure_reason = 'forbidden', + log_message = 'Could not execute the action.', ), + status = 'COMPLETED', + user_id = 1234, + created_at = '2020-01-01T00:00Z', + updated_at = '2020-01-01T00:00Z', + action_execution_id_being_undone = 'b137bf86-399f-43f7-8d2b-53060af4da9f', ) + ] + ) + else: + return ActionExecutions( + data = [ + sysdig_client.models.action_execution.ActionExecution( + id = 'b137bf86-399f-43f7-8d2b-53060af4da9f', + caller_id = 'Mary-Response', + action_type = 'KILL_PROCESS', + execution_context = { + 'key' : '' + }, + parameters = { + 'key' : null + }, + outputs = { + 'key' : null + }, + failure = sysdig_client.models.failure.Failure( + failure_reason = 'forbidden', + log_message = 'Could not execute the action.', ), + status = 'COMPLETED', + user_id = 1234, + created_at = '2020-01-01T00:00Z', + updated_at = '2020-01-01T00:00Z', + action_execution_id_being_undone = 'b137bf86-399f-43f7-8d2b-53060af4da9f', ) + ], + ) + """ + + def testActionExecutions(self): + """Test ActionExecutions""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_action_outputs_metadata.py b/test/test_action_outputs_metadata.py new file mode 100644 index 00000000..bad4a395 --- /dev/null +++ b/test/test_action_outputs_metadata.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.action_outputs_metadata import ActionOutputsMetadata + + +class TestActionOutputsMetadata(unittest.TestCase): + """ActionOutputsMetadata unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ActionOutputsMetadata: + """Test ActionOutputsMetadata + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ActionOutputsMetadata` + """ + model = ActionOutputsMetadata() + if include_optional: + return ActionOutputsMetadata( + name = 'quarantined_file_path', + description = 'An absolute path', + type = 'integer', + required = True + ) + else: + return ActionOutputsMetadata( + name = 'quarantined_file_path', + description = 'An absolute path', + type = 'integer', + required = True, + ) + """ + + def testActionOutputsMetadata(self): + """Test ActionOutputsMetadata""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_action_parameter_metadata.py b/test/test_action_parameter_metadata.py new file mode 100644 index 00000000..386e1a35 --- /dev/null +++ b/test/test_action_parameter_metadata.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.action_parameter_metadata import ActionParameterMetadata + + +class TestActionParameterMetadata(unittest.TestCase): + """ActionParameterMetadata unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ActionParameterMetadata: + """Test ActionParameterMetadata + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ActionParameterMetadata` + """ + model = ActionParameterMetadata() + if include_optional: + return ActionParameterMetadata( + name = 'container.id', + description = 'A container id', + type = 'integer', + required = True + ) + else: + return ActionParameterMetadata( + name = 'container.id', + description = 'A container id', + type = 'integer', + required = True, + ) + """ + + def testActionParameterMetadata(self): + """Test ActionParameterMetadata""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_action_type.py b/test/test_action_type.py new file mode 100644 index 00000000..007be919 --- /dev/null +++ b/test/test_action_type.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.action_type import ActionType + + +class TestActionType(unittest.TestCase): + """ActionType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testActionType(self): + """Test ActionType""" + # inst = ActionType() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_actions.py b/test/test_actions.py new file mode 100644 index 00000000..f6ead9d1 --- /dev/null +++ b/test/test_actions.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.actions import Actions + + +class TestActions(unittest.TestCase): + """Actions unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Actions: + """Test Actions + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Actions` + """ + model = Actions() + if include_optional: + return Actions( + data = [ + sysdig_client.models.response_action.ResponseAction( + type = 'KILL_PROCESS', + parameters = [ + sysdig_client.models.action_parameter_metadata.ActionParameterMetadata( + name = 'container.id', + description = 'A container id', + type = 'integer', + required = True, ) + ], + outputs = [ + sysdig_client.models.action_outputs_metadata.ActionOutputsMetadata( + name = 'quarantined_file_path', + description = 'An absolute path', + type = 'integer', + required = True, ) + ], + description = 'Kill a container', + is_undoable = True, ) + ] + ) + else: + return Actions( + data = [ + sysdig_client.models.response_action.ResponseAction( + type = 'KILL_PROCESS', + parameters = [ + sysdig_client.models.action_parameter_metadata.ActionParameterMetadata( + name = 'container.id', + description = 'A container id', + type = 'integer', + required = True, ) + ], + outputs = [ + sysdig_client.models.action_outputs_metadata.ActionOutputsMetadata( + name = 'quarantined_file_path', + description = 'An absolute path', + type = 'integer', + required = True, ) + ], + description = 'Kill a container', + is_undoable = True, ) + ], + ) + """ + + def testActions(self): + """Test Actions""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_activity_audit_api.py b/test/test_activity_audit_api.py new file mode 100644 index 00000000..9863b8a8 --- /dev/null +++ b/test/test_activity_audit_api.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.activity_audit_api import ActivityAuditApi + + +class TestActivityAuditApi(unittest.TestCase): + """ActivityAuditApi unit test stubs""" + + def setUp(self) -> None: + self.api = ActivityAuditApi() + + def tearDown(self) -> None: + pass + + def test_get_activity_audit_entries_supported_filters_v1(self) -> None: + """Test case for get_activity_audit_entries_supported_filters_v1 + + Get available filters + """ + pass + + def test_get_activity_audit_entries_v1(self) -> None: + """Test case for get_activity_audit_entries_v1 + + List entries + """ + pass + + def test_get_activity_audit_entry_v1(self) -> None: + """Test case for get_activity_audit_entry_v1 + + Get entry + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_additional_team_permissions_v1.py b/test/test_additional_team_permissions_v1.py new file mode 100644 index 00000000..39eadbf6 --- /dev/null +++ b/test/test_additional_team_permissions_v1.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.additional_team_permissions_v1 import AdditionalTeamPermissionsV1 + + +class TestAdditionalTeamPermissionsV1(unittest.TestCase): + """AdditionalTeamPermissionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AdditionalTeamPermissionsV1: + """Test AdditionalTeamPermissionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AdditionalTeamPermissionsV1` + """ + model = AdditionalTeamPermissionsV1() + if include_optional: + return AdditionalTeamPermissionsV1( + has_sysdig_captures = False, + has_infrastructure_events = False, + has_aws_data = False, + has_rapid_response = False, + has_agent_cli = False, + has_beacon_metrics = False + ) + else: + return AdditionalTeamPermissionsV1( + ) + """ + + def testAdditionalTeamPermissionsV1(self): + """Test AdditionalTeamPermissionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_agentless_ml_runtime_detection_content.py b/test/test_agentless_ml_runtime_detection_content.py new file mode 100644 index 00000000..77855eea --- /dev/null +++ b/test/test_agentless_ml_runtime_detection_content.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.agentless_ml_runtime_detection_content import AgentlessMlRuntimeDetectionContent + + +class TestAgentlessMlRuntimeDetectionContent(unittest.TestCase): + """AgentlessMlRuntimeDetectionContent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AgentlessMlRuntimeDetectionContent: + """Test AgentlessMlRuntimeDetectionContent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AgentlessMlRuntimeDetectionContent` + """ + model = AgentlessMlRuntimeDetectionContent() + if include_optional: + return AgentlessMlRuntimeDetectionContent( + type = 'workloadRuntimeDetection', + policy_id = 2, + policy_origin = 'Sysdig', + policy_notification_channel_ids = [ + 123 + ], + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + fields = None + ) + else: + return AgentlessMlRuntimeDetectionContent( + type = 'workloadRuntimeDetection', + policy_origin = 'Sysdig', + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + fields = None, + ) + """ + + def testAgentlessMlRuntimeDetectionContent(self): + """Test AgentlessMlRuntimeDetectionContent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_agentless_ml_runtime_detection_content_all_of_fields.py b/test/test_agentless_ml_runtime_detection_content_all_of_fields.py new file mode 100644 index 00000000..928ce4da --- /dev/null +++ b/test/test_agentless_ml_runtime_detection_content_all_of_fields.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.agentless_ml_runtime_detection_content_all_of_fields import ( + AgentlessMlRuntimeDetectionContentAllOfFields, +) + + +class TestAgentlessMlRuntimeDetectionContentAllOfFields(unittest.TestCase): + """AgentlessMlRuntimeDetectionContentAllOfFields unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AgentlessMlRuntimeDetectionContentAllOfFields: + """Test AgentlessMlRuntimeDetectionContentAllOfFields + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AgentlessMlRuntimeDetectionContentAllOfFields` + """ + model = AgentlessMlRuntimeDetectionContentAllOfFields() + if include_optional: + return AgentlessMlRuntimeDetectionContentAllOfFields( + ) + else: + return AgentlessMlRuntimeDetectionContentAllOfFields( + ) + """ + + def testAgentlessMlRuntimeDetectionContentAllOfFields(self): + """Test AgentlessMlRuntimeDetectionContentAllOfFields""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_agentless_runtime_detection_content.py b/test/test_agentless_runtime_detection_content.py new file mode 100644 index 00000000..a7e440cd --- /dev/null +++ b/test/test_agentless_runtime_detection_content.py @@ -0,0 +1,75 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.agentless_runtime_detection_content import AgentlessRuntimeDetectionContent + + +class TestAgentlessRuntimeDetectionContent(unittest.TestCase): + """AgentlessRuntimeDetectionContent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AgentlessRuntimeDetectionContent: + """Test AgentlessRuntimeDetectionContent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AgentlessRuntimeDetectionContent` + """ + model = AgentlessRuntimeDetectionContent() + if include_optional: + return AgentlessRuntimeDetectionContent( + type = 'workloadRuntimeDetection', + integration_id = '2U98T7RVNpAfveU6t9U6JoKVuZb', + integration_type = 'cloudtrail', + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + rule_tags = [ + 'AWS_IAM' + ], + policy_id = 2, + policy_origin = 'Sysdig', + policy_notification_channel_ids = [ + 123 + ], + priority = 'error', + output = 'Error Detected creation of security group rule allowing SSH ingress (requesting user=github-actions-ansible-molecule-role, requesting IP=1.2.3.4, account ID=123456789012, AWS region=us-east-1, arn=arn:aws:sts::0123456789012:assumed-role/github-actions-ansible-molecule-role/GitHubActions, security group=sg-121364e586677869e)', + fields = None + ) + else: + return AgentlessRuntimeDetectionContent( + type = 'workloadRuntimeDetection', + integration_id = '2U98T7RVNpAfveU6t9U6JoKVuZb', + integration_type = 'cloudtrail', + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + policy_id = 2, + policy_origin = 'Sysdig', + ) + """ + + def testAgentlessRuntimeDetectionContent(self): + """Test AgentlessRuntimeDetectionContent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_agentless_runtime_detection_content_all_of_fields.py b/test/test_agentless_runtime_detection_content_all_of_fields.py new file mode 100644 index 00000000..08a1e4dc --- /dev/null +++ b/test/test_agentless_runtime_detection_content_all_of_fields.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.agentless_runtime_detection_content_all_of_fields import AgentlessRuntimeDetectionContentAllOfFields + + +class TestAgentlessRuntimeDetectionContentAllOfFields(unittest.TestCase): + """AgentlessRuntimeDetectionContentAllOfFields unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AgentlessRuntimeDetectionContentAllOfFields: + """Test AgentlessRuntimeDetectionContentAllOfFields + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AgentlessRuntimeDetectionContentAllOfFields` + """ + model = AgentlessRuntimeDetectionContentAllOfFields() + if include_optional: + return AgentlessRuntimeDetectionContentAllOfFields( + ) + else: + return AgentlessRuntimeDetectionContentAllOfFields( + ) + """ + + def testAgentlessRuntimeDetectionContentAllOfFields(self): + """Test AgentlessRuntimeDetectionContentAllOfFields""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_alert_monitor_event.py b/test/test_alert_monitor_event.py new file mode 100644 index 00000000..fbe1cb20 --- /dev/null +++ b/test/test_alert_monitor_event.py @@ -0,0 +1,78 @@ +# coding: utf-8 + +""" +Sysdig Platform Zones Public API + +Sysdig Platform Zones Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.alert_monitor_event import AlertMonitorEvent + + +class TestAlertMonitorEvent(unittest.TestCase): + """AlertMonitorEvent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AlertMonitorEvent: + """Test AlertMonitorEvent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AlertMonitorEvent` + """ + model = AlertMonitorEvent() + if include_optional: + return AlertMonitorEvent( + id = '15cbf54e34df95404caad1c988cf7c42', + created_on = '2024-11-21T20:29:01.415528Z', + occurred_at = '2024-11-21T20:29:01.415528Z', + name = 'Launch Privileged Container', + description = 'Back-off restarting failed container +', + severity = 4, + scope_labels = [ + sysdig_client.models.scope_label_v1.Scope Label v1( + key = 'kube_cluster_name', + value = [ + 'myCluster' + ], ) + ], + scope = 'kube_namespace_name = 'test'', + alert_id = 2, + ended_at = '2024-11-21T20:29:01.415528Z', + alert_state = 'TRIGGERED', + acknowledged = False, + manually_resolved = False, + silenced = False + ) + else: + return AlertMonitorEvent( + id = '15cbf54e34df95404caad1c988cf7c42', + created_on = '2024-11-21T20:29:01.415528Z', + occurred_at = '2024-11-21T20:29:01.415528Z', + name = 'Launch Privileged Container', + severity = 4, + ) + """ + + def testAlertMonitorEvent(self): + """Test AlertMonitorEvent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_alerts_response_v1.py b/test/test_alerts_response_v1.py new file mode 100644 index 00000000..edf90849 --- /dev/null +++ b/test/test_alerts_response_v1.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.alerts_response_v1 import AlertsResponseV1 + + +class TestAlertsResponseV1(unittest.TestCase): + """AlertsResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AlertsResponseV1: + """Test AlertsResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AlertsResponseV1` + """ + model = AlertsResponseV1() + if include_optional: + return AlertsResponseV1( + status = 'success', + data = sysdig_client.models.alerts_response_v1_data.AlertsResponseV1_data( + alerts = [ + sysdig_client.models.alerts_response_v1_data_alerts_inner.AlertsResponseV1_data_alerts_inner( + active_at = '2024-10-07T10:17:02Z', + annotations = {}, + labels = {"alertname":"High request latency alert"}, + state = 'firing', + value = '1e+00', ) + ], ), + warnings = [], + infos = [] + ) + else: + return AlertsResponseV1( + ) + """ + + def testAlertsResponseV1(self): + """Test AlertsResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_alerts_response_v1_data.py b/test/test_alerts_response_v1_data.py new file mode 100644 index 00000000..ead3c442 --- /dev/null +++ b/test/test_alerts_response_v1_data.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.alerts_response_v1_data import AlertsResponseV1Data + + +class TestAlertsResponseV1Data(unittest.TestCase): + """AlertsResponseV1Data unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AlertsResponseV1Data: + """Test AlertsResponseV1Data + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AlertsResponseV1Data` + """ + model = AlertsResponseV1Data() + if include_optional: + return AlertsResponseV1Data( + alerts = [ + sysdig_client.models.alerts_response_v1_data_alerts_inner.AlertsResponseV1_data_alerts_inner( + active_at = '2024-10-07T10:17:02Z', + annotations = {}, + labels = {"alertname":"High request latency alert"}, + state = 'firing', + value = '1e+00', ) + ] + ) + else: + return AlertsResponseV1Data( + ) + """ + + def testAlertsResponseV1Data(self): + """Test AlertsResponseV1Data""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_alerts_response_v1_data_alerts_inner.py b/test/test_alerts_response_v1_data_alerts_inner.py new file mode 100644 index 00000000..e341d1c0 --- /dev/null +++ b/test/test_alerts_response_v1_data_alerts_inner.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.alerts_response_v1_data_alerts_inner import AlertsResponseV1DataAlertsInner + + +class TestAlertsResponseV1DataAlertsInner(unittest.TestCase): + """AlertsResponseV1DataAlertsInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AlertsResponseV1DataAlertsInner: + """Test AlertsResponseV1DataAlertsInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AlertsResponseV1DataAlertsInner` + """ + model = AlertsResponseV1DataAlertsInner() + if include_optional: + return AlertsResponseV1DataAlertsInner( + active_at = '2024-10-07T10:17:02Z', + annotations = {}, + labels = {"alertname":"High request latency alert"}, + state = 'firing', + value = '1e+00' + ) + else: + return AlertsResponseV1DataAlertsInner( + active_at = '2024-10-07T10:17:02Z', + annotations = {}, + labels = {"alertname":"High request latency alert"}, + state = 'firing', + value = '1e+00', + ) + """ + + def testAlertsResponseV1DataAlertsInner(self): + """Test AlertsResponseV1DataAlertsInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_all_sso_settings_response_v1.py b/test/test_all_sso_settings_response_v1.py new file mode 100644 index 00000000..03c4f249 --- /dev/null +++ b/test/test_all_sso_settings_response_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.all_sso_settings_response_v1 import AllSsoSettingsResponseV1 + + +class TestAllSsoSettingsResponseV1(unittest.TestCase): + """AllSsoSettingsResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AllSsoSettingsResponseV1: + """Test AllSsoSettingsResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AllSsoSettingsResponseV1` + """ + model = AllSsoSettingsResponseV1() + if include_optional: + return AllSsoSettingsResponseV1( + data = [ + sysdig_client.models.sso_settings_write_response_v1.SSO Settings Write Response V1() + ] + ) + else: + return AllSsoSettingsResponseV1( + ) + """ + + def testAllSsoSettingsResponseV1(self): + """Test AllSsoSettingsResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_amazon_sqs_create_connection_info.py b/test/test_amazon_sqs_create_connection_info.py new file mode 100644 index 00000000..eaf610b4 --- /dev/null +++ b/test/test_amazon_sqs_create_connection_info.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.amazon_sqs_create_connection_info import AmazonSQSCreateConnectionInfo + + +class TestAmazonSQSCreateConnectionInfo(unittest.TestCase): + """AmazonSQSCreateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AmazonSQSCreateConnectionInfo: + """Test AmazonSQSCreateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AmazonSQSCreateConnectionInfo` + """ + model = AmazonSQSCreateConnectionInfo() + if include_optional: + return AmazonSQSCreateConnectionInfo( + owner_account = '123456789012', + region = 'us-east', + queue = 'sysdig-efo-queue', + delay = 1, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + access_key = 'myaccesskey', + access_secret = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' + ) + else: + return AmazonSQSCreateConnectionInfo( + region = 'us-east', + queue = 'sysdig-efo-queue', + access_key = 'myaccesskey', + access_secret = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', + ) + """ + + def testAmazonSQSCreateConnectionInfo(self): + """Test AmazonSQSCreateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_amazon_sqs_update_connection_info.py b/test/test_amazon_sqs_update_connection_info.py new file mode 100644 index 00000000..928ad4d6 --- /dev/null +++ b/test/test_amazon_sqs_update_connection_info.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.amazon_sqs_update_connection_info import AmazonSQSUpdateConnectionInfo + + +class TestAmazonSQSUpdateConnectionInfo(unittest.TestCase): + """AmazonSQSUpdateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AmazonSQSUpdateConnectionInfo: + """Test AmazonSQSUpdateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AmazonSQSUpdateConnectionInfo` + """ + model = AmazonSQSUpdateConnectionInfo() + if include_optional: + return AmazonSQSUpdateConnectionInfo( + owner_account = '123456789012', + region = 'us-east', + queue = 'sysdig-efo-queue', + delay = 1, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + access_key = 'myaccesskey', + access_secret = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' + ) + else: + return AmazonSQSUpdateConnectionInfo( + region = 'us-east', + queue = 'sysdig-efo-queue', + ) + """ + + def testAmazonSQSUpdateConnectionInfo(self): + """Test AmazonSQSUpdateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_audit_event.py b/test/test_audit_event.py new file mode 100644 index 00000000..8fab2ad5 --- /dev/null +++ b/test/test_audit_event.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.audit_event import AuditEvent + + +class TestAuditEvent(unittest.TestCase): + """AuditEvent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AuditEvent: + """Test AuditEvent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AuditEvent` + """ + model = AuditEvent() + if include_optional: + return AuditEvent( + id = '15cbf54e34df95404caad1c988cf7c42', + cursor = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + timestamp = 1617220000000000000, + content = sysdig_client.models.audit_trail_content.AuditTrailContent( + timestamp_ns = 1617220000000000000, + user_id = 122, + username = 'joendoe', + team_id = 13, + team_name = 'Security Operations', + request_method = 'GET', + request_uri = '/api/v1/audit', + user_origin_ip = '22.220.145.219', + query_string = 'controlId=1&resourceKind=workload', + response_status_code = 200, + entity_type = 'policy', + entity_id = '', + entity_payload = 'SAMLResponse=***&RelayState=%23%2F%26customer%3D5', + service_account_id = 123, + service_account_name = 'service-account-1', ), + labels = {"entityType":"auth"} + ) + else: + return AuditEvent( + ) + """ + + def testAuditEvent(self): + """Test AuditEvent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_audit_page.py b/test/test_audit_page.py new file mode 100644 index 00000000..d189b0dd --- /dev/null +++ b/test/test_audit_page.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.audit_page import AuditPage + + +class TestAuditPage(unittest.TestCase): + """AuditPage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AuditPage: + """Test AuditPage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AuditPage` + """ + model = AuditPage() + if include_optional: + return AuditPage( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn' + ) + else: + return AuditPage( + total = 10, + ) + """ + + def testAuditPage(self): + """Test AuditPage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_audit_supported_filter.py b/test/test_audit_supported_filter.py new file mode 100644 index 00000000..e6573f7f --- /dev/null +++ b/test/test_audit_supported_filter.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.audit_supported_filter import AuditSupportedFilter + + +class TestAuditSupportedFilter(unittest.TestCase): + """AuditSupportedFilter unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AuditSupportedFilter: + """Test AuditSupportedFilter + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AuditSupportedFilter` + """ + model = AuditSupportedFilter() + if include_optional: + return AuditSupportedFilter( + id = 'container.image.id', + type = 'string', + operands = [ + '=' + ] + ) + else: + return AuditSupportedFilter( + id = 'container.image.id', + type = 'string', + ) + """ + + def testAuditSupportedFilter(self): + """Test AuditSupportedFilter""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_audit_supported_filters_response.py b/test/test_audit_supported_filters_response.py new file mode 100644 index 00000000..1dd757e2 --- /dev/null +++ b/test/test_audit_supported_filters_response.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.audit_supported_filters_response import AuditSupportedFiltersResponse + + +class TestAuditSupportedFiltersResponse(unittest.TestCase): + """AuditSupportedFiltersResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AuditSupportedFiltersResponse: + """Test AuditSupportedFiltersResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AuditSupportedFiltersResponse` + """ + model = AuditSupportedFiltersResponse() + if include_optional: + return AuditSupportedFiltersResponse( + data = [ + sysdig_client.models.audit_supported_filter.AuditSupportedFilter( + id = 'container.image.id', + type = 'string', + operands = [ + '=' + ], ) + ] + ) + else: + return AuditSupportedFiltersResponse( + data = [ + sysdig_client.models.audit_supported_filter.AuditSupportedFilter( + id = 'container.image.id', + type = 'string', + operands = [ + '=' + ], ) + ], + ) + """ + + def testAuditSupportedFiltersResponse(self): + """Test AuditSupportedFiltersResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_audit_trail_content.py b/test/test_audit_trail_content.py new file mode 100644 index 00000000..c844968f --- /dev/null +++ b/test/test_audit_trail_content.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.audit_trail_content import AuditTrailContent + + +class TestAuditTrailContent(unittest.TestCase): + """AuditTrailContent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AuditTrailContent: + """Test AuditTrailContent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AuditTrailContent` + """ + model = AuditTrailContent() + if include_optional: + return AuditTrailContent( + timestamp_ns = 1617220000000000000, + user_id = 122, + username = 'joendoe', + team_id = 13, + team_name = 'Security Operations', + request_method = 'GET', + request_uri = '/api/v1/audit', + user_origin_ip = '22.220.145.219', + query_string = 'controlId=1&resourceKind=workload', + response_status_code = 200, + entity_type = 'policy', + entity_id = '', + entity_payload = 'SAMLResponse=***&RelayState=%23%2F%26customer%3D5', + service_account_id = 123, + service_account_name = 'service-account-1' + ) + else: + return AuditTrailContent( + ) + """ + + def testAuditTrailContent(self): + """Test AuditTrailContent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_authenticated_connection_info_elasticsearch.py b/test/test_authenticated_connection_info_elasticsearch.py new file mode 100644 index 00000000..fbf141cc --- /dev/null +++ b/test/test_authenticated_connection_info_elasticsearch.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.authenticated_connection_info_elasticsearch import AuthenticatedConnectionInfoElasticsearch + + +class TestAuthenticatedConnectionInfoElasticsearch(unittest.TestCase): + """AuthenticatedConnectionInfoElasticsearch unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AuthenticatedConnectionInfoElasticsearch: + """Test AuthenticatedConnectionInfoElasticsearch + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AuthenticatedConnectionInfoElasticsearch` + """ + model = AuthenticatedConnectionInfoElasticsearch() + if include_optional: + return AuthenticatedConnectionInfoElasticsearch( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + is_insecure = False, + auth = 'BASIC_AUTH', + format = 'KV_PAIRS', + secret = 'Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK' + ) + else: + return AuthenticatedConnectionInfoElasticsearch( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + auth = 'BASIC_AUTH', + secret = 'Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK', + ) + """ + + def testAuthenticatedConnectionInfoElasticsearch(self): + """Test AuthenticatedConnectionInfoElasticsearch""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_authenticated_connection_info_kafka.py b/test/test_authenticated_connection_info_kafka.py new file mode 100644 index 00000000..5f4923f6 --- /dev/null +++ b/test/test_authenticated_connection_info_kafka.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.authenticated_connection_info_kafka import AuthenticatedConnectionInfoKafka + + +class TestAuthenticatedConnectionInfoKafka(unittest.TestCase): + """AuthenticatedConnectionInfoKafka unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AuthenticatedConnectionInfoKafka: + """Test AuthenticatedConnectionInfoKafka + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AuthenticatedConnectionInfoKafka` + """ + model = AuthenticatedConnectionInfoKafka() + if include_optional: + return AuthenticatedConnectionInfoKafka( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + balancer = 'murmur2', + compression = 'gzip', + is_tls_enabled = True, + is_insecure = False, + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log', + keytab = 'BQIAAAA3AAEAClNZU0RJRy5DT00ABnN5c2RpZwAAAAFlhdTkAQAXABCIRvfq7o+xF60Gvdgwt1hsAAAAAQ==' + ) + else: + return AuthenticatedConnectionInfoKafka( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log', + keytab = 'BQIAAAA3AAEAClNZU0RJRy5DT00ABnN5c2RpZwAAAAFlhdTkAQAXABCIRvfq7o+xF60Gvdgwt1hsAAAAAQ==', + ) + """ + + def testAuthenticatedConnectionInfoKafka(self): + """Test AuthenticatedConnectionInfoKafka""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_authenticated_connection_info_webhook.py b/test/test_authenticated_connection_info_webhook.py new file mode 100644 index 00000000..8a44209e --- /dev/null +++ b/test/test_authenticated_connection_info_webhook.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.authenticated_connection_info_webhook import AuthenticatedConnectionInfoWebhook + + +class TestAuthenticatedConnectionInfoWebhook(unittest.TestCase): + """AuthenticatedConnectionInfoWebhook unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AuthenticatedConnectionInfoWebhook: + """Test AuthenticatedConnectionInfoWebhook + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AuthenticatedConnectionInfoWebhook` + """ + model = AuthenticatedConnectionInfoWebhook() + if include_optional: + return AuthenticatedConnectionInfoWebhook( + endpoint = 'https://endpoint.mydomain.com', + is_insecure = False, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + output = 'json', + timestamp_format = 'nanoseconds', + auth = 'BASIC_AUTH', + certificate_id = 1, + secret = 'eiMaimiYohrahbaeS6iaNgo8iu' + ) + else: + return AuthenticatedConnectionInfoWebhook( + endpoint = 'https://endpoint.mydomain.com', + auth = 'BASIC_AUTH', + secret = 'eiMaimiYohrahbaeS6iaNgo8iu', + ) + """ + + def testAuthenticatedConnectionInfoWebhook(self): + """Test AuthenticatedConnectionInfoWebhook""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_action.py b/test/test_base_action.py new file mode 100644 index 00000000..e24f4edb --- /dev/null +++ b/test/test_base_action.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_action import BaseAction + + +class TestBaseAction(unittest.TestCase): + """BaseAction unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseAction: + """Test BaseAction + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseAction` + """ + model = BaseAction() + if include_optional: + return BaseAction( + type = 'capture' + ) + else: + return BaseAction( + type = 'capture', + ) + """ + + def testBaseAction(self): + """Test BaseAction""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_amazon_sqs.py b/test/test_base_connection_info_amazon_sqs.py new file mode 100644 index 00000000..69133bab --- /dev/null +++ b/test/test_base_connection_info_amazon_sqs.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_amazon_sqs import BaseConnectionInfoAmazonSqs + + +class TestBaseConnectionInfoAmazonSqs(unittest.TestCase): + """BaseConnectionInfoAmazonSqs unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoAmazonSqs: + """Test BaseConnectionInfoAmazonSqs + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoAmazonSqs` + """ + model = BaseConnectionInfoAmazonSqs() + if include_optional: + return BaseConnectionInfoAmazonSqs( + owner_account = '123456789012', + region = 'us-east', + queue = 'sysdig-efo-queue', + delay = 1, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ] + ) + else: + return BaseConnectionInfoAmazonSqs( + region = 'us-east', + queue = 'sysdig-efo-queue', + ) + """ + + def testBaseConnectionInfoAmazonSqs(self): + """Test BaseConnectionInfoAmazonSqs""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_chronicle.py b/test/test_base_connection_info_chronicle.py new file mode 100644 index 00000000..33ea98d0 --- /dev/null +++ b/test/test_base_connection_info_chronicle.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_chronicle import BaseConnectionInfoChronicle + + +class TestBaseConnectionInfoChronicle(unittest.TestCase): + """BaseConnectionInfoChronicle unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoChronicle: + """Test BaseConnectionInfoChronicle + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoChronicle` + """ + model = BaseConnectionInfoChronicle() + if include_optional: + return BaseConnectionInfoChronicle( + region = 'us' + ) + else: + return BaseConnectionInfoChronicle( + ) + """ + + def testBaseConnectionInfoChronicle(self): + """Test BaseConnectionInfoChronicle""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_chronicle_v2.py b/test/test_base_connection_info_chronicle_v2.py new file mode 100644 index 00000000..feda7267 --- /dev/null +++ b/test/test_base_connection_info_chronicle_v2.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_chronicle_v2 import BaseConnectionInfoChronicleV2 + + +class TestBaseConnectionInfoChronicleV2(unittest.TestCase): + """BaseConnectionInfoChronicleV2 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoChronicleV2: + """Test BaseConnectionInfoChronicleV2 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoChronicleV2` + """ + model = BaseConnectionInfoChronicleV2() + if include_optional: + return BaseConnectionInfoChronicleV2( + region = 'us', + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test' + ) + else: + return BaseConnectionInfoChronicleV2( + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + ) + """ + + def testBaseConnectionInfoChronicleV2(self): + """Test BaseConnectionInfoChronicleV2""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_elasticsearch.py b/test/test_base_connection_info_elasticsearch.py new file mode 100644 index 00000000..e5565430 --- /dev/null +++ b/test/test_base_connection_info_elasticsearch.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_elasticsearch import BaseConnectionInfoElasticsearch + + +class TestBaseConnectionInfoElasticsearch(unittest.TestCase): + """BaseConnectionInfoElasticsearch unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoElasticsearch: + """Test BaseConnectionInfoElasticsearch + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoElasticsearch` + """ + model = BaseConnectionInfoElasticsearch() + if include_optional: + return BaseConnectionInfoElasticsearch( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + is_insecure = False, + auth = 'BASIC_AUTH', + format = 'KV_PAIRS' + ) + else: + return BaseConnectionInfoElasticsearch( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + ) + """ + + def testBaseConnectionInfoElasticsearch(self): + """Test BaseConnectionInfoElasticsearch""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_google_pub_sub.py b/test/test_base_connection_info_google_pub_sub.py new file mode 100644 index 00000000..9ed11b6d --- /dev/null +++ b/test/test_base_connection_info_google_pub_sub.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_google_pub_sub import BaseConnectionInfoGooglePubSub + + +class TestBaseConnectionInfoGooglePubSub(unittest.TestCase): + """BaseConnectionInfoGooglePubSub unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoGooglePubSub: + """Test BaseConnectionInfoGooglePubSub + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoGooglePubSub` + """ + model = BaseConnectionInfoGooglePubSub() + if include_optional: + return BaseConnectionInfoGooglePubSub( + project = 'myproject', + topic = 'mytopic', + ordering_key = 'key', + attributes = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ] + ) + else: + return BaseConnectionInfoGooglePubSub( + project = 'myproject', + topic = 'mytopic', + ) + """ + + def testBaseConnectionInfoGooglePubSub(self): + """Test BaseConnectionInfoGooglePubSub""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_google_scc.py b/test/test_base_connection_info_google_scc.py new file mode 100644 index 00000000..66766e01 --- /dev/null +++ b/test/test_base_connection_info_google_scc.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_google_scc import BaseConnectionInfoGoogleScc + + +class TestBaseConnectionInfoGoogleScc(unittest.TestCase): + """BaseConnectionInfoGoogleScc unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoGoogleScc: + """Test BaseConnectionInfoGoogleScc + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoGoogleScc` + """ + model = BaseConnectionInfoGoogleScc() + if include_optional: + return BaseConnectionInfoGoogleScc( + organization = 'myorg', + security_marks = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ] + ) + else: + return BaseConnectionInfoGoogleScc( + organization = 'myorg', + ) + """ + + def testBaseConnectionInfoGoogleScc(self): + """Test BaseConnectionInfoGoogleScc""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_kafka.py b/test/test_base_connection_info_kafka.py new file mode 100644 index 00000000..fe7d5669 --- /dev/null +++ b/test/test_base_connection_info_kafka.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_kafka import BaseConnectionInfoKafka + + +class TestBaseConnectionInfoKafka(unittest.TestCase): + """BaseConnectionInfoKafka unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoKafka: + """Test BaseConnectionInfoKafka + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoKafka` + """ + model = BaseConnectionInfoKafka() + if include_optional: + return BaseConnectionInfoKafka( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + balancer = 'murmur2', + compression = 'gzip', + is_tls_enabled = True, + is_insecure = False + ) + else: + return BaseConnectionInfoKafka( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + ) + """ + + def testBaseConnectionInfoKafka(self): + """Test BaseConnectionInfoKafka""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_mcm.py b/test/test_base_connection_info_mcm.py new file mode 100644 index 00000000..88b0dfec --- /dev/null +++ b/test/test_base_connection_info_mcm.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_mcm import BaseConnectionInfoMcm + + +class TestBaseConnectionInfoMcm(unittest.TestCase): + """BaseConnectionInfoMcm unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoMcm: + """Test BaseConnectionInfoMcm + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoMcm` + """ + model = BaseConnectionInfoMcm() + if include_optional: + return BaseConnectionInfoMcm( + endpoint = 'https://mcm.mydomain.com:8443', + account_id = 'id-mycluster-account', + provider_id = 'sysdig-secure', + note_name = 'note-name', + is_insecure = False + ) + else: + return BaseConnectionInfoMcm( + endpoint = 'https://mcm.mydomain.com:8443', + ) + """ + + def testBaseConnectionInfoMcm(self): + """Test BaseConnectionInfoMcm""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_microsoft_sentinel.py b/test/test_base_connection_info_microsoft_sentinel.py new file mode 100644 index 00000000..1d74bd8d --- /dev/null +++ b/test/test_base_connection_info_microsoft_sentinel.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_microsoft_sentinel import BaseConnectionInfoMicrosoftSentinel + + +class TestBaseConnectionInfoMicrosoftSentinel(unittest.TestCase): + """BaseConnectionInfoMicrosoftSentinel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoMicrosoftSentinel: + """Test BaseConnectionInfoMicrosoftSentinel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoMicrosoftSentinel` + """ + model = BaseConnectionInfoMicrosoftSentinel() + if include_optional: + return BaseConnectionInfoMicrosoftSentinel( + workspace_id = '578aef60-81be-4d38-a278-ec77925edcf0' + ) + else: + return BaseConnectionInfoMicrosoftSentinel( + workspace_id = '578aef60-81be-4d38-a278-ec77925edcf0', + ) + """ + + def testBaseConnectionInfoMicrosoftSentinel(self): + """Test BaseConnectionInfoMicrosoftSentinel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_qradar.py b/test/test_base_connection_info_qradar.py new file mode 100644 index 00000000..f80cde0f --- /dev/null +++ b/test/test_base_connection_info_qradar.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_qradar import BaseConnectionInfoQradar + + +class TestBaseConnectionInfoQradar(unittest.TestCase): + """BaseConnectionInfoQradar unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoQradar: + """Test BaseConnectionInfoQradar + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoQradar` + """ + model = BaseConnectionInfoQradar() + if include_optional: + return BaseConnectionInfoQradar( + address = 'qradar.mydomain.com', + port = 514, + is_insecure = False, + is_tls = True + ) + else: + return BaseConnectionInfoQradar( + address = 'qradar.mydomain.com', + port = 514, + ) + """ + + def testBaseConnectionInfoQradar(self): + """Test BaseConnectionInfoQradar""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_splunk.py b/test/test_base_connection_info_splunk.py new file mode 100644 index 00000000..f818669e --- /dev/null +++ b/test/test_base_connection_info_splunk.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_splunk import BaseConnectionInfoSplunk + + +class TestBaseConnectionInfoSplunk(unittest.TestCase): + """BaseConnectionInfoSplunk unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoSplunk: + """Test BaseConnectionInfoSplunk + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoSplunk` + """ + model = BaseConnectionInfoSplunk() + if include_optional: + return BaseConnectionInfoSplunk( + endpoint = 'https://splunk.mydomain.com:443/services/collector/event', + source_type = 'cisco_syslog', + index = 'main', + is_insecure = False, + certificate_id = 1 + ) + else: + return BaseConnectionInfoSplunk( + endpoint = 'https://splunk.mydomain.com:443/services/collector/event', + ) + """ + + def testBaseConnectionInfoSplunk(self): + """Test BaseConnectionInfoSplunk""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_syslog.py b/test/test_base_connection_info_syslog.py new file mode 100644 index 00000000..bffa83b2 --- /dev/null +++ b/test/test_base_connection_info_syslog.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_syslog import BaseConnectionInfoSyslog + + +class TestBaseConnectionInfoSyslog(unittest.TestCase): + """BaseConnectionInfoSyslog unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoSyslog: + """Test BaseConnectionInfoSyslog + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoSyslog` + """ + model = BaseConnectionInfoSyslog() + if include_optional: + return BaseConnectionInfoSyslog( + address = 'syslog.mydomain.com', + port = 514, + message_format = 'RFC_5424', + type = 'tcp', + is_insecure = False, + formatter = 'JSON', + certificate_id = 1 + ) + else: + return BaseConnectionInfoSyslog( + address = 'syslog.mydomain.com', + port = 514, + message_format = 'RFC_5424', + ) + """ + + def testBaseConnectionInfoSyslog(self): + """Test BaseConnectionInfoSyslog""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_connection_info_webhook.py b/test/test_base_connection_info_webhook.py new file mode 100644 index 00000000..666fd6a5 --- /dev/null +++ b/test/test_base_connection_info_webhook.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_connection_info_webhook import BaseConnectionInfoWebhook + + +class TestBaseConnectionInfoWebhook(unittest.TestCase): + """BaseConnectionInfoWebhook unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseConnectionInfoWebhook: + """Test BaseConnectionInfoWebhook + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseConnectionInfoWebhook` + """ + model = BaseConnectionInfoWebhook() + if include_optional: + return BaseConnectionInfoWebhook( + endpoint = 'https://endpoint.mydomain.com', + is_insecure = False, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + output = 'json', + timestamp_format = 'nanoseconds', + auth = 'BASIC_AUTH', + certificate_id = 1 + ) + else: + return BaseConnectionInfoWebhook( + endpoint = 'https://endpoint.mydomain.com', + ) + """ + + def testBaseConnectionInfoWebhook(self): + """Test BaseConnectionInfoWebhook""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_content.py b/test/test_base_content.py new file mode 100644 index 00000000..43b8ca9c --- /dev/null +++ b/test/test_base_content.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_content import BaseContent + + +class TestBaseContent(unittest.TestCase): + """BaseContent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseContent: + """Test BaseContent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseContent` + """ + model = BaseContent() + if include_optional: + return BaseContent( + type = 'workloadRuntimeDetection' + ) + else: + return BaseContent( + type = 'workloadRuntimeDetection', + ) + """ + + def testBaseContent(self): + """Test BaseContent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_image.py b/test/test_base_image.py new file mode 100644 index 00000000..230e3e49 --- /dev/null +++ b/test/test_base_image.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_image import BaseImage + + +class TestBaseImage(unittest.TestCase): + """BaseImage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseImage: + """Test BaseImage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseImage` + """ + model = BaseImage() + if include_optional: + return BaseImage( + pull_strings = [ + 'alpine:latest' + ] + ) + else: + return BaseImage( + ) + """ + + def testBaseImage(self): + """Test BaseImage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_integration_payload.py b/test/test_base_integration_payload.py new file mode 100644 index 00000000..929dda72 --- /dev/null +++ b/test/test_base_integration_payload.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_integration_payload import BaseIntegrationPayload + + +class TestBaseIntegrationPayload(unittest.TestCase): + """BaseIntegrationPayload unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseIntegrationPayload: + """Test BaseIntegrationPayload + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseIntegrationPayload` + """ + model = BaseIntegrationPayload() + if include_optional: + return BaseIntegrationPayload( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = ["SECURE_EVENTS_POLICIES","ACTIVITY_AUDIT"] + ) + else: + return BaseIntegrationPayload( + name = 'name', + type = 'SYSLOG', + ) + """ + + def testBaseIntegrationPayload(self): + """Test BaseIntegrationPayload""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_monitor_event.py b/test/test_base_monitor_event.py new file mode 100644 index 00000000..6f5ce60f --- /dev/null +++ b/test/test_base_monitor_event.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" +Sysdig Platform Zones Public API + +Sysdig Platform Zones Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_monitor_event import BaseMonitorEvent + + +class TestBaseMonitorEvent(unittest.TestCase): + """BaseMonitorEvent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseMonitorEvent: + """Test BaseMonitorEvent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseMonitorEvent` + """ + model = BaseMonitorEvent() + if include_optional: + return BaseMonitorEvent( + id = '15cbf54e34df95404caad1c988cf7c42', + created_on = '2024-11-21T20:29:01.415528Z', + occurred_at = '2024-11-21T20:29:01.415528Z', + name = 'Launch Privileged Container', + description = 'Back-off restarting failed container +', + severity = 4, + scope_labels = [ + sysdig_client.models.scope_label_v1.Scope Label v1( + key = 'kube_cluster_name', + value = [ + 'myCluster' + ], ) + ], + scope = 'kube_namespace_name = 'test'' + ) + else: + return BaseMonitorEvent( + id = '15cbf54e34df95404caad1c988cf7c42', + created_on = '2024-11-21T20:29:01.415528Z', + occurred_at = '2024-11-21T20:29:01.415528Z', + name = 'Launch Privileged Container', + severity = 4, + ) + """ + + def testBaseMonitorEvent(self): + """Test BaseMonitorEvent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_risk_accepted_payload.py b/test/test_base_risk_accepted_payload.py new file mode 100644 index 00000000..033117a7 --- /dev/null +++ b/test/test_base_risk_accepted_payload.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_risk_accepted_payload import BaseRiskAcceptedPayload + + +class TestBaseRiskAcceptedPayload(unittest.TestCase): + """BaseRiskAcceptedPayload unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseRiskAcceptedPayload: + """Test BaseRiskAcceptedPayload + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseRiskAcceptedPayload` + """ + model = BaseRiskAcceptedPayload() + if include_optional: + return BaseRiskAcceptedPayload( + entity_value = 'CVE-1234-56789', + expiration_date = 'Mon Feb 26 18:00:00 CST 2024', + reason = 'RiskTransferred', + description = 'vulnerability cannot be removed manually', + stages = ["runtime","pipeline","registry"] + ) + else: + return BaseRiskAcceptedPayload( + ) + """ + + def testBaseRiskAcceptedPayload(self): + """Test BaseRiskAcceptedPayload""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_risk_accepted_response_payload.py b/test/test_base_risk_accepted_response_payload.py new file mode 100644 index 00000000..66580839 --- /dev/null +++ b/test/test_base_risk_accepted_response_payload.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.base_risk_accepted_response_payload import BaseRiskAcceptedResponsePayload + + +class TestBaseRiskAcceptedResponsePayload(unittest.TestCase): + """BaseRiskAcceptedResponsePayload unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BaseRiskAcceptedResponsePayload: + """Test BaseRiskAcceptedResponsePayload + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BaseRiskAcceptedResponsePayload` + """ + model = BaseRiskAcceptedResponsePayload() + if include_optional: + return BaseRiskAcceptedResponsePayload( + id = '17af8bade67c9a208e632df001fcea2c', + expiration_date = 'Mon Feb 26 18:00:00 CST 2024', + created_at = '2024-01-22T08:51:46.016464Z', + updated_at = '2024-02-22T08:51:46.016464Z', + status = 'active', + created_by = 'user@sysdig.com', + updated_by = 'user@sysdig.com' + ) + else: + return BaseRiskAcceptedResponsePayload( + ) + """ + + def testBaseRiskAcceptedResponsePayload(self): + """Test BaseRiskAcceptedResponsePayload""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_bom_metadata.py b/test/test_bom_metadata.py new file mode 100644 index 00000000..beb543c5 --- /dev/null +++ b/test/test_bom_metadata.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.bom_metadata import BOMMetadata + + +class TestBOMMetadata(unittest.TestCase): + """BOMMetadata unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BOMMetadata: + """Test BOMMetadata + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BOMMetadata` + """ + model = BOMMetadata() + if include_optional: + return BOMMetadata( + timestamp = '2018-03-20T09:12:28Z', + lifecycle = 'post-build', + tools = sysdig_client.models.creation_tools.Creation Tools(), + component = sysdig_client.models.sbom_component_schema.SBOM component schema( + type = 'library', + name = 'tomcat-catalina', + bom_ref = '5581fa94-9052-4e55-8b28-750f16e183be', + version = '9.0.14', + group = 'com.acme', + purl = 'pkg:maven/com.acme/tomcat-catalina@9.0.14?packaging=jar', ) + ) + else: + return BOMMetadata( + ) + """ + + def testBOMMetadata(self): + """Test BOMMetadata""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_bucket_configuration_v1.py b/test/test_bucket_configuration_v1.py new file mode 100644 index 00000000..f5a8ac0c --- /dev/null +++ b/test/test_bucket_configuration_v1.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.bucket_configuration_v1 import BucketConfigurationV1 + + +class TestBucketConfigurationV1(unittest.TestCase): + """BucketConfigurationV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BucketConfigurationV1: + """Test BucketConfigurationV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BucketConfigurationV1` + """ + model = BucketConfigurationV1() + if include_optional: + return BucketConfigurationV1( + name = 'my-bucket', + folder = 'my-folder', + description = 'My bucket description', + provider_key_id = 'my-provider-key-id', + endpoint = 'https://my-bucket.s3.amazonaws.com', + region = 'us-east-1', + path_style_access = False + ) + else: + return BucketConfigurationV1( + name = 'my-bucket', + ) + """ + + def testBucketConfigurationV1(self): + """Test BucketConfigurationV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_bundle.py b/test/test_bundle.py new file mode 100644 index 00000000..8b158463 --- /dev/null +++ b/test/test_bundle.py @@ -0,0 +1,71 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.bundle import Bundle + + +class TestBundle(unittest.TestCase): + """Bundle unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Bundle: + """Test Bundle + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Bundle` + """ + model = Bundle() + if include_optional: + return Bundle( + name = 'Severe vulnerabilities with a Fix', + identifier = 'severe_vulnerabilities_with_a_fix', + type = 'predefined', + rules = [ + sysdig_client.models.rule.Rule( + rule_id = '1234A', + rule_type = 'vulnDenyList', + evaluation_result = 'passed', + predicates = [ + sysdig_client.models.predicate.Predicate( + type = 'vulnIsFixable', + extra = sysdig_client.models.extra.extra(), ) + ], + failure_type = 'pkgVulnFailure', + description = 'rule description', + failures = [ + null + ], ) + ] + ) + else: + return Bundle( + ) + """ + + def testBundle(self): + """Test Bundle""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_bundle_ref.py b/test/test_bundle_ref.py new file mode 100644 index 00000000..cecd4e8c --- /dev/null +++ b/test/test_bundle_ref.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.bundle_ref import BundleRef + + +class TestBundleRef(unittest.TestCase): + """BundleRef unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BundleRef: + """Test BundleRef + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BundleRef` + """ + model = BundleRef() + if include_optional: + return BundleRef( + id = 42, + name = 'My Bundle' + ) + else: + return BundleRef( + id = 42, + ) + """ + + def testBundleRef(self): + """Test BundleRef""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_bundle_rule.py b/test/test_bundle_rule.py new file mode 100644 index 00000000..cd53e980 --- /dev/null +++ b/test/test_bundle_rule.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.bundle_rule import BundleRule + + +class TestBundleRule(unittest.TestCase): + """BundleRule unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BundleRule: + """Test BundleRule + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BundleRule` + """ + model = BundleRule() + if include_optional: + return BundleRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}}], + rule_id = '42' + ) + else: + return BundleRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}}], + rule_id = '42', + ) + """ + + def testBundleRule(self): + """Test BundleRule""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_bundle_rule_predicates_inner.py b/test/test_bundle_rule_predicates_inner.py new file mode 100644 index 00000000..28c8bf90 --- /dev/null +++ b/test/test_bundle_rule_predicates_inner.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.bundle_rule_predicates_inner import BundleRulePredicatesInner + + +class TestBundleRulePredicatesInner(unittest.TestCase): + """BundleRulePredicatesInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BundleRulePredicatesInner: + """Test BundleRulePredicatesInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `BundleRulePredicatesInner` + """ + model = BundleRulePredicatesInner() + if include_optional: + return BundleRulePredicatesInner( + type = 'vulnIsFixable', + extra = sysdig_client.models.extra.extra() + ) + else: + return BundleRulePredicatesInner( + type = 'vulnIsFixable', + ) + """ + + def testBundleRulePredicatesInner(self): + """Test BundleRulePredicatesInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_capture_action.py b/test/test_capture_action.py new file mode 100644 index 00000000..c905ba41 --- /dev/null +++ b/test/test_capture_action.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.capture_action import CaptureAction + + +class TestCaptureAction(unittest.TestCase): + """CaptureAction unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CaptureAction: + """Test CaptureAction + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CaptureAction` + """ + model = CaptureAction() + if include_optional: + return CaptureAction( + type = 'capture', + is_successful = True, + err_msg = 'maximum number of outstanding captures (1) reached', + token = '4f24c92e-48f5-45ab-84a5-c394f07e855e', + after_event_ns = 18000000000, + before_event_ns = 5000000000 + ) + else: + return CaptureAction( + type = 'capture', + ) + """ + + def testCaptureAction(self): + """Test CaptureAction""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_capture_storage_api.py b/test/test_capture_storage_api.py new file mode 100644 index 00000000..d77db4f3 --- /dev/null +++ b/test/test_capture_storage_api.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.capture_storage_api import CaptureStorageApi + + +class TestCaptureStorageApi(unittest.TestCase): + """CaptureStorageApi unit test stubs""" + + def setUp(self) -> None: + self.api = CaptureStorageApi() + + def tearDown(self) -> None: + pass + + def test_get_capture_storage_configuration_v1(self) -> None: + """Test case for get_capture_storage_configuration_v1 + + Get Capture Storage Configuration + """ + pass + + def test_update_capture_storage_configuration_v1(self) -> None: + """Test case for update_capture_storage_configuration_v1 + + Update or Create Capture Storage Configuration + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_capture_storage_configuration_response_v1.py b/test/test_capture_storage_configuration_response_v1.py new file mode 100644 index 00000000..d354d82b --- /dev/null +++ b/test/test_capture_storage_configuration_response_v1.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.capture_storage_configuration_response_v1 import CaptureStorageConfigurationResponseV1 + + +class TestCaptureStorageConfigurationResponseV1(unittest.TestCase): + """CaptureStorageConfigurationResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CaptureStorageConfigurationResponseV1: + """Test CaptureStorageConfigurationResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CaptureStorageConfigurationResponseV1` + """ + model = CaptureStorageConfigurationResponseV1() + if include_optional: + return CaptureStorageConfigurationResponseV1( + is_enabled = False, + is_encryption_with_provided_key_enabled = False, + buckets = [ + sysdig_client.models.bucket_configuration_v1.Bucket Configuration V1( + name = 'my-bucket', + folder = 'my-folder', + description = 'My bucket description', + provider_key_id = 'my-provider-key-id', + endpoint = 'https://my-bucket.s3.amazonaws.com', + region = 'us-east-1', + path_style_access = False, ) + ] + ) + else: + return CaptureStorageConfigurationResponseV1( + ) + """ + + def testCaptureStorageConfigurationResponseV1(self): + """Test CaptureStorageConfigurationResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_category.py b/test/test_category.py new file mode 100644 index 00000000..7b38c177 --- /dev/null +++ b/test/test_category.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.category import Category + + +class TestCategory(unittest.TestCase): + """Category unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testCategory(self): + """Test Category""" + # inst = Category() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_certificate.py b/test/test_certificate.py new file mode 100644 index 00000000..20b9fa62 --- /dev/null +++ b/test/test_certificate.py @@ -0,0 +1,70 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.certificate import Certificate + + +class TestCertificate(unittest.TestCase): + """Certificate unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Certificate: + """Test Certificate + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Certificate` + """ + model = Certificate() + if include_optional: + return Certificate( + id = 12345, + certificate_name = 'foo', + created = '1970-01-01T00:00Z', + issuer = 'C = US, ST = , L = San Francisco, O = Foobar Inc', + validity = sysdig_client.models.certificate_validity.Certificate_validity( + after = '1970-01-01T00:00Z', + before = '1970-01-01T00:00Z', ), + usage = 0, + fingerprint = 'sha1:72:6E:1A:34:27:DD:7C:5C:C6:F3:7D:FB:EC:DC:62:48:F4:A0:C8:B7' + ) + else: + return Certificate( + id = 12345, + certificate_name = 'foo', + created = '1970-01-01T00:00Z', + issuer = 'C = US, ST = , L = San Francisco, O = Foobar Inc', + validity = sysdig_client.models.certificate_validity.Certificate_validity( + after = '1970-01-01T00:00Z', + before = '1970-01-01T00:00Z', ), + usage = 0, + fingerprint = 'sha1:72:6E:1A:34:27:DD:7C:5C:C6:F3:7D:FB:EC:DC:62:48:F4:A0:C8:B7', + ) + """ + + def testCertificate(self): + """Test Certificate""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_certificate_validity.py b/test/test_certificate_validity.py new file mode 100644 index 00000000..f4d12bc2 --- /dev/null +++ b/test/test_certificate_validity.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.certificate_validity import CertificateValidity + + +class TestCertificateValidity(unittest.TestCase): + """CertificateValidity unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CertificateValidity: + """Test CertificateValidity + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CertificateValidity` + """ + model = CertificateValidity() + if include_optional: + return CertificateValidity( + after = '1970-01-01T00:00Z', + before = '1970-01-01T00:00Z' + ) + else: + return CertificateValidity( + ) + """ + + def testCertificateValidity(self): + """Test CertificateValidity""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_certificates_api.py b/test/test_certificates_api.py new file mode 100644 index 00000000..23c5e8d2 --- /dev/null +++ b/test/test_certificates_api.py @@ -0,0 +1,73 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.certificates_api import CertificatesApi + + +class TestCertificatesApi(unittest.TestCase): + """CertificatesApi unit test stubs""" + + def setUp(self) -> None: + self.api = CertificatesApi() + + def tearDown(self) -> None: + pass + + def test_create_csrv1(self) -> None: + """Test case for create_csrv1 + + Create CSR + """ + pass + + def test_delete_certificate_v1(self) -> None: + """Test case for delete_certificate_v1 + + Delete Certificate + """ + pass + + def test_get_certificate_registration_v1(self) -> None: + """Test case for get_certificate_registration_v1 + + List Services + """ + pass + + def test_get_certificate_v1(self) -> None: + """Test case for get_certificate_v1 + + Get Certificate + """ + pass + + def test_get_certificates_v1(self) -> None: + """Test case for get_certificates_v1 + + List Certificates + """ + pass + + def test_upload_certificate_v1(self) -> None: + """Test case for upload_certificate_v1 + + Upload Certificate + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_certificates_response.py b/test/test_certificates_response.py new file mode 100644 index 00000000..7a33e382 --- /dev/null +++ b/test/test_certificates_response.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.certificates_response import CertificatesResponse + + +class TestCertificatesResponse(unittest.TestCase): + """CertificatesResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CertificatesResponse: + """Test CertificatesResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CertificatesResponse` + """ + model = CertificatesResponse() + if include_optional: + return CertificatesResponse( + data = [ + sysdig_client.models.certificate.Certificate( + id = 12345, + certificate_name = 'foo', + created = '1970-01-01T00:00Z', + issuer = 'C = US, ST = , L = San Francisco, O = Foobar Inc', + validity = sysdig_client.models.certificate_validity.Certificate_validity( + after = '1970-01-01T00:00Z', + before = '1970-01-01T00:00Z', ), + usage = 0, + fingerprint = 'sha1:72:6E:1A:34:27:DD:7C:5C:C6:F3:7D:FB:EC:DC:62:48:F4:A0:C8:B7', ) + ] + ) + else: + return CertificatesResponse( + data = [ + sysdig_client.models.certificate.Certificate( + id = 12345, + certificate_name = 'foo', + created = '1970-01-01T00:00Z', + issuer = 'C = US, ST = , L = San Francisco, O = Foobar Inc', + validity = sysdig_client.models.certificate_validity.Certificate_validity( + after = '1970-01-01T00:00Z', + before = '1970-01-01T00:00Z', ), + usage = 0, + fingerprint = 'sha1:72:6E:1A:34:27:DD:7C:5C:C6:F3:7D:FB:EC:DC:62:48:F4:A0:C8:B7', ) + ], + ) + """ + + def testCertificatesResponse(self): + """Test CertificatesResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_checkbox_field_value_v1.py b/test/test_checkbox_field_value_v1.py new file mode 100644 index 00000000..42ed3cca --- /dev/null +++ b/test/test_checkbox_field_value_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.checkbox_field_value_v1 import CheckboxFieldValueV1 + + +class TestCheckboxFieldValueV1(unittest.TestCase): + """CheckboxFieldValueV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CheckboxFieldValueV1: + """Test CheckboxFieldValueV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CheckboxFieldValueV1` + """ + model = CheckboxFieldValueV1() + if include_optional: + return CheckboxFieldValueV1( + id = 'id', + value = 'value' + ) + else: + return CheckboxFieldValueV1( + id = 'id', + value = 'value', + ) + """ + + def testCheckboxFieldValueV1(self): + """Test CheckboxFieldValueV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_chronicle_create_connection_info.py b/test/test_chronicle_create_connection_info.py new file mode 100644 index 00000000..28f0ecc0 --- /dev/null +++ b/test/test_chronicle_create_connection_info.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.chronicle_create_connection_info import ChronicleCreateConnectionInfo + + +class TestChronicleCreateConnectionInfo(unittest.TestCase): + """ChronicleCreateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ChronicleCreateConnectionInfo: + """Test ChronicleCreateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ChronicleCreateConnectionInfo` + """ + model = ChronicleCreateConnectionInfo() + if include_optional: + return ChronicleCreateConnectionInfo( + region = 'us', + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + credentials_o_auth2 = '{ "type": "service_account", "project_id": "malachite", "client_id": "1234567", }', + api_key = 'jeequiedahtaiSh2uM0chigheekaego8' + ) + else: + return ChronicleCreateConnectionInfo( + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + credentials_o_auth2 = '{ "type": "service_account", "project_id": "malachite", "client_id": "1234567", }', + api_key = 'jeequiedahtaiSh2uM0chigheekaego8', + ) + """ + + def testChronicleCreateConnectionInfo(self): + """Test ChronicleCreateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_chronicle_update_connection_info.py b/test/test_chronicle_update_connection_info.py new file mode 100644 index 00000000..1b1667aa --- /dev/null +++ b/test/test_chronicle_update_connection_info.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.chronicle_update_connection_info import ChronicleUpdateConnectionInfo + + +class TestChronicleUpdateConnectionInfo(unittest.TestCase): + """ChronicleUpdateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ChronicleUpdateConnectionInfo: + """Test ChronicleUpdateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ChronicleUpdateConnectionInfo` + """ + model = ChronicleUpdateConnectionInfo() + if include_optional: + return ChronicleUpdateConnectionInfo( + region = 'us', + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + credentials_o_auth2 = '{ "type": "service_account", "project_id": "malachite", "client_id": "1234567", }', + api_key = 'jeequiedahtaiSh2uM0chigheekaego8' + ) + else: + return ChronicleUpdateConnectionInfo( + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + ) + """ + + def testChronicleUpdateConnectionInfo(self): + """Test ChronicleUpdateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_cisa_kev_available_since.py b/test/test_cisa_kev_available_since.py new file mode 100644 index 00000000..40cb2f4a --- /dev/null +++ b/test/test_cisa_kev_available_since.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.cisa_kev_available_since import CisaKevAvailableSince + + +class TestCisaKevAvailableSince(unittest.TestCase): + """CisaKevAvailableSince unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CisaKevAvailableSince: + """Test CisaKevAvailableSince + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CisaKevAvailableSince` + """ + model = CisaKevAvailableSince() + if include_optional: + return CisaKevAvailableSince( + type = 'cisaKevAvailableSince', + extra = sysdig_client.models.cisa_kev_publish_date_extra.CisaKevPublishDate_extra( + days = 3, ) + ) + else: + return CisaKevAvailableSince( + type = 'cisaKevAvailableSince', + extra = sysdig_client.models.cisa_kev_publish_date_extra.CisaKevPublishDate_extra( + days = 3, ), + ) + """ + + def testCisaKevAvailableSince(self): + """Test CisaKevAvailableSince""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_cisa_kev_known_ransomware_campaign_use.py b/test/test_cisa_kev_known_ransomware_campaign_use.py new file mode 100644 index 00000000..711bdafe --- /dev/null +++ b/test/test_cisa_kev_known_ransomware_campaign_use.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.cisa_kev_known_ransomware_campaign_use import CisaKevKnownRansomwareCampaignUse + + +class TestCisaKevKnownRansomwareCampaignUse(unittest.TestCase): + """CisaKevKnownRansomwareCampaignUse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CisaKevKnownRansomwareCampaignUse: + """Test CisaKevKnownRansomwareCampaignUse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CisaKevKnownRansomwareCampaignUse` + """ + model = CisaKevKnownRansomwareCampaignUse() + if include_optional: + return CisaKevKnownRansomwareCampaignUse( + type = 'cisaKevKnownRansomwareCampaignUse' + ) + else: + return CisaKevKnownRansomwareCampaignUse( + type = 'cisaKevKnownRansomwareCampaignUse', + ) + """ + + def testCisaKevKnownRansomwareCampaignUse(self): + """Test CisaKevKnownRansomwareCampaignUse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_cisa_kev_publish_date.py b/test/test_cisa_kev_publish_date.py new file mode 100644 index 00000000..d877f2e0 --- /dev/null +++ b/test/test_cisa_kev_publish_date.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.cisa_kev_publish_date import CisaKevPublishDate + + +class TestCisaKevPublishDate(unittest.TestCase): + """CisaKevPublishDate unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CisaKevPublishDate: + """Test CisaKevPublishDate + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CisaKevPublishDate` + """ + model = CisaKevPublishDate() + if include_optional: + return CisaKevPublishDate( + type = 'cisaKevDueDateIn', + extra = sysdig_client.models.cisa_kev_publish_date_extra.CisaKevPublishDate_extra( + days = 3, ) + ) + else: + return CisaKevPublishDate( + type = 'cisaKevDueDateIn', + extra = sysdig_client.models.cisa_kev_publish_date_extra.CisaKevPublishDate_extra( + days = 3, ), + ) + """ + + def testCisaKevPublishDate(self): + """Test CisaKevPublishDate""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_cisa_kev_publish_date_extra.py b/test/test_cisa_kev_publish_date_extra.py new file mode 100644 index 00000000..7c85e565 --- /dev/null +++ b/test/test_cisa_kev_publish_date_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.cisa_kev_publish_date_extra import CisaKevPublishDateExtra + + +class TestCisaKevPublishDateExtra(unittest.TestCase): + """CisaKevPublishDateExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CisaKevPublishDateExtra: + """Test CisaKevPublishDateExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CisaKevPublishDateExtra` + """ + model = CisaKevPublishDateExtra() + if include_optional: + return CisaKevPublishDateExtra( + days = 3 + ) + else: + return CisaKevPublishDateExtra( + ) + """ + + def testCisaKevPublishDateExtra(self): + """Test CisaKevPublishDateExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_command.py b/test/test_command.py new file mode 100644 index 00000000..9a6af9cc --- /dev/null +++ b/test/test_command.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.command import Command + + +class TestCommand(unittest.TestCase): + """Command unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Command: + """Test Command + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Command` + """ + model = Command() + if include_optional: + return Command( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'command', + container_id = 'f8d4f71ab80b', + cmdline = 'pg_isready --host 10.32.0.8', + comm = 'pg_isready', + pcomm = 'sshd', + pid = 31135, + ppid = 31132, + uid = 1234, + username = 'foo', + cwd = '/', + login_shell_id = 11640, + login_shell_distance = 5, + hostname = 'ip-127-0-0-1', + tty = 12345, + user_login_uid = 1234, + user_login_name = 'foo', + proc_exepath = '/usr/bin/pg_isready', + labels = { + 'key' : 'foo' + } + ) + else: + return Command( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'command', + cmdline = 'pg_isready --host 10.32.0.8', + comm = 'pg_isready', + pcomm = 'sshd', + pid = 31135, + ppid = 31132, + uid = 1234, + cwd = '/', + login_shell_id = 11640, + login_shell_distance = 5, + hostname = 'ip-127-0-0-1', + tty = 12345, + user_login_uid = 1234, + user_login_name = 'foo', + proc_exepath = '/usr/bin/pg_isready', + ) + """ + + def testCommand(self): + """Test Command""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_compositions_inner.py b/test/test_compositions_inner.py new file mode 100644 index 00000000..3596bec8 --- /dev/null +++ b/test/test_compositions_inner.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.compositions_inner import CompositionsInner + + +class TestCompositionsInner(unittest.TestCase): + """CompositionsInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CompositionsInner: + """Test CompositionsInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CompositionsInner` + """ + model = CompositionsInner() + if include_optional: + return CompositionsInner( + aggregate = 'complete', + assemblies = [ + '5581fa94-9052-4e55-8b28-750f16e183be' + ], + dependencies = [ + '5581fa94-9052-4e55-8b28-750f16e183be' + ] + ) + else: + return CompositionsInner( + aggregate = 'complete', + ) + """ + + def testCompositionsInner(self): + """Test CompositionsInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_connection.py b/test/test_connection.py new file mode 100644 index 00000000..d1fd8714 --- /dev/null +++ b/test/test_connection.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.connection import Connection + + +class TestConnection(unittest.TestCase): + """Connection unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Connection: + """Test Connection + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Connection` + """ + model = Connection() + if include_optional: + return Connection( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'connection', + cmdline = 'pg_isready --host 10.32.0.8', + comm = 'pg_isready', + dns_domains = ["sysdig.com"], + container_id = 'f8d4f71ab80b', + pid = 123, + process_name = 'curl', + client_ipv4 = '127.0.0.1', + client_port = 31234, + server_ipv4 = '127.0.0.1', + server_port = 80, + direction = 'in', + l4protocol = 'tcp', + hostname = 'ip-127-0-0-1', + tty = 32444, + labels = { + 'key' : 'foo' + } + ) + else: + return Connection( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'connection', + cmdline = 'pg_isready --host 10.32.0.8', + comm = 'pg_isready', + dns_domains = ["sysdig.com"], + container_id = 'f8d4f71ab80b', + pid = 123, + process_name = 'curl', + client_ipv4 = '127.0.0.1', + client_port = 31234, + server_ipv4 = '127.0.0.1', + server_port = 80, + direction = 'in', + l4protocol = 'tcp', + hostname = 'ip-127-0-0-1', + tty = 32444, + ) + """ + + def testConnection(self): + """Test Connection""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_container_info.py b/test/test_container_info.py new file mode 100644 index 00000000..18ba3864 --- /dev/null +++ b/test/test_container_info.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.container_info import ContainerInfo + + +class TestContainerInfo(unittest.TestCase): + """ContainerInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ContainerInfo: + """Test ContainerInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ContainerInfo` + """ + model = ContainerInfo() + if include_optional: + return ContainerInfo( + pod_name = 'nginx', + container_id = '1b883a5d-06c7-4e90-9973-d42d9889de27', + container_name = 'my-app', + pull_string = 'redis/redis:1.0.0' + ) + else: + return ContainerInfo( + pod_name = 'nginx', + container_id = '1b883a5d-06c7-4e90-9973-d42d9889de27', + container_name = 'my-app', + ) + """ + + def testContainerInfo(self): + """Test ContainerInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_container_killed_action.py b/test/test_container_killed_action.py new file mode 100644 index 00000000..5f8f2c5e --- /dev/null +++ b/test/test_container_killed_action.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.container_killed_action import ContainerKilledAction + + +class TestContainerKilledAction(unittest.TestCase): + """ContainerKilledAction unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ContainerKilledAction: + """Test ContainerKilledAction + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ContainerKilledAction` + """ + model = ContainerKilledAction() + if include_optional: + return ContainerKilledAction( + type = 'capture', + is_successful = True, + err_msg = 'Could not perform cri-o command: could not get pid for container 9566c6966932' + ) + else: + return ContainerKilledAction( + type = 'capture', + ) + """ + + def testContainerKilledAction(self): + """Test ContainerKilledAction""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_container_paused_action.py b/test/test_container_paused_action.py new file mode 100644 index 00000000..d7d667ba --- /dev/null +++ b/test/test_container_paused_action.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.container_paused_action import ContainerPausedAction + + +class TestContainerPausedAction(unittest.TestCase): + """ContainerPausedAction unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ContainerPausedAction: + """Test ContainerPausedAction + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ContainerPausedAction` + """ + model = ContainerPausedAction() + if include_optional: + return ContainerPausedAction( + type = 'capture', + is_successful = True, + err_msg = 'Could not perform cri-o command: could not get pid for container 9566c6966932' + ) + else: + return ContainerPausedAction( + type = 'capture', + ) + """ + + def testContainerPausedAction(self): + """Test ContainerPausedAction""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_container_stopped_action.py b/test/test_container_stopped_action.py new file mode 100644 index 00000000..6861bbc0 --- /dev/null +++ b/test/test_container_stopped_action.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.container_stopped_action import ContainerStoppedAction + + +class TestContainerStoppedAction(unittest.TestCase): + """ContainerStoppedAction unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ContainerStoppedAction: + """Test ContainerStoppedAction + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ContainerStoppedAction` + """ + model = ContainerStoppedAction() + if include_optional: + return ContainerStoppedAction( + type = 'capture', + is_successful = True, + err_msg = 'Could not perform cri-o command: could not get pid for container 9566c6966932' + ) + else: + return ContainerStoppedAction( + type = 'capture', + ) + """ + + def testContainerStoppedAction(self): + """Test ContainerStoppedAction""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_context.py b/test/test_context.py new file mode 100644 index 00000000..1935c4de --- /dev/null +++ b/test/test_context.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.context import Context + + +class TestContext(unittest.TestCase): + """Context unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Context: + """Test Context + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Context` + """ + model = Context() + if include_optional: + return Context( + type = 'imageName', + value = 'nginx:latest' + ) + else: + return Context( + type = 'imageName', + value = 'nginx:latest', + ) + """ + + def testContext(self): + """Test Context""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_cost_advisor_custom_pricing_api.py b/test/test_cost_advisor_custom_pricing_api.py new file mode 100644 index 00000000..1b6996cc --- /dev/null +++ b/test/test_cost_advisor_custom_pricing_api.py @@ -0,0 +1,73 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.cost_advisor_custom_pricing_api import CostAdvisorCustomPricingApi + + +class TestCostAdvisorCustomPricingApi(unittest.TestCase): + """CostAdvisorCustomPricingApi unit test stubs""" + + def setUp(self) -> None: + self.api = CostAdvisorCustomPricingApi() + + def tearDown(self) -> None: + pass + + def test_create_pricing_v1(self) -> None: + """Test case for create_pricing_v1 + + Create Pricing + """ + pass + + def test_delete_pricing_by_id_v1(self) -> None: + """Test case for delete_pricing_by_id_v1 + + Delete Pricing + """ + pass + + def test_get_pricing_by_id_v1(self) -> None: + """Test case for get_pricing_by_id_v1 + + Get Pricing + """ + pass + + def test_get_pricing_projected_costs_v1(self) -> None: + """Test case for get_pricing_projected_costs_v1 + + Get Pricing Projected Costs + """ + pass + + def test_get_pricing_v1(self) -> None: + """Test case for get_pricing_v1 + + List Pricing + """ + pass + + def test_update_pricing_by_id_v1(self) -> None: + """Test case for update_pricing_by_id_v1 + + Update Pricing + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_cost_advisor_data_api.py b/test/test_cost_advisor_data_api.py new file mode 100644 index 00000000..a7cb696a --- /dev/null +++ b/test/test_cost_advisor_data_api.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.cost_advisor_data_api import CostAdvisorDataApi + + +class TestCostAdvisorDataApi(unittest.TestCase): + """CostAdvisorDataApi unit test stubs""" + + def setUp(self) -> None: + self.api = CostAdvisorDataApi() + + def tearDown(self) -> None: + pass + + def test_get_workload_cost_data_v1(self) -> None: + """Test case for get_workload_cost_data_v1 + + Workload Cost Trends Data + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_access_key_request_v1.py b/test/test_create_access_key_request_v1.py new file mode 100644 index 00000000..d2045906 --- /dev/null +++ b/test/test_create_access_key_request_v1.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_access_key_request_v1 import CreateAccessKeyRequestV1 + + +class TestCreateAccessKeyRequestV1(unittest.TestCase): + """CreateAccessKeyRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateAccessKeyRequestV1: + """Test CreateAccessKeyRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateAccessKeyRequestV1` + """ + model = CreateAccessKeyRequestV1() + if include_optional: + return CreateAccessKeyRequestV1( + agent_limit = 100, + agent_reservation = 5, + team_id = 13, + metadata = { + 'key' : 'metaKey1:metaValue1' + } + ) + else: + return CreateAccessKeyRequestV1( + ) + """ + + def testCreateAccessKeyRequestV1(self): + """Test CreateAccessKeyRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_amazon_sqs_integration_request.py b/test/test_create_amazon_sqs_integration_request.py new file mode 100644 index 00000000..38269758 --- /dev/null +++ b/test/test_create_amazon_sqs_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_amazon_sqs_integration_request import CreateAmazonSqsIntegrationRequest + + +class TestCreateAmazonSqsIntegrationRequest(unittest.TestCase): + """CreateAmazonSqsIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateAmazonSqsIntegrationRequest: + """Test CreateAmazonSqsIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateAmazonSqsIntegrationRequest` + """ + model = CreateAmazonSqsIntegrationRequest() + if include_optional: + return CreateAmazonSqsIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateAmazonSqsIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateAmazonSqsIntegrationRequest(self): + """Test CreateAmazonSqsIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_bundle_request.py b/test/test_create_bundle_request.py new file mode 100644 index 00000000..1842076a --- /dev/null +++ b/test/test_create_bundle_request.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_bundle_request import CreateBundleRequest + + +class TestCreateBundleRequest(unittest.TestCase): + """CreateBundleRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateBundleRequest: + """Test CreateBundleRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateBundleRequest` + """ + model = CreateBundleRequest() + if include_optional: + return CreateBundleRequest( + name = 'sysdig bundle', + description = 'default sysdig bundle', + rules = [ + sysdig_client.models.new_rule.NewRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}},{"type":"vulnIsFixable"},{"type":"denyCVE","extra":{"vulnIds":["CVE-2021-12345","CVE-2021-67890"]}}], ) + ] + ) + else: + return CreateBundleRequest( + name = 'sysdig bundle', + rules = [ + sysdig_client.models.new_rule.NewRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}},{"type":"vulnIsFixable"},{"type":"denyCVE","extra":{"vulnIds":["CVE-2021-12345","CVE-2021-67890"]}}], ) + ], + ) + """ + + def testCreateBundleRequest(self): + """Test CreateBundleRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_chronicle_integration_conn_info.py b/test/test_create_chronicle_integration_conn_info.py new file mode 100644 index 00000000..205592f9 --- /dev/null +++ b/test/test_create_chronicle_integration_conn_info.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_chronicle_integration_conn_info import CreateChronicleIntegrationConnInfo + + +class TestCreateChronicleIntegrationConnInfo(unittest.TestCase): + """CreateChronicleIntegrationConnInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateChronicleIntegrationConnInfo: + """Test CreateChronicleIntegrationConnInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateChronicleIntegrationConnInfo` + """ + model = CreateChronicleIntegrationConnInfo() + if include_optional: + return CreateChronicleIntegrationConnInfo( + region = 'us', + api_key = 'jeequiedahtaiSh2uM0chigheekaego8' + ) + else: + return CreateChronicleIntegrationConnInfo( + api_key = 'jeequiedahtaiSh2uM0chigheekaego8', + ) + """ + + def testCreateChronicleIntegrationConnInfo(self): + """Test CreateChronicleIntegrationConnInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_chronicle_integration_conn_info_v2.py b/test/test_create_chronicle_integration_conn_info_v2.py new file mode 100644 index 00000000..014063a9 --- /dev/null +++ b/test/test_create_chronicle_integration_conn_info_v2.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_chronicle_integration_conn_info_v2 import CreateChronicleIntegrationConnInfoV2 + + +class TestCreateChronicleIntegrationConnInfoV2(unittest.TestCase): + """CreateChronicleIntegrationConnInfoV2 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateChronicleIntegrationConnInfoV2: + """Test CreateChronicleIntegrationConnInfoV2 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateChronicleIntegrationConnInfoV2` + """ + model = CreateChronicleIntegrationConnInfoV2() + if include_optional: + return CreateChronicleIntegrationConnInfoV2( + region = 'us', + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + credentials_o_auth2 = '{ "type": "service_account", "project_id": "malachite", "client_id": "1234567", }' + ) + else: + return CreateChronicleIntegrationConnInfoV2( + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + credentials_o_auth2 = '{ "type": "service_account", "project_id": "malachite", "client_id": "1234567", }', + ) + """ + + def testCreateChronicleIntegrationConnInfoV2(self): + """Test CreateChronicleIntegrationConnInfoV2""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_chronicle_integration_request.py b/test/test_create_chronicle_integration_request.py new file mode 100644 index 00000000..e729d161 --- /dev/null +++ b/test/test_create_chronicle_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_chronicle_integration_request import CreateChronicleIntegrationRequest + + +class TestCreateChronicleIntegrationRequest(unittest.TestCase): + """CreateChronicleIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateChronicleIntegrationRequest: + """Test CreateChronicleIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateChronicleIntegrationRequest` + """ + model = CreateChronicleIntegrationRequest() + if include_optional: + return CreateChronicleIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateChronicleIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateChronicleIntegrationRequest(self): + """Test CreateChronicleIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_custom_webhook_notification_channel_request_v1.py b/test/test_create_custom_webhook_notification_channel_request_v1.py new file mode 100644 index 00000000..907b82ec --- /dev/null +++ b/test/test_create_custom_webhook_notification_channel_request_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_custom_webhook_notification_channel_request_v1 import ( + CreateCustomWebhookNotificationChannelRequestV1, +) + + +class TestCreateCustomWebhookNotificationChannelRequestV1(unittest.TestCase): + """CreateCustomWebhookNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateCustomWebhookNotificationChannelRequestV1: + """Test CreateCustomWebhookNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateCustomWebhookNotificationChannelRequestV1` + """ + model = CreateCustomWebhookNotificationChannelRequestV1() + if include_optional: + return CreateCustomWebhookNotificationChannelRequestV1( + options = None + ) + else: + return CreateCustomWebhookNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateCustomWebhookNotificationChannelRequestV1(self): + """Test CreateCustomWebhookNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_elasticsearch_integration_request.py b/test/test_create_elasticsearch_integration_request.py new file mode 100644 index 00000000..98779068 --- /dev/null +++ b/test/test_create_elasticsearch_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_elasticsearch_integration_request import CreateElasticsearchIntegrationRequest + + +class TestCreateElasticsearchIntegrationRequest(unittest.TestCase): + """CreateElasticsearchIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateElasticsearchIntegrationRequest: + """Test CreateElasticsearchIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateElasticsearchIntegrationRequest` + """ + model = CreateElasticsearchIntegrationRequest() + if include_optional: + return CreateElasticsearchIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateElasticsearchIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateElasticsearchIntegrationRequest(self): + """Test CreateElasticsearchIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_elasticsearch_integration_request_all_of_connection_info.py b/test/test_create_elasticsearch_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..ff39cff1 --- /dev/null +++ b/test/test_create_elasticsearch_integration_request_all_of_connection_info.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_elasticsearch_integration_request_all_of_connection_info import ( + CreateElasticsearchIntegrationRequestAllOfConnectionInfo, +) + + +class TestCreateElasticsearchIntegrationRequestAllOfConnectionInfo(unittest.TestCase): + """CreateElasticsearchIntegrationRequestAllOfConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateElasticsearchIntegrationRequestAllOfConnectionInfo: + """Test CreateElasticsearchIntegrationRequestAllOfConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateElasticsearchIntegrationRequestAllOfConnectionInfo` + """ + model = CreateElasticsearchIntegrationRequestAllOfConnectionInfo() + if include_optional: + return CreateElasticsearchIntegrationRequestAllOfConnectionInfo( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + is_insecure = False, + auth = 'BASIC_AUTH', + format = 'KV_PAIRS', + secret = 'Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK' + ) + else: + return CreateElasticsearchIntegrationRequestAllOfConnectionInfo( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + auth = 'BASIC_AUTH', + secret = 'Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK', + ) + """ + + def testCreateElasticsearchIntegrationRequestAllOfConnectionInfo(self): + """Test CreateElasticsearchIntegrationRequestAllOfConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_email_notification_channel_request_v1.py b/test/test_create_email_notification_channel_request_v1.py new file mode 100644 index 00000000..c956687e --- /dev/null +++ b/test/test_create_email_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_email_notification_channel_request_v1 import CreateEmailNotificationChannelRequestV1 + + +class TestCreateEmailNotificationChannelRequestV1(unittest.TestCase): + """CreateEmailNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateEmailNotificationChannelRequestV1: + """Test CreateEmailNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateEmailNotificationChannelRequestV1` + """ + model = CreateEmailNotificationChannelRequestV1() + if include_optional: + return CreateEmailNotificationChannelRequestV1( + options = None + ) + else: + return CreateEmailNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateEmailNotificationChannelRequestV1(self): + """Test CreateEmailNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_gchat_notification_channel_request_v1.py b/test/test_create_gchat_notification_channel_request_v1.py new file mode 100644 index 00000000..c50a4986 --- /dev/null +++ b/test/test_create_gchat_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_gchat_notification_channel_request_v1 import CreateGchatNotificationChannelRequestV1 + + +class TestCreateGchatNotificationChannelRequestV1(unittest.TestCase): + """CreateGchatNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateGchatNotificationChannelRequestV1: + """Test CreateGchatNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateGchatNotificationChannelRequestV1` + """ + model = CreateGchatNotificationChannelRequestV1() + if include_optional: + return CreateGchatNotificationChannelRequestV1( + options = None + ) + else: + return CreateGchatNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateGchatNotificationChannelRequestV1(self): + """Test CreateGchatNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_global_service_account_request_v1.py b/test/test_create_global_service_account_request_v1.py new file mode 100644 index 00000000..7dd8f391 --- /dev/null +++ b/test/test_create_global_service_account_request_v1.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_global_service_account_request_v1 import CreateGlobalServiceAccountRequestV1 + + +class TestCreateGlobalServiceAccountRequestV1(unittest.TestCase): + """CreateGlobalServiceAccountRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateGlobalServiceAccountRequestV1: + """Test CreateGlobalServiceAccountRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateGlobalServiceAccountRequestV1` + """ + model = CreateGlobalServiceAccountRequestV1() + if include_optional: + return CreateGlobalServiceAccountRequestV1( + name = 'CI/CD service api key', + expiration_date = 1630326638135, + system_roles = [ + 'ROLE_SERVICE_ACCOUNT' + ] + ) + else: + return CreateGlobalServiceAccountRequestV1( + name = 'CI/CD service api key', + system_roles = [ + 'ROLE_SERVICE_ACCOUNT' + ], + ) + """ + + def testCreateGlobalServiceAccountRequestV1(self): + """Test CreateGlobalServiceAccountRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_google_pub_sub_integration_request.py b/test/test_create_google_pub_sub_integration_request.py new file mode 100644 index 00000000..c3c4bf48 --- /dev/null +++ b/test/test_create_google_pub_sub_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_google_pub_sub_integration_request import CreateGooglePubSubIntegrationRequest + + +class TestCreateGooglePubSubIntegrationRequest(unittest.TestCase): + """CreateGooglePubSubIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateGooglePubSubIntegrationRequest: + """Test CreateGooglePubSubIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateGooglePubSubIntegrationRequest` + """ + model = CreateGooglePubSubIntegrationRequest() + if include_optional: + return CreateGooglePubSubIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateGooglePubSubIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateGooglePubSubIntegrationRequest(self): + """Test CreateGooglePubSubIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_google_scc_integration_request.py b/test/test_create_google_scc_integration_request.py new file mode 100644 index 00000000..2e49513a --- /dev/null +++ b/test/test_create_google_scc_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_google_scc_integration_request import CreateGoogleSccIntegrationRequest + + +class TestCreateGoogleSccIntegrationRequest(unittest.TestCase): + """CreateGoogleSccIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateGoogleSccIntegrationRequest: + """Test CreateGoogleSccIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateGoogleSccIntegrationRequest` + """ + model = CreateGoogleSccIntegrationRequest() + if include_optional: + return CreateGoogleSccIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateGoogleSccIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateGoogleSccIntegrationRequest(self): + """Test CreateGoogleSccIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_group_mapping_request_v1.py b/test/test_create_group_mapping_request_v1.py new file mode 100644 index 00000000..ffa3c6c7 --- /dev/null +++ b/test/test_create_group_mapping_request_v1.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_group_mapping_request_v1 import CreateGroupMappingRequestV1 + + +class TestCreateGroupMappingRequestV1(unittest.TestCase): + """CreateGroupMappingRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateGroupMappingRequestV1: + """Test CreateGroupMappingRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateGroupMappingRequestV1` + """ + model = CreateGroupMappingRequestV1() + if include_optional: + return CreateGroupMappingRequestV1( + group_name = 'Admins_Mapped_Group', + standard_team_role = 'ROLE_TEAM_READ', + custom_team_role_id = 1, + is_admin = False, + team_map = sysdig_client.models.team_map.Team Map( + is_for_all_teams = False, + team_ids = [154,187], ), + weight = 2 + ) + else: + return CreateGroupMappingRequestV1( + group_name = 'Admins_Mapped_Group', + team_map = sysdig_client.models.team_map.Team Map( + is_for_all_teams = False, + team_ids = [154,187], ), + ) + """ + + def testCreateGroupMappingRequestV1(self): + """Test CreateGroupMappingRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_ibm_event_notifications_notification_channel_request_v1.py b/test/test_create_ibm_event_notifications_notification_channel_request_v1.py new file mode 100644 index 00000000..67a5ab7b --- /dev/null +++ b/test/test_create_ibm_event_notifications_notification_channel_request_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_ibm_event_notifications_notification_channel_request_v1 import ( + CreateIbmEventNotificationsNotificationChannelRequestV1, +) + + +class TestCreateIbmEventNotificationsNotificationChannelRequestV1(unittest.TestCase): + """CreateIbmEventNotificationsNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIbmEventNotificationsNotificationChannelRequestV1: + """Test CreateIbmEventNotificationsNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateIbmEventNotificationsNotificationChannelRequestV1` + """ + model = CreateIbmEventNotificationsNotificationChannelRequestV1() + if include_optional: + return CreateIbmEventNotificationsNotificationChannelRequestV1( + options = None + ) + else: + return CreateIbmEventNotificationsNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateIbmEventNotificationsNotificationChannelRequestV1(self): + """Test CreateIbmEventNotificationsNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_inhibition_rule_request_v1.py b/test/test_create_inhibition_rule_request_v1.py new file mode 100644 index 00000000..488bbc25 --- /dev/null +++ b/test/test_create_inhibition_rule_request_v1.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_inhibition_rule_request_v1 import CreateInhibitionRuleRequestV1 + + +class TestCreateInhibitionRuleRequestV1(unittest.TestCase): + """CreateInhibitionRuleRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateInhibitionRuleRequestV1: + """Test CreateInhibitionRuleRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateInhibitionRuleRequestV1` + """ + model = CreateInhibitionRuleRequestV1() + if include_optional: + return CreateInhibitionRuleRequestV1( + is_enabled = False, + name = 'this is an example name', + description = 'this is an example description', + source_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + target_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + equal = [ + 'myLabel' + ] + ) + else: + return CreateInhibitionRuleRequestV1( + source_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + target_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + ) + """ + + def testCreateInhibitionRuleRequestV1(self): + """Test CreateInhibitionRuleRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_integration_request.py b/test/test_create_integration_request.py new file mode 100644 index 00000000..28e843c8 --- /dev/null +++ b/test/test_create_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_integration_request import CreateIntegrationRequest + + +class TestCreateIntegrationRequest(unittest.TestCase): + """CreateIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIntegrationRequest: + """Test CreateIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateIntegrationRequest` + """ + model = CreateIntegrationRequest() + if include_optional: + return CreateIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateIntegrationRequest(self): + """Test CreateIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_integration_request_v1.py b/test/test_create_integration_request_v1.py new file mode 100644 index 00000000..9c2fac9a --- /dev/null +++ b/test/test_create_integration_request_v1.py @@ -0,0 +1,70 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_integration_request_v1 import CreateIntegrationRequestV1 + + +class TestCreateIntegrationRequestV1(unittest.TestCase): + """CreateIntegrationRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIntegrationRequestV1: + """Test CreateIntegrationRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateIntegrationRequestV1` + """ + model = CreateIntegrationRequestV1() + if include_optional: + return CreateIntegrationRequestV1( + name = 'name', + is_all_teams = False, + team_ids = [ + 1 + ], + jira_project = '10000', + jira_url = 'https://atlassian-url.com', + jira_email = 'jira.user@email.com', + jira_access_token = 'jira-access-token', + jira_assignee = '5b10ac8d82e05b22cc7d4ef5', + jira_labels = [ + 'label' + ] + ) + else: + return CreateIntegrationRequestV1( + name = 'name', + jira_project = '10000', + jira_url = 'https://atlassian-url.com', + jira_email = 'jira.user@email.com', + jira_access_token = 'jira-access-token', + ) + """ + + def testCreateIntegrationRequestV1(self): + """Test CreateIntegrationRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_ip_filter_v1.py b/test/test_create_ip_filter_v1.py new file mode 100644 index 00000000..76b29a56 --- /dev/null +++ b/test/test_create_ip_filter_v1.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_ip_filter_v1 import CreateIpFilterV1 + + +class TestCreateIpFilterV1(unittest.TestCase): + """CreateIpFilterV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIpFilterV1: + """Test CreateIpFilterV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateIpFilterV1` + """ + model = CreateIpFilterV1() + if include_optional: + return CreateIpFilterV1( + ip_range = '192.168.0.0/24', + note = 'London Office', + is_enabled = True + ) + else: + return CreateIpFilterV1( + ip_range = '192.168.0.0/24', + is_enabled = True, + ) + """ + + def testCreateIpFilterV1(self): + """Test CreateIpFilterV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_issue_type_request_v1.py b/test/test_create_issue_type_request_v1.py new file mode 100644 index 00000000..4d060c44 --- /dev/null +++ b/test/test_create_issue_type_request_v1.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_issue_type_request_v1 import CreateIssueTypeRequestV1 + + +class TestCreateIssueTypeRequestV1(unittest.TestCase): + """CreateIssueTypeRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateIssueTypeRequestV1: + """Test CreateIssueTypeRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateIssueTypeRequestV1` + """ + model = CreateIssueTypeRequestV1() + if include_optional: + return CreateIssueTypeRequestV1( + jira_id = '1', + jira_open_status_id = '1000', + jira_in_progress_status_id = '1001', + jira_closed_status_id = '1002', + custom_field_ids = [ + 'custom-field-id' + ] + ) + else: + return CreateIssueTypeRequestV1( + jira_id = '1', + jira_open_status_id = '1000', + jira_in_progress_status_id = '1001', + jira_closed_status_id = '1002', + ) + """ + + def testCreateIssueTypeRequestV1(self): + """Test CreateIssueTypeRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_kafka_integration_request.py b/test/test_create_kafka_integration_request.py new file mode 100644 index 00000000..a053eff3 --- /dev/null +++ b/test/test_create_kafka_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_kafka_integration_request import CreateKafkaIntegrationRequest + + +class TestCreateKafkaIntegrationRequest(unittest.TestCase): + """CreateKafkaIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateKafkaIntegrationRequest: + """Test CreateKafkaIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateKafkaIntegrationRequest` + """ + model = CreateKafkaIntegrationRequest() + if include_optional: + return CreateKafkaIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateKafkaIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateKafkaIntegrationRequest(self): + """Test CreateKafkaIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_kafka_integration_request_all_of_connection_info.py b/test/test_create_kafka_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..e1cbe0ca --- /dev/null +++ b/test/test_create_kafka_integration_request_all_of_connection_info.py @@ -0,0 +1,78 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_kafka_integration_request_all_of_connection_info import ( + CreateKafkaIntegrationRequestAllOfConnectionInfo, +) + + +class TestCreateKafkaIntegrationRequestAllOfConnectionInfo(unittest.TestCase): + """CreateKafkaIntegrationRequestAllOfConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateKafkaIntegrationRequestAllOfConnectionInfo: + """Test CreateKafkaIntegrationRequestAllOfConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateKafkaIntegrationRequestAllOfConnectionInfo` + """ + model = CreateKafkaIntegrationRequestAllOfConnectionInfo() + if include_optional: + return CreateKafkaIntegrationRequestAllOfConnectionInfo( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + balancer = 'murmur2', + compression = 'gzip', + is_tls_enabled = True, + is_insecure = False, + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log', + keytab = 'BQIAAAA3AAEAClNZU0RJRy5DT00ABnN5c2RpZwAAAAFlhdTkAQAXABCIRvfq7o+xF60Gvdgwt1hsAAAAAQ==' + ) + else: + return CreateKafkaIntegrationRequestAllOfConnectionInfo( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log', + keytab = 'BQIAAAA3AAEAClNZU0RJRy5DT00ABnN5c2RpZwAAAAFlhdTkAQAXABCIRvfq7o+xF60Gvdgwt1hsAAAAAQ==', + ) + """ + + def testCreateKafkaIntegrationRequestAllOfConnectionInfo(self): + """Test CreateKafkaIntegrationRequestAllOfConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_mcm_integration_request.py b/test/test_create_mcm_integration_request.py new file mode 100644 index 00000000..3e01dffc --- /dev/null +++ b/test/test_create_mcm_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_mcm_integration_request import CreateMcmIntegrationRequest + + +class TestCreateMcmIntegrationRequest(unittest.TestCase): + """CreateMcmIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateMcmIntegrationRequest: + """Test CreateMcmIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateMcmIntegrationRequest` + """ + model = CreateMcmIntegrationRequest() + if include_optional: + return CreateMcmIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateMcmIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateMcmIntegrationRequest(self): + """Test CreateMcmIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_microsoft_sentinel_integration_request.py b/test/test_create_microsoft_sentinel_integration_request.py new file mode 100644 index 00000000..1039c543 --- /dev/null +++ b/test/test_create_microsoft_sentinel_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_microsoft_sentinel_integration_request import CreateMicrosoftSentinelIntegrationRequest + + +class TestCreateMicrosoftSentinelIntegrationRequest(unittest.TestCase): + """CreateMicrosoftSentinelIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateMicrosoftSentinelIntegrationRequest: + """Test CreateMicrosoftSentinelIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateMicrosoftSentinelIntegrationRequest` + """ + model = CreateMicrosoftSentinelIntegrationRequest() + if include_optional: + return CreateMicrosoftSentinelIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateMicrosoftSentinelIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateMicrosoftSentinelIntegrationRequest(self): + """Test CreateMicrosoftSentinelIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_ms_teams_notification_channel_request_v1.py b/test/test_create_ms_teams_notification_channel_request_v1.py new file mode 100644 index 00000000..ed923de1 --- /dev/null +++ b/test/test_create_ms_teams_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_ms_teams_notification_channel_request_v1 import CreateMsTeamsNotificationChannelRequestV1 + + +class TestCreateMsTeamsNotificationChannelRequestV1(unittest.TestCase): + """CreateMsTeamsNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateMsTeamsNotificationChannelRequestV1: + """Test CreateMsTeamsNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateMsTeamsNotificationChannelRequestV1` + """ + model = CreateMsTeamsNotificationChannelRequestV1() + if include_optional: + return CreateMsTeamsNotificationChannelRequestV1( + options = None + ) + else: + return CreateMsTeamsNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateMsTeamsNotificationChannelRequestV1(self): + """Test CreateMsTeamsNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_notification_channel_request_v1.py b/test/test_create_notification_channel_request_v1.py new file mode 100644 index 00000000..2a81e5ca --- /dev/null +++ b/test/test_create_notification_channel_request_v1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_notification_channel_request_v1 import CreateNotificationChannelRequestV1 + + +class TestCreateNotificationChannelRequestV1(unittest.TestCase): + """CreateNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateNotificationChannelRequestV1: + """Test CreateNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateNotificationChannelRequestV1` + """ + model = CreateNotificationChannelRequestV1() + if include_optional: + return CreateNotificationChannelRequestV1( + team_id = 13, + is_enabled = False, + name = 'Sample Notification Channel Name', + has_test_notification_enabled = False, + type = 'EMAIL' + ) + else: + return CreateNotificationChannelRequestV1( + name = 'Sample Notification Channel Name', + type = 'EMAIL', + ) + """ + + def testCreateNotificationChannelRequestV1(self): + """Test CreateNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_opsgenie_notification_channel_request_v1.py b/test/test_create_opsgenie_notification_channel_request_v1.py new file mode 100644 index 00000000..c6ed31c5 --- /dev/null +++ b/test/test_create_opsgenie_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_opsgenie_notification_channel_request_v1 import CreateOpsgenieNotificationChannelRequestV1 + + +class TestCreateOpsgenieNotificationChannelRequestV1(unittest.TestCase): + """CreateOpsgenieNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateOpsgenieNotificationChannelRequestV1: + """Test CreateOpsgenieNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateOpsgenieNotificationChannelRequestV1` + """ + model = CreateOpsgenieNotificationChannelRequestV1() + if include_optional: + return CreateOpsgenieNotificationChannelRequestV1( + options = None + ) + else: + return CreateOpsgenieNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateOpsgenieNotificationChannelRequestV1(self): + """Test CreateOpsgenieNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_pager_duty_notification_channel_request_v1.py b/test/test_create_pager_duty_notification_channel_request_v1.py new file mode 100644 index 00000000..b0192300 --- /dev/null +++ b/test/test_create_pager_duty_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_pager_duty_notification_channel_request_v1 import CreatePagerDutyNotificationChannelRequestV1 + + +class TestCreatePagerDutyNotificationChannelRequestV1(unittest.TestCase): + """CreatePagerDutyNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreatePagerDutyNotificationChannelRequestV1: + """Test CreatePagerDutyNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreatePagerDutyNotificationChannelRequestV1` + """ + model = CreatePagerDutyNotificationChannelRequestV1() + if include_optional: + return CreatePagerDutyNotificationChannelRequestV1( + options = None + ) + else: + return CreatePagerDutyNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreatePagerDutyNotificationChannelRequestV1(self): + """Test CreatePagerDutyNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_policy_request.py b/test/test_create_policy_request.py new file mode 100644 index 00000000..1254c47f --- /dev/null +++ b/test/test_create_policy_request.py @@ -0,0 +1,73 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_policy_request import CreatePolicyRequest + + +class TestCreatePolicyRequest(unittest.TestCase): + """CreatePolicyRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreatePolicyRequest: + """Test CreatePolicyRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreatePolicyRequest` + """ + model = CreatePolicyRequest() + if include_optional: + return CreatePolicyRequest( + name = 'Sysdig policy', + description = 'Sysdig policy', + bundles = [ + sysdig_client.models.policy_bundle_reference.policy bundle reference( + id = 42, + name = 'My Bundle', ) + ], + stages = [ + sysdig_client.models.stage_definition.Stage definition( + name = 'runtime', + configuration = [ + sysdig_client.models.stage_configuration.stage configuration( + scope = 'kubernetes.cluster.name = "my-cluster" and kubernetes.namespace.name = "my-namespace"', ) + ], ) + ] + ) + else: + return CreatePolicyRequest( + name = 'Sysdig policy', + bundles = [ + sysdig_client.models.policy_bundle_reference.policy bundle reference( + id = 42, + name = 'My Bundle', ) + ], + ) + """ + + def testCreatePolicyRequest(self): + """Test CreatePolicyRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_pricing_request_v1.py b/test/test_create_pricing_request_v1.py new file mode 100644 index 00000000..1e8a0880 --- /dev/null +++ b/test/test_create_pricing_request_v1.py @@ -0,0 +1,71 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_pricing_request_v1 import CreatePricingRequestV1 + + +class TestCreatePricingRequestV1(unittest.TestCase): + """CreatePricingRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreatePricingRequestV1: + """Test CreatePricingRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreatePricingRequestV1` + """ + model = CreatePricingRequestV1() + if include_optional: + return CreatePricingRequestV1( + type = 'CLUSTER', + cluster_name = 'My pricing', + name = 'My pricing', + unit_pricing = sysdig_client.models.unit_pricing_v1.Unit Pricing V1( + cpu = 0.031611, + ram = 0.004237, + storage = 0.00005479452, + spot_cpu = 1.337, + spot_ram = 1.337, ), + spot_label = 'cost-advisor-spot-node', + spot_label_value = 'true' + ) + else: + return CreatePricingRequestV1( + type = 'CLUSTER', + name = 'My pricing', + unit_pricing = sysdig_client.models.unit_pricing_v1.Unit Pricing V1( + cpu = 0.031611, + ram = 0.004237, + storage = 0.00005479452, + spot_cpu = 1.337, + spot_ram = 1.337, ), + ) + """ + + def testCreatePricingRequestV1(self): + """Test CreatePricingRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_prometheus_alert_manager_notification_channel_request_v1.py b/test/test_create_prometheus_alert_manager_notification_channel_request_v1.py new file mode 100644 index 00000000..5958a56c --- /dev/null +++ b/test/test_create_prometheus_alert_manager_notification_channel_request_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_prometheus_alert_manager_notification_channel_request_v1 import ( + CreatePrometheusAlertManagerNotificationChannelRequestV1, +) + + +class TestCreatePrometheusAlertManagerNotificationChannelRequestV1(unittest.TestCase): + """CreatePrometheusAlertManagerNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreatePrometheusAlertManagerNotificationChannelRequestV1: + """Test CreatePrometheusAlertManagerNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreatePrometheusAlertManagerNotificationChannelRequestV1` + """ + model = CreatePrometheusAlertManagerNotificationChannelRequestV1() + if include_optional: + return CreatePrometheusAlertManagerNotificationChannelRequestV1( + options = None + ) + else: + return CreatePrometheusAlertManagerNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreatePrometheusAlertManagerNotificationChannelRequestV1(self): + """Test CreatePrometheusAlertManagerNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_qradar_integration_request.py b/test/test_create_qradar_integration_request.py new file mode 100644 index 00000000..dec0c842 --- /dev/null +++ b/test/test_create_qradar_integration_request.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_qradar_integration_request import CreateQradarIntegrationRequest + + +class TestCreateQradarIntegrationRequest(unittest.TestCase): + """CreateQradarIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateQradarIntegrationRequest: + """Test CreateQradarIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateQradarIntegrationRequest` + """ + model = CreateQradarIntegrationRequest() + if include_optional: + return CreateQradarIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = sysdig_client.models.ibm_q_radar.IBM QRadar( + address = 'qradar.mydomain.com', + port = 514, + is_insecure = False, + is_tls = True, ) + ) + else: + return CreateQradarIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = sysdig_client.models.ibm_q_radar.IBM QRadar( + address = 'qradar.mydomain.com', + port = 514, + is_insecure = False, + is_tls = True, ), + ) + """ + + def testCreateQradarIntegrationRequest(self): + """Test CreateQradarIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_risk_accepted_request.py b/test/test_create_risk_accepted_request.py new file mode 100644 index 00000000..531b8d9d --- /dev/null +++ b/test/test_create_risk_accepted_request.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_risk_accepted_request import CreateRiskAcceptedRequest + + +class TestCreateRiskAcceptedRequest(unittest.TestCase): + """CreateRiskAcceptedRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateRiskAcceptedRequest: + """Test CreateRiskAcceptedRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateRiskAcceptedRequest` + """ + model = CreateRiskAcceptedRequest() + if include_optional: + return CreateRiskAcceptedRequest( + entity_value = 'CVE-1234-56789', + expiration_date = 'Mon Feb 26 18:00:00 CST 2024', + reason = 'RiskTransferred', + description = 'vulnerability cannot be removed manually', + stages = [runtime, pipeline, registry], + entity_type = 'imageName', + context = None + ) + else: + return CreateRiskAcceptedRequest( + entity_value = 'CVE-1234-56789', + reason = 'RiskTransferred', + description = 'vulnerability cannot be removed manually', + entity_type = 'imageName', + context = None, + ) + """ + + def testCreateRiskAcceptedRequest(self): + """Test CreateRiskAcceptedRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_risk_accepted_request_all_of_context.py b/test/test_create_risk_accepted_request_all_of_context.py new file mode 100644 index 00000000..5e8f0634 --- /dev/null +++ b/test/test_create_risk_accepted_request_all_of_context.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_risk_accepted_request_all_of_context import CreateRiskAcceptedRequestAllOfContext + + +class TestCreateRiskAcceptedRequestAllOfContext(unittest.TestCase): + """CreateRiskAcceptedRequestAllOfContext unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateRiskAcceptedRequestAllOfContext: + """Test CreateRiskAcceptedRequestAllOfContext + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateRiskAcceptedRequestAllOfContext` + """ + model = CreateRiskAcceptedRequestAllOfContext() + if include_optional: + return CreateRiskAcceptedRequestAllOfContext( + ) + else: + return CreateRiskAcceptedRequestAllOfContext( + ) + """ + + def testCreateRiskAcceptedRequestAllOfContext(self): + """Test CreateRiskAcceptedRequestAllOfContext""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_service_account_request_v1.py b/test/test_create_service_account_request_v1.py new file mode 100644 index 00000000..4664fcee --- /dev/null +++ b/test/test_create_service_account_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_service_account_request_v1 import CreateServiceAccountRequestV1 + + +class TestCreateServiceAccountRequestV1(unittest.TestCase): + """CreateServiceAccountRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateServiceAccountRequestV1: + """Test CreateServiceAccountRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateServiceAccountRequestV1` + """ + model = CreateServiceAccountRequestV1() + if include_optional: + return CreateServiceAccountRequestV1( + name = 'CI/CD service api key', + expiration_date = 1630326638135 + ) + else: + return CreateServiceAccountRequestV1( + ) + """ + + def testCreateServiceAccountRequestV1(self): + """Test CreateServiceAccountRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_service_accounts_notification_settings_request_v1.py b/test/test_create_service_accounts_notification_settings_request_v1.py new file mode 100644 index 00000000..85b66313 --- /dev/null +++ b/test/test_create_service_accounts_notification_settings_request_v1.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_service_accounts_notification_settings_request_v1 import ( + CreateServiceAccountsNotificationSettingsRequestV1, +) + + +class TestCreateServiceAccountsNotificationSettingsRequestV1(unittest.TestCase): + """CreateServiceAccountsNotificationSettingsRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateServiceAccountsNotificationSettingsRequestV1: + """Test CreateServiceAccountsNotificationSettingsRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateServiceAccountsNotificationSettingsRequestV1` + """ + model = CreateServiceAccountsNotificationSettingsRequestV1() + if include_optional: + return CreateServiceAccountsNotificationSettingsRequestV1( + is_enabled = True, + notification_channel_ids = [ + null + ], + days_before_expiry = [ + 3 + ] + ) + else: + return CreateServiceAccountsNotificationSettingsRequestV1( + is_enabled = True, + notification_channel_ids = [ + null + ], + ) + """ + + def testCreateServiceAccountsNotificationSettingsRequestV1(self): + """Test CreateServiceAccountsNotificationSettingsRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_slack_notification_channel_request_v1.py b/test/test_create_slack_notification_channel_request_v1.py new file mode 100644 index 00000000..53bbb8b9 --- /dev/null +++ b/test/test_create_slack_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_slack_notification_channel_request_v1 import CreateSlackNotificationChannelRequestV1 + + +class TestCreateSlackNotificationChannelRequestV1(unittest.TestCase): + """CreateSlackNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateSlackNotificationChannelRequestV1: + """Test CreateSlackNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateSlackNotificationChannelRequestV1` + """ + model = CreateSlackNotificationChannelRequestV1() + if include_optional: + return CreateSlackNotificationChannelRequestV1( + options = None + ) + else: + return CreateSlackNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateSlackNotificationChannelRequestV1(self): + """Test CreateSlackNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_sns_notification_channel_request_v1.py b/test/test_create_sns_notification_channel_request_v1.py new file mode 100644 index 00000000..b2770e65 --- /dev/null +++ b/test/test_create_sns_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_sns_notification_channel_request_v1 import CreateSnsNotificationChannelRequestV1 + + +class TestCreateSnsNotificationChannelRequestV1(unittest.TestCase): + """CreateSnsNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateSnsNotificationChannelRequestV1: + """Test CreateSnsNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateSnsNotificationChannelRequestV1` + """ + model = CreateSnsNotificationChannelRequestV1() + if include_optional: + return CreateSnsNotificationChannelRequestV1( + options = None + ) + else: + return CreateSnsNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateSnsNotificationChannelRequestV1(self): + """Test CreateSnsNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_splunk_integration_request.py b/test/test_create_splunk_integration_request.py new file mode 100644 index 00000000..24654eb8 --- /dev/null +++ b/test/test_create_splunk_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_splunk_integration_request import CreateSplunkIntegrationRequest + + +class TestCreateSplunkIntegrationRequest(unittest.TestCase): + """CreateSplunkIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateSplunkIntegrationRequest: + """Test CreateSplunkIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateSplunkIntegrationRequest` + """ + model = CreateSplunkIntegrationRequest() + if include_optional: + return CreateSplunkIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateSplunkIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateSplunkIntegrationRequest(self): + """Test CreateSplunkIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_sso_settings_request_v1.py b/test/test_create_sso_settings_request_v1.py new file mode 100644 index 00000000..4fa8d385 --- /dev/null +++ b/test/test_create_sso_settings_request_v1.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_sso_settings_request_v1 import CreateSsoSettingsRequestV1 + + +class TestCreateSsoSettingsRequestV1(unittest.TestCase): + """CreateSsoSettingsRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateSsoSettingsRequestV1: + """Test CreateSsoSettingsRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateSsoSettingsRequestV1` + """ + model = CreateSsoSettingsRequestV1() + if include_optional: + return CreateSsoSettingsRequestV1( + product = 'secure', + is_active = True, + create_user_on_login = True, + is_password_login_enabled = True, + is_single_logout_enabled = True, + is_group_mapping_enabled = True, + group_mapping_attribute_name = 'groups', + config = sysdig_client.models.sso_settings_create_request_base_v1.SSO Settings Create Request Base V1( + type = 'SAML', ) + ) + else: + return CreateSsoSettingsRequestV1( + product = 'secure', + config = sysdig_client.models.sso_settings_create_request_base_v1.SSO Settings Create Request Base V1( + type = 'SAML', ), + ) + """ + + def testCreateSsoSettingsRequestV1(self): + """Test CreateSsoSettingsRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_syslog_integration_request.py b/test/test_create_syslog_integration_request.py new file mode 100644 index 00000000..5decd055 --- /dev/null +++ b/test/test_create_syslog_integration_request.py @@ -0,0 +1,74 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_syslog_integration_request import CreateSyslogIntegrationRequest + + +class TestCreateSyslogIntegrationRequest(unittest.TestCase): + """CreateSyslogIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateSyslogIntegrationRequest: + """Test CreateSyslogIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateSyslogIntegrationRequest` + """ + model = CreateSyslogIntegrationRequest() + if include_optional: + return CreateSyslogIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = sysdig_client.models.syslog.Syslog( + address = 'syslog.mydomain.com', + port = 514, + message_format = 'RFC_5424', + type = 'tcp', + is_insecure = False, + formatter = 'JSON', + certificate_id = 1, ) + ) + else: + return CreateSyslogIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = sysdig_client.models.syslog.Syslog( + address = 'syslog.mydomain.com', + port = 514, + message_format = 'RFC_5424', + type = 'tcp', + is_insecure = False, + formatter = 'JSON', + certificate_id = 1, ), + ) + """ + + def testCreateSyslogIntegrationRequest(self): + """Test CreateSyslogIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_team_email_notification_channel_request_v1.py b/test/test_create_team_email_notification_channel_request_v1.py new file mode 100644 index 00000000..a2fd76e8 --- /dev/null +++ b/test/test_create_team_email_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_team_email_notification_channel_request_v1 import CreateTeamEmailNotificationChannelRequestV1 + + +class TestCreateTeamEmailNotificationChannelRequestV1(unittest.TestCase): + """CreateTeamEmailNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateTeamEmailNotificationChannelRequestV1: + """Test CreateTeamEmailNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateTeamEmailNotificationChannelRequestV1` + """ + model = CreateTeamEmailNotificationChannelRequestV1() + if include_optional: + return CreateTeamEmailNotificationChannelRequestV1( + options = None + ) + else: + return CreateTeamEmailNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateTeamEmailNotificationChannelRequestV1(self): + """Test CreateTeamEmailNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_team_request_v1.py b/test/test_create_team_request_v1.py new file mode 100644 index 00000000..1a2e796e --- /dev/null +++ b/test/test_create_team_request_v1.py @@ -0,0 +1,81 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_team_request_v1 import CreateTeamRequestV1 + + +class TestCreateTeamRequestV1(unittest.TestCase): + """CreateTeamRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateTeamRequestV1: + """Test CreateTeamRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateTeamRequestV1` + """ + model = CreateTeamRequestV1() + if include_optional: + return CreateTeamRequestV1( + name = 'Team name', + description = 'Longer team description', + is_default_team = False, + standard_team_role = 'ROLE_TEAM_READ', + custom_team_role_id = 1, + product = 'secure', + ui_settings = sysdig_client.models.ui_settings.UiSettings( + entry_point = sysdig_client.models.entry_point.Entry Point( + module = 'Alerts', + selection = '2231245', ), + theme = '#112233', ), + is_all_zones = False, + zone_ids = [ + 1 + ], + scopes = [ + sysdig_client.models.scope.Scope( + type = 'PROMETHEUS_REMOTE_WRITE', + expression = 'kubernetes.cluster.name in ("test-env")', ) + ], + additional_team_permissions = sysdig_client.models.additional_team_permissions.Additional Team Permissions( + has_sysdig_captures = False, + has_infrastructure_events = False, + has_aws_data = False, + has_rapid_response = False, + has_agent_cli = False, + has_beacon_metrics = False, ) + ) + else: + return CreateTeamRequestV1( + name = 'Team name', + product = 'secure', + ) + """ + + def testCreateTeamRequestV1(self): + """Test CreateTeamRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_team_service_account_request_v1.py b/test/test_create_team_service_account_request_v1.py new file mode 100644 index 00000000..2fbe1fb5 --- /dev/null +++ b/test/test_create_team_service_account_request_v1.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_team_service_account_request_v1 import CreateTeamServiceAccountRequestV1 + + +class TestCreateTeamServiceAccountRequestV1(unittest.TestCase): + """CreateTeamServiceAccountRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateTeamServiceAccountRequestV1: + """Test CreateTeamServiceAccountRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateTeamServiceAccountRequestV1` + """ + model = CreateTeamServiceAccountRequestV1() + if include_optional: + return CreateTeamServiceAccountRequestV1( + name = 'CI/CD service api key', + expiration_date = 1630326638135, + team_role = 'CICD_SCANNING' + ) + else: + return CreateTeamServiceAccountRequestV1( + name = 'CI/CD service api key', + team_role = 'CICD_SCANNING', + ) + """ + + def testCreateTeamServiceAccountRequestV1(self): + """Test CreateTeamServiceAccountRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_user_request_v1.py b/test/test_create_user_request_v1.py new file mode 100644 index 00000000..49e6cbca --- /dev/null +++ b/test/test_create_user_request_v1.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_user_request_v1 import CreateUserRequestV1 + + +class TestCreateUserRequestV1(unittest.TestCase): + """CreateUserRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateUserRequestV1: + """Test CreateUserRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateUserRequestV1` + """ + model = CreateUserRequestV1() + if include_optional: + return CreateUserRequestV1( + email = 'john.doe@nomail.cc', + first_name = 'John', + last_name = 'Doe', + is_admin = False, + products = ["secure","monitor"] + ) + else: + return CreateUserRequestV1( + email = 'john.doe@nomail.cc', + ) + """ + + def testCreateUserRequestV1(self): + """Test CreateUserRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_victor_ops_notification_channel_request_v1.py b/test/test_create_victor_ops_notification_channel_request_v1.py new file mode 100644 index 00000000..66a3fbff --- /dev/null +++ b/test/test_create_victor_ops_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_victor_ops_notification_channel_request_v1 import CreateVictorOpsNotificationChannelRequestV1 + + +class TestCreateVictorOpsNotificationChannelRequestV1(unittest.TestCase): + """CreateVictorOpsNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateVictorOpsNotificationChannelRequestV1: + """Test CreateVictorOpsNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateVictorOpsNotificationChannelRequestV1` + """ + model = CreateVictorOpsNotificationChannelRequestV1() + if include_optional: + return CreateVictorOpsNotificationChannelRequestV1( + options = None + ) + else: + return CreateVictorOpsNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateVictorOpsNotificationChannelRequestV1(self): + """Test CreateVictorOpsNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_webhook_integration_request.py b/test/test_create_webhook_integration_request.py new file mode 100644 index 00000000..4eee28fb --- /dev/null +++ b/test/test_create_webhook_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_webhook_integration_request import CreateWebhookIntegrationRequest + + +class TestCreateWebhookIntegrationRequest(unittest.TestCase): + """CreateWebhookIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateWebhookIntegrationRequest: + """Test CreateWebhookIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateWebhookIntegrationRequest` + """ + model = CreateWebhookIntegrationRequest() + if include_optional: + return CreateWebhookIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return CreateWebhookIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testCreateWebhookIntegrationRequest(self): + """Test CreateWebhookIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_webhook_integration_request_all_of_connection_info.py b/test/test_create_webhook_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..cb4e8d80 --- /dev/null +++ b/test/test_create_webhook_integration_request_all_of_connection_info.py @@ -0,0 +1,69 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_webhook_integration_request_all_of_connection_info import ( + CreateWebhookIntegrationRequestAllOfConnectionInfo, +) + + +class TestCreateWebhookIntegrationRequestAllOfConnectionInfo(unittest.TestCase): + """CreateWebhookIntegrationRequestAllOfConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateWebhookIntegrationRequestAllOfConnectionInfo: + """Test CreateWebhookIntegrationRequestAllOfConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateWebhookIntegrationRequestAllOfConnectionInfo` + """ + model = CreateWebhookIntegrationRequestAllOfConnectionInfo() + if include_optional: + return CreateWebhookIntegrationRequestAllOfConnectionInfo( + endpoint = 'https://endpoint.mydomain.com', + is_insecure = False, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + output = 'json', + timestamp_format = 'nanoseconds', + auth = 'BASIC_AUTH', + certificate_id = 1, + secret = 'eiMaimiYohrahbaeS6iaNgo8iu' + ) + else: + return CreateWebhookIntegrationRequestAllOfConnectionInfo( + endpoint = 'https://endpoint.mydomain.com', + auth = 'BASIC_AUTH', + secret = 'eiMaimiYohrahbaeS6iaNgo8iu', + ) + """ + + def testCreateWebhookIntegrationRequestAllOfConnectionInfo(self): + """Test CreateWebhookIntegrationRequestAllOfConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_webhook_notification_channel_request_v1.py b/test/test_create_webhook_notification_channel_request_v1.py new file mode 100644 index 00000000..ebdec0da --- /dev/null +++ b/test/test_create_webhook_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_webhook_notification_channel_request_v1 import CreateWebhookNotificationChannelRequestV1 + + +class TestCreateWebhookNotificationChannelRequestV1(unittest.TestCase): + """CreateWebhookNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateWebhookNotificationChannelRequestV1: + """Test CreateWebhookNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateWebhookNotificationChannelRequestV1` + """ + model = CreateWebhookNotificationChannelRequestV1() + if include_optional: + return CreateWebhookNotificationChannelRequestV1( + options = None + ) + else: + return CreateWebhookNotificationChannelRequestV1( + options = None, + ) + """ + + def testCreateWebhookNotificationChannelRequestV1(self): + """Test CreateWebhookNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_zone_request_v1.py b/test/test_create_zone_request_v1.py new file mode 100644 index 00000000..599e9765 --- /dev/null +++ b/test/test_create_zone_request_v1.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_zone_request_v1 import CreateZoneRequestV1 + + +class TestCreateZoneRequestV1(unittest.TestCase): + """CreateZoneRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateZoneRequestV1: + """Test CreateZoneRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateZoneRequestV1` + """ + model = CreateZoneRequestV1() + if include_optional: + return CreateZoneRequestV1( + name = 'Production', + description = 'Production environment', + scopes = [ + sysdig_client.models.zone_scope.Zone Scope( + target_type = 'aws', + rules = 'clusterId in ( "test" )', ) + ] + ) + else: + return CreateZoneRequestV1( + name = 'Production', + scopes = [ + sysdig_client.models.zone_scope.Zone Scope( + target_type = 'aws', + rules = 'clusterId in ( "test" )', ) + ], + ) + """ + + def testCreateZoneRequestV1(self): + """Test CreateZoneRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_create_zone_scope_request_v1.py b/test/test_create_zone_scope_request_v1.py new file mode 100644 index 00000000..410ffc58 --- /dev/null +++ b/test/test_create_zone_scope_request_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.create_zone_scope_request_v1 import CreateZoneScopeRequestV1 + + +class TestCreateZoneScopeRequestV1(unittest.TestCase): + """CreateZoneScopeRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CreateZoneScopeRequestV1: + """Test CreateZoneScopeRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CreateZoneScopeRequestV1` + """ + model = CreateZoneScopeRequestV1() + if include_optional: + return CreateZoneScopeRequestV1( + target_type = 'aws', + rules = 'clusterId in ( "test" )' + ) + else: + return CreateZoneScopeRequestV1( + target_type = 'aws', + ) + """ + + def testCreateZoneScopeRequestV1(self): + """Test CreateZoneScopeRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_custom_job_v1.py b/test/test_custom_job_v1.py new file mode 100644 index 00000000..98524128 --- /dev/null +++ b/test/test_custom_job_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.custom_job_v1 import CustomJobV1 + + +class TestCustomJobV1(unittest.TestCase): + """CustomJobV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CustomJobV1: + """Test CustomJobV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CustomJobV1` + """ + model = CustomJobV1() + if include_optional: + return CustomJobV1( + name = 'my-custom-job', + enabled = False, + enablement_by_cluster = {"my-cluster":true} + ) + else: + return CustomJobV1( + ) + """ + + def testCustomJobV1(self): + """Test CustomJobV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_custom_jobs_enablement_v1.py b/test/test_custom_jobs_enablement_v1.py new file mode 100644 index 00000000..76bc031e --- /dev/null +++ b/test/test_custom_jobs_enablement_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.custom_jobs_enablement_v1 import CustomJobsEnablementV1 + + +class TestCustomJobsEnablementV1(unittest.TestCase): + """CustomJobsEnablementV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CustomJobsEnablementV1: + """Test CustomJobsEnablementV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CustomJobsEnablementV1` + """ + model = CustomJobsEnablementV1() + if include_optional: + return CustomJobsEnablementV1( + enabled = False, + enablement_by_cluster = {"my-cluster":true} + ) + else: + return CustomJobsEnablementV1( + enabled = False, + ) + """ + + def testCustomJobsEnablementV1(self): + """Test CustomJobsEnablementV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_custom_monitor_event.py b/test/test_custom_monitor_event.py new file mode 100644 index 00000000..70582ae0 --- /dev/null +++ b/test/test_custom_monitor_event.py @@ -0,0 +1,73 @@ +# coding: utf-8 + +""" +Sysdig Platform Zones Public API + +Sysdig Platform Zones Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.custom_monitor_event import CustomMonitorEvent + + +class TestCustomMonitorEvent(unittest.TestCase): + """CustomMonitorEvent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CustomMonitorEvent: + """Test CustomMonitorEvent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CustomMonitorEvent` + """ + model = CustomMonitorEvent() + if include_optional: + return CustomMonitorEvent( + id = '15cbf54e34df95404caad1c988cf7c42', + created_on = '2024-11-21T20:29:01.415528Z', + occurred_at = '2024-11-21T20:29:01.415528Z', + name = 'Launch Privileged Container', + description = 'Back-off restarting failed container +', + severity = 4, + scope_labels = [ + sysdig_client.models.scope_label_v1.Scope Label v1( + key = 'kube_cluster_name', + value = [ + 'myCluster' + ], ) + ], + scope = 'kube_namespace_name = 'test'', + source = 'kubernetes' + ) + else: + return CustomMonitorEvent( + id = '15cbf54e34df95404caad1c988cf7c42', + created_on = '2024-11-21T20:29:01.415528Z', + occurred_at = '2024-11-21T20:29:01.415528Z', + name = 'Launch Privileged Container', + severity = 4, + ) + """ + + def testCustomMonitorEvent(self): + """Test CustomMonitorEvent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_custom_webhook_notification_channel_options_v1.py b/test/test_custom_webhook_notification_channel_options_v1.py new file mode 100644 index 00000000..205792c5 --- /dev/null +++ b/test/test_custom_webhook_notification_channel_options_v1.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.custom_webhook_notification_channel_options_v1 import CustomWebhookNotificationChannelOptionsV1 + + +class TestCustomWebhookNotificationChannelOptionsV1(unittest.TestCase): + """CustomWebhookNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CustomWebhookNotificationChannelOptionsV1: + """Test CustomWebhookNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CustomWebhookNotificationChannelOptionsV1` + """ + model = CustomWebhookNotificationChannelOptionsV1() + if include_optional: + return CustomWebhookNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + url = 'http://some-website/some-path', + template = '{"test" : "notification"}', + http_method = 'POST', + is_allows_insecure_connections = False, + additional_headers = { + 'key' : 'CUSTOM_HEADER' + } + ) + else: + return CustomWebhookNotificationChannelOptionsV1( + url = 'http://some-website/some-path', + template = '{"test" : "notification"}', + ) + """ + + def testCustomWebhookNotificationChannelOptionsV1(self): + """Test CustomWebhookNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_custom_webhook_notification_channel_response_v1.py b/test/test_custom_webhook_notification_channel_response_v1.py new file mode 100644 index 00000000..2dbab098 --- /dev/null +++ b/test/test_custom_webhook_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.custom_webhook_notification_channel_response_v1 import CustomWebhookNotificationChannelResponseV1 + + +class TestCustomWebhookNotificationChannelResponseV1(unittest.TestCase): + """CustomWebhookNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CustomWebhookNotificationChannelResponseV1: + """Test CustomWebhookNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CustomWebhookNotificationChannelResponseV1` + """ + model = CustomWebhookNotificationChannelResponseV1() + if include_optional: + return CustomWebhookNotificationChannelResponseV1( + options = None + ) + else: + return CustomWebhookNotificationChannelResponseV1( + options = None, + ) + """ + + def testCustomWebhookNotificationChannelResponseV1(self): + """Test CustomWebhookNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_cvss_score.py b/test/test_cvss_score.py new file mode 100644 index 00000000..8d5854f7 --- /dev/null +++ b/test/test_cvss_score.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.cvss_score import CvssScore + + +class TestCvssScore(unittest.TestCase): + """CvssScore unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> CvssScore: + """Test CvssScore + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `CvssScore` + """ + model = CvssScore() + if include_optional: + return CvssScore( + version = '3.0.0', + score = 1, + vector = 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H' + ) + else: + return CvssScore( + version = '3.0.0', + score = 1, + ) + """ + + def testCvssScore(self): + """Test CvssScore""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_date_range.py b/test/test_date_range.py new file mode 100644 index 00000000..cbbfa40e --- /dev/null +++ b/test/test_date_range.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.date_range import DateRange + + +class TestDateRange(unittest.TestCase): + """DateRange unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DateRange: + """Test DateRange + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DateRange` + """ + model = DateRange() + if include_optional: + return DateRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025' + ) + else: + return DateRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025', + ) + """ + + def testDateRange(self): + """Test DateRange""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_deny_cve.py b/test/test_deny_cve.py new file mode 100644 index 00000000..3f9d86ab --- /dev/null +++ b/test/test_deny_cve.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.deny_cve import DenyCve + + +class TestDenyCve(unittest.TestCase): + """DenyCve unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DenyCve: + """Test DenyCve + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DenyCve` + """ + model = DenyCve() + if include_optional: + return DenyCve( + type = 'denyCVE', + extra = sysdig_client.models.deny_cve_extra.DenyCve_extra( + vuln_ids = [ + 'CVE-2019-1234' + ], ) + ) + else: + return DenyCve( + type = 'denyCVE', + extra = sysdig_client.models.deny_cve_extra.DenyCve_extra( + vuln_ids = [ + 'CVE-2019-1234' + ], ), + ) + """ + + def testDenyCve(self): + """Test DenyCve""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_deny_cve_extra.py b/test/test_deny_cve_extra.py new file mode 100644 index 00000000..fb4e3dac --- /dev/null +++ b/test/test_deny_cve_extra.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.deny_cve_extra import DenyCveExtra + + +class TestDenyCveExtra(unittest.TestCase): + """DenyCveExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DenyCveExtra: + """Test DenyCveExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DenyCveExtra` + """ + model = DenyCveExtra() + if include_optional: + return DenyCveExtra( + vuln_ids = [ + 'CVE-2019-1234' + ] + ) + else: + return DenyCveExtra( + ) + """ + + def testDenyCveExtra(self): + """Test DenyCveExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_deny_pkg.py b/test/test_deny_pkg.py new file mode 100644 index 00000000..524a7011 --- /dev/null +++ b/test/test_deny_pkg.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.deny_pkg import DenyPkg + + +class TestDenyPkg(unittest.TestCase): + """DenyPkg unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DenyPkg: + """Test DenyPkg + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DenyPkg` + """ + model = DenyPkg() + if include_optional: + return DenyPkg( + type = 'denyPkg', + extra = sysdig_client.models.deny_pkg_extra.DenyPkg_extra( + packages = [ + sysdig_client.models.deny_pkg_extra_packages_inner.DenyPkg_extra_packages_inner( + name = 'curl', + version = '1.0.0', ) + ], ) + ) + else: + return DenyPkg( + type = 'denyPkg', + extra = sysdig_client.models.deny_pkg_extra.DenyPkg_extra( + packages = [ + sysdig_client.models.deny_pkg_extra_packages_inner.DenyPkg_extra_packages_inner( + name = 'curl', + version = '1.0.0', ) + ], ), + ) + """ + + def testDenyPkg(self): + """Test DenyPkg""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_deny_pkg_extra.py b/test/test_deny_pkg_extra.py new file mode 100644 index 00000000..9a98260f --- /dev/null +++ b/test/test_deny_pkg_extra.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.deny_pkg_extra import DenyPkgExtra + + +class TestDenyPkgExtra(unittest.TestCase): + """DenyPkgExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DenyPkgExtra: + """Test DenyPkgExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DenyPkgExtra` + """ + model = DenyPkgExtra() + if include_optional: + return DenyPkgExtra( + packages = [ + sysdig_client.models.deny_pkg_extra_packages_inner.DenyPkg_extra_packages_inner( + name = 'curl', + version = '1.0.0', ) + ] + ) + else: + return DenyPkgExtra( + packages = [ + sysdig_client.models.deny_pkg_extra_packages_inner.DenyPkg_extra_packages_inner( + name = 'curl', + version = '1.0.0', ) + ], + ) + """ + + def testDenyPkgExtra(self): + """Test DenyPkgExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_deny_pkg_extra_packages_inner.py b/test/test_deny_pkg_extra_packages_inner.py new file mode 100644 index 00000000..b9f93c5f --- /dev/null +++ b/test/test_deny_pkg_extra_packages_inner.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.deny_pkg_extra_packages_inner import DenyPkgExtraPackagesInner + + +class TestDenyPkgExtraPackagesInner(unittest.TestCase): + """DenyPkgExtraPackagesInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DenyPkgExtraPackagesInner: + """Test DenyPkgExtraPackagesInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DenyPkgExtraPackagesInner` + """ + model = DenyPkgExtraPackagesInner() + if include_optional: + return DenyPkgExtraPackagesInner( + name = 'curl', + version = '1.0.0' + ) + else: + return DenyPkgExtraPackagesInner( + name = 'curl', + ) + """ + + def testDenyPkgExtraPackagesInner(self): + """Test DenyPkgExtraPackagesInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_dependency.py b/test/test_dependency.py new file mode 100644 index 00000000..7daf8347 --- /dev/null +++ b/test/test_dependency.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.dependency import Dependency + + +class TestDependency(unittest.TestCase): + """Dependency unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Dependency: + """Test Dependency + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Dependency` + """ + model = Dependency() + if include_optional: + return Dependency( + ref = '5581fa94-9052-4e55-8b28-750f16e183be', + depends_on = [ + '5581fa94-9052-4e55-8b28-750f16e183be' + ] + ) + else: + return Dependency( + ref = '5581fa94-9052-4e55-8b28-750f16e183be', + ) + """ + + def testDependency(self): + """Test Dependency""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_disable_jobs_and_metrics_v1.py b/test/test_disable_jobs_and_metrics_v1.py new file mode 100644 index 00000000..6bbb5117 --- /dev/null +++ b/test/test_disable_jobs_and_metrics_v1.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.disable_jobs_and_metrics_v1 import DisableJobsAndMetricsV1 + + +class TestDisableJobsAndMetricsV1(unittest.TestCase): + """DisableJobsAndMetricsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DisableJobsAndMetricsV1: + """Test DisableJobsAndMetricsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DisableJobsAndMetricsV1` + """ + model = DisableJobsAndMetricsV1() + if include_optional: + return DisableJobsAndMetricsV1( + job_name = 'k8s-pods', + metrics = [ + sysdig_client.models.disable_metric_v1.DisableMetricV1( + metric_name = 'apache_accesses_total', + is_disabled = True, ) + ] + ) + else: + return DisableJobsAndMetricsV1( + ) + """ + + def testDisableJobsAndMetricsV1(self): + """Test DisableJobsAndMetricsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_disable_metric_v1.py b/test/test_disable_metric_v1.py new file mode 100644 index 00000000..d9fa9bde --- /dev/null +++ b/test/test_disable_metric_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.disable_metric_v1 import DisableMetricV1 + + +class TestDisableMetricV1(unittest.TestCase): + """DisableMetricV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DisableMetricV1: + """Test DisableMetricV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DisableMetricV1` + """ + model = DisableMetricV1() + if include_optional: + return DisableMetricV1( + metric_name = 'apache_accesses_total', + is_disabled = True + ) + else: + return DisableMetricV1( + ) + """ + + def testDisableMetricV1(self): + """Test DisableMetricV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_drift_prevented_action.py b/test/test_drift_prevented_action.py new file mode 100644 index 00000000..1f0ddb05 --- /dev/null +++ b/test/test_drift_prevented_action.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.drift_prevented_action import DriftPreventedAction + + +class TestDriftPreventedAction(unittest.TestCase): + """DriftPreventedAction unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DriftPreventedAction: + """Test DriftPreventedAction + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DriftPreventedAction` + """ + model = DriftPreventedAction() + if include_optional: + return DriftPreventedAction( + type = 'capture', + is_successful = True, + err_msg = 'Prevention action failed on container 9566c6966932 due to a system error: ...' + ) + else: + return DriftPreventedAction( + type = 'capture', + ) + """ + + def testDriftPreventedAction(self): + """Test DriftPreventedAction""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_email_notification_channel_options_v1.py b/test/test_email_notification_channel_options_v1.py new file mode 100644 index 00000000..30c3c9a8 --- /dev/null +++ b/test/test_email_notification_channel_options_v1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.email_notification_channel_options_v1 import EmailNotificationChannelOptionsV1 + + +class TestEmailNotificationChannelOptionsV1(unittest.TestCase): + """EmailNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EmailNotificationChannelOptionsV1: + """Test EmailNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EmailNotificationChannelOptionsV1` + """ + model = EmailNotificationChannelOptionsV1() + if include_optional: + return EmailNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + email_recipients = [ + 'test@sysdig.com' + ] + ) + else: + return EmailNotificationChannelOptionsV1( + email_recipients = [ + 'test@sysdig.com' + ], + ) + """ + + def testEmailNotificationChannelOptionsV1(self): + """Test EmailNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_email_notification_channel_response_v1.py b/test/test_email_notification_channel_response_v1.py new file mode 100644 index 00000000..b09ddc7d --- /dev/null +++ b/test/test_email_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.email_notification_channel_response_v1 import EmailNotificationChannelResponseV1 + + +class TestEmailNotificationChannelResponseV1(unittest.TestCase): + """EmailNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EmailNotificationChannelResponseV1: + """Test EmailNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EmailNotificationChannelResponseV1` + """ + model = EmailNotificationChannelResponseV1() + if include_optional: + return EmailNotificationChannelResponseV1( + options = None + ) + else: + return EmailNotificationChannelResponseV1( + options = None, + ) + """ + + def testEmailNotificationChannelResponseV1(self): + """Test EmailNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_entity_definition.py b/test/test_entity_definition.py new file mode 100644 index 00000000..916c5ab4 --- /dev/null +++ b/test/test_entity_definition.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.entity_definition import EntityDefinition + + +class TestEntityDefinition(unittest.TestCase): + """EntityDefinition unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EntityDefinition: + """Test EntityDefinition + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EntityDefinition` + """ + model = EntityDefinition() + if include_optional: + return EntityDefinition( + type = 'Field', + alias = 'name', + definition = sysdig_client.models.entity_definition_definition.EntityDefinition_definition( + def_type = 'Field', + name = 'name', + type = 'String', + hidden = False, ) + ) + else: + return EntityDefinition( + type = 'Field', + definition = sysdig_client.models.entity_definition_definition.EntityDefinition_definition( + def_type = 'Field', + name = 'name', + type = 'String', + hidden = False, ), + ) + """ + + def testEntityDefinition(self): + """Test EntityDefinition""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_entity_definition_definition.py b/test/test_entity_definition_definition.py new file mode 100644 index 00000000..c4b98e46 --- /dev/null +++ b/test/test_entity_definition_definition.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.entity_definition_definition import EntityDefinitionDefinition + + +class TestEntityDefinitionDefinition(unittest.TestCase): + """EntityDefinitionDefinition unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EntityDefinitionDefinition: + """Test EntityDefinitionDefinition + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EntityDefinitionDefinition` + """ + model = EntityDefinitionDefinition() + if include_optional: + return EntityDefinitionDefinition( + def_type = 'Field', + name = 'name', + type = 'String', + hidden = False + ) + else: + return EntityDefinitionDefinition( + def_type = 'Field', + name = 'name', + type = 'String', + ) + """ + + def testEntityDefinitionDefinition(self): + """Test EntityDefinitionDefinition""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_entries_response.py b/test/test_entries_response.py new file mode 100644 index 00000000..47371a38 --- /dev/null +++ b/test/test_entries_response.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.entries_response import EntriesResponse + + +class TestEntriesResponse(unittest.TestCase): + """EntriesResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EntriesResponse: + """Test EntriesResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EntriesResponse` + """ + model = EntriesResponse() + if include_optional: + return EntriesResponse( + page = sysdig_client.models.page.Page( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn', ), + data = [ + null + ] + ) + else: + return EntriesResponse( + ) + """ + + def testEntriesResponse(self): + """Test EntriesResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_entries_response_data_inner.py b/test/test_entries_response_data_inner.py new file mode 100644 index 00000000..22054164 --- /dev/null +++ b/test/test_entries_response_data_inner.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.entries_response_data_inner import EntriesResponseDataInner + + +class TestEntriesResponseDataInner(unittest.TestCase): + """EntriesResponseDataInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EntriesResponseDataInner: + """Test EntriesResponseDataInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EntriesResponseDataInner` + """ + model = EntriesResponseDataInner() + if include_optional: + return EntriesResponseDataInner( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'command', + container_id = 'f8d4f71ab80b', + cmdline = 'pg_isready --host 10.32.0.8', + comm = 'pg_isready', + pcomm = 'sshd', + pid = 123, + ppid = 31132, + uid = 1234, + username = 'foo', + cwd = '/', + login_shell_id = 11640, + login_shell_distance = 5, + hostname = 'ip-127-0-0-1', + tty = 12345, + user_login_uid = 1234, + user_login_name = 'foo', + proc_exepath = '/usr/bin/pg_isready', + labels = { + 'key' : 'foo' + }, + dns_domains = [sysdig.com], + process_name = 'curl', + client_ipv4 = '127.0.0.1', + client_port = 31234, + server_ipv4 = '127.0.0.1', + server_port = 80, + direction = 'in', + l4protocol = 'tcp', + directory = '/home/sysdig/', + filename = 'malicious_file.txt', + permissions = 'rw', + resource = 'pods', + sub_resource = 'exec', + namespace = 'sysdigcloud', + name = 'sysdigcloud-redis-75675f5897-7ci7o', + source_addresses = [127.0.0.1, 192.168.0.1], + user = sysdig_client.models.user.User( + username = 'kubernetes-admin', + groups = ["system:masters","system:authenticated"], ), + user_agent = 'kubectl/v1.13.5 (linux/amd64) kubernetes/2166946', + args = {"command":"bash","container":"redis"} + ) + else: + return EntriesResponseDataInner( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'command', + container_id = 'f8d4f71ab80b', + cmdline = 'pg_isready --host 10.32.0.8', + comm = 'pg_isready', + pcomm = 'sshd', + pid = 123, + ppid = 31132, + uid = 1234, + cwd = '/', + login_shell_id = 11640, + login_shell_distance = 5, + hostname = 'ip-127-0-0-1', + tty = 12345, + user_login_uid = 1234, + user_login_name = 'foo', + proc_exepath = '/usr/bin/pg_isready', + dns_domains = [sysdig.com], + process_name = 'curl', + client_ipv4 = '127.0.0.1', + client_port = 31234, + server_ipv4 = '127.0.0.1', + server_port = 80, + direction = 'in', + l4protocol = 'tcp', + directory = '/home/sysdig/', + filename = 'malicious_file.txt', + permissions = 'rw', + resource = 'pods', + sub_resource = 'exec', + namespace = 'sysdigcloud', + name = 'sysdigcloud-redis-75675f5897-7ci7o', + source_addresses = [127.0.0.1, 192.168.0.1], + user = sysdig_client.models.user.User( + username = 'kubernetes-admin', + groups = ["system:masters","system:authenticated"], ), + user_agent = 'kubectl/v1.13.5 (linux/amd64) kubernetes/2166946', + args = {"command":"bash","container":"redis"}, + ) + """ + + def testEntriesResponseDataInner(self): + """Test EntriesResponseDataInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_entry.py b/test/test_entry.py new file mode 100644 index 00000000..99b5e9e6 --- /dev/null +++ b/test/test_entry.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.entry import Entry + + +class TestEntry(unittest.TestCase): + """Entry unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Entry: + """Test Entry + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Entry` + """ + model = Entry() + if include_optional: + return Entry( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000 + ) + else: + return Entry( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + ) + """ + + def testEntry(self): + """Test Entry""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_entry_point_module_v1.py b/test/test_entry_point_module_v1.py new file mode 100644 index 00000000..55698144 --- /dev/null +++ b/test/test_entry_point_module_v1.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.entry_point_module_v1 import EntryPointModuleV1 + + +class TestEntryPointModuleV1(unittest.TestCase): + """EntryPointModuleV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testEntryPointModuleV1(self): + """Test EntryPointModuleV1""" + # inst = EntryPointModuleV1() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_entry_point_v1.py b/test/test_entry_point_v1.py new file mode 100644 index 00000000..3b33dce6 --- /dev/null +++ b/test/test_entry_point_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.entry_point_v1 import EntryPointV1 + + +class TestEntryPointV1(unittest.TestCase): + """EntryPointV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EntryPointV1: + """Test EntryPointV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EntryPointV1` + """ + model = EntryPointV1() + if include_optional: + return EntryPointV1( + module = 'Alerts', + selection = '2231245' + ) + else: + return EntryPointV1( + ) + """ + + def testEntryPointV1(self): + """Test EntryPointV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_entry_response.py b/test/test_entry_response.py new file mode 100644 index 00000000..a2ef9518 --- /dev/null +++ b/test/test_entry_response.py @@ -0,0 +1,134 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.entry_response import EntryResponse + + +class TestEntryResponse(unittest.TestCase): + """EntryResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EntryResponse: + """Test EntryResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EntryResponse` + """ + model = EntryResponse() + if include_optional: + return EntryResponse( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'command', + container_id = 'f8d4f71ab80b', + cmdline = 'pg_isready --host 10.32.0.8', + comm = 'pg_isready', + pcomm = 'sshd', + pid = 123, + ppid = 31132, + uid = 1234, + username = 'foo', + cwd = '/', + login_shell_id = 11640, + login_shell_distance = 5, + hostname = 'ip-127-0-0-1', + tty = 12345, + user_login_uid = 1234, + user_login_name = 'foo', + proc_exepath = '/usr/bin/pg_isready', + labels = { + 'key' : 'foo' + }, + dns_domains = [sysdig.com], + process_name = 'curl', + client_ipv4 = '127.0.0.1', + client_port = 31234, + server_ipv4 = '127.0.0.1', + server_port = 80, + direction = 'in', + l4protocol = 'tcp', + directory = '/home/sysdig/', + filename = 'malicious_file.txt', + permissions = 'rw', + resource = 'pods', + sub_resource = 'exec', + namespace = 'sysdigcloud', + name = 'sysdigcloud-redis-75675f5897-7ci7o', + source_addresses = [127.0.0.1, 192.168.0.1], + user = sysdig_client.models.user.User( + username = 'kubernetes-admin', + groups = ["system:masters","system:authenticated"], ), + user_agent = 'kubectl/v1.13.5 (linux/amd64) kubernetes/2166946', + args = {"command":"bash","container":"redis"} + ) + else: + return EntryResponse( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'command', + container_id = 'f8d4f71ab80b', + cmdline = 'pg_isready --host 10.32.0.8', + comm = 'pg_isready', + pcomm = 'sshd', + pid = 123, + ppid = 31132, + uid = 1234, + cwd = '/', + login_shell_id = 11640, + login_shell_distance = 5, + hostname = 'ip-127-0-0-1', + tty = 12345, + user_login_uid = 1234, + user_login_name = 'foo', + proc_exepath = '/usr/bin/pg_isready', + dns_domains = [sysdig.com], + process_name = 'curl', + client_ipv4 = '127.0.0.1', + client_port = 31234, + server_ipv4 = '127.0.0.1', + server_port = 80, + direction = 'in', + l4protocol = 'tcp', + directory = '/home/sysdig/', + filename = 'malicious_file.txt', + permissions = 'rw', + resource = 'pods', + sub_resource = 'exec', + namespace = 'sysdigcloud', + name = 'sysdigcloud-redis-75675f5897-7ci7o', + source_addresses = [127.0.0.1, 192.168.0.1], + user = sysdig_client.models.user.User( + username = 'kubernetes-admin', + groups = ["system:masters","system:authenticated"], ), + user_agent = 'kubectl/v1.13.5 (linux/amd64) kubernetes/2166946', + args = {"command":"bash","container":"redis"}, + ) + """ + + def testEntryResponse(self): + """Test EntryResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_error.py b/test/test_error.py new file mode 100644 index 00000000..6e3e4118 --- /dev/null +++ b/test/test_error.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Secure Vulnerability Management Runtimeview Public API + +This API allows reading runtime vulnerability data. + +The version of the OpenAPI document: 1.0.3 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.error import Error + + +class TestError(unittest.TestCase): + """Error unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Error: + """Test Error + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Error` + """ + model = Error() + if include_optional: + return Error( + type = 'resource_not_found', + message = 'Error message', + details = [ + null + ] + ) + else: + return Error( + ) + """ + + def testError(self): + """Test Error""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_event.py b/test/test_event.py new file mode 100644 index 00000000..21a435a3 --- /dev/null +++ b/test/test_event.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.event import Event + + +class TestEvent(unittest.TestCase): + """Event unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Event: + """Test Event + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Event` + """ + model = Event() + if include_optional: + return Event( + id = '15cbf54e34df95404caad1c988cf7c42', + cursor = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + timestamp = 1617220000000000000, + originator = 'policy', + category = 'runtime', + source = 'k8s_audit', + source_details = sysdig_client.models.source_details.SourceDetails( + type = 'cloud', + sub_type = 'host', ), + raw_event_originator = 'admissionController', + raw_event_category = 'runtime', + engine = 'drift', + name = 'Launch Privileged Container', + description = 'Identify a container being created with privileged=true +', + severity = 4, + actions = [ + null + ], + content = sysdig_client.models.event_content.EventContent(), + labels = {"foo":"bar","baz":"qux"} + ) + else: + return Event( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1617220000000000000, + originator = 'policy', + category = 'runtime', + source = 'k8s_audit', + name = 'Launch Privileged Container', + description = 'Identify a container being created with privileged=true +', + severity = 4, + ) + """ + + def testEvent(self): + """Test Event""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_event_content.py b/test/test_event_content.py new file mode 100644 index 00000000..938325bc --- /dev/null +++ b/test/test_event_content.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.event_content import EventContent + + +class TestEventContent(unittest.TestCase): + """EventContent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EventContent: + """Test EventContent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EventContent` + """ + model = EventContent() + if include_optional: + return EventContent( + type = 'workloadRuntimeDetection', + namespace = 'hub', + cluster_name = 'prod5', + resource_name = 'sfdc-bulk-updates-12345678', + resource_kind = 'Job', + zones = [ + sysdig_client.models.zone.Zone( + zone_name = 'Zone example', + zone_id = 1234, ) + ], + scan_result = None, + integration_id = '2U98T7RVNpAfveU6t9U6JoKVuZb', + integration_type = 'cloudtrail', + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + rule_tags = [ + 'AWS_IAM' + ], + policy_id = 2, + policy_origin = 'Sysdig', + policy_notification_channel_ids = [ + 123 + ], + priority = 'error', + output = '', + fields = None, + rule_sub_type = 1, + run_book = 'https://www.mycompany.com/our-runbook-link', + origin = 'Sysdig', + command = 'bash', + exe = '/bin/bash', + detected_class_probability = 0.8, + stats = [ + sysdig_client.models.stats_inner.Stats_inner( + api = 'DescribeInternetGateways', + count = 1, ) + ], + sequence = [ + sysdig_client.models.sequence_inner.Sequence_inner( + event_id = '9aca10ca-481a-4ab7-b8fa-929c1ebf4c18', + event_name = 'CreateUser', + event_time = '2024-08-11T23:48:40Z', + ingestion_id = '41157131027', + region = 'us-east-1', + source = 'aws', + source_ip_address = '1.1.1.1', + sub_ingestion_id = 'us-east-1', ) + ] + ) + else: + return EventContent( + type = 'workloadRuntimeDetection', + scan_result = None, + integration_id = '2U98T7RVNpAfveU6t9U6JoKVuZb', + integration_type = 'cloudtrail', + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + rule_tags = [ + 'AWS_IAM' + ], + policy_id = 2, + policy_origin = 'Sysdig', + policy_notification_channel_ids = [ + 123 + ], + output = '', + fields = None, + rule_sub_type = 1, + command = 'bash', + exe = '/bin/bash', + detected_class_probability = 0.8, + ) + """ + + def testEventContent(self): + """Test EventContent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_event_content_type.py b/test/test_event_content_type.py new file mode 100644 index 00000000..8465353e --- /dev/null +++ b/test/test_event_content_type.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.event_content_type import EventContentType + + +class TestEventContentType(unittest.TestCase): + """EventContentType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testEventContentType(self): + """Test EventContentType""" + # inst = EventContentType() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_events_feed_page.py b/test/test_events_feed_page.py new file mode 100644 index 00000000..12d75801 --- /dev/null +++ b/test/test_events_feed_page.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.events_feed_page import EventsFeedPage + + +class TestEventsFeedPage(unittest.TestCase): + """EventsFeedPage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> EventsFeedPage: + """Test EventsFeedPage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `EventsFeedPage` + """ + model = EventsFeedPage() + if include_optional: + return EventsFeedPage( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn' + ) + else: + return EventsFeedPage( + total = 10, + ) + """ + + def testEventsFeedPage(self): + """Test EventsFeedPage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_events_forwarder_api.py b/test/test_events_forwarder_api.py new file mode 100644 index 00000000..d54345fe --- /dev/null +++ b/test/test_events_forwarder_api.py @@ -0,0 +1,80 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.events_forwarder_api import EventsForwarderApi + + +class TestEventsForwarderApi(unittest.TestCase): + """EventsForwarderApi unit test stubs""" + + def setUp(self) -> None: + self.api = EventsForwarderApi() + + def tearDown(self) -> None: + pass + + def test_create_efo_inegration_v1(self) -> None: + """Test case for create_efo_inegration_v1 + + Create Integration + """ + pass + + def test_delete_efo_integration_by_idv1(self) -> None: + """Test case for delete_efo_integration_by_idv1 + + Delete Integration + """ + pass + + def test_get_efo_integration_by_id_v1(self) -> None: + """Test case for get_efo_integration_by_id_v1 + + Get Integration + """ + pass + + def test_list_efo_channels_by_integration_v1(self) -> None: + """Test case for list_efo_channels_by_integration_v1 + + List Channels + """ + pass + + def test_list_efo_integrations_types_v1(self) -> None: + """Test case for list_efo_integrations_types_v1 + + List Integrations types + """ + pass + + def test_list_efo_integrations_v1(self) -> None: + """Test case for list_efo_integrations_v1 + + List Integrations + """ + pass + + def test_update_efo_integration_by_id_v1(self) -> None: + """Test case for update_efo_integration_by_id_v1 + + Update Integration + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_exploit.py b/test/test_exploit.py new file mode 100644 index 00000000..ad36a9bb --- /dev/null +++ b/test/test_exploit.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.exploit import Exploit + + +class TestExploit(unittest.TestCase): + """Exploit unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Exploit: + """Test Exploit + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Exploit` + """ + model = Exploit() + if include_optional: + return Exploit( + publication_date = '2024-01-22T08:51:46Z', + links = [ + 'https://sysdig-example.com/exploits/12345' + ] + ) + else: + return Exploit( + links = [ + 'https://sysdig-example.com/exploits/12345' + ], + ) + """ + + def testExploit(self): + """Test Exploit""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_failure.py b/test/test_failure.py new file mode 100644 index 00000000..535bcb26 --- /dev/null +++ b/test/test_failure.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.failure import Failure + + +class TestFailure(unittest.TestCase): + """Failure unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Failure: + """Test Failure + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Failure` + """ + model = Failure() + if include_optional: + return Failure( + failure_reason = 'forbidden', + log_message = 'Could not execute the action.' + ) + else: + return Failure( + failure_reason = 'forbidden', + log_message = 'Could not execute the action.', + ) + """ + + def testFailure(self): + """Test Failure""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_fileaccess.py b/test/test_fileaccess.py new file mode 100644 index 00000000..57f399f1 --- /dev/null +++ b/test/test_fileaccess.py @@ -0,0 +1,75 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.fileaccess import Fileaccess + + +class TestFileaccess(unittest.TestCase): + """Fileaccess unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Fileaccess: + """Test Fileaccess + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Fileaccess` + """ + model = Fileaccess() + if include_optional: + return Fileaccess( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'fileaccess', + hostname = 'ip-127-0-0-1', + container_id = 'f8d4f71ab80b', + comm = 'pg_isready', + pid = 123, + directory = '/home/sysdig/', + filename = 'malicious_file.txt', + permissions = 'rw', + tty = 12345, + labels = { + 'key' : 'foo' + } + ) + else: + return Fileaccess( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'fileaccess', + hostname = 'ip-127-0-0-1', + comm = 'pg_isready', + pid = 123, + directory = '/home/sysdig/', + filename = 'malicious_file.txt', + permissions = 'rw', + ) + """ + + def testFileaccess(self): + """Test Fileaccess""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_gchat_notification_channel_options_v1.py b/test/test_gchat_notification_channel_options_v1.py new file mode 100644 index 00000000..d3133a13 --- /dev/null +++ b/test/test_gchat_notification_channel_options_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.gchat_notification_channel_options_v1 import GchatNotificationChannelOptionsV1 + + +class TestGchatNotificationChannelOptionsV1(unittest.TestCase): + """GchatNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GchatNotificationChannelOptionsV1: + """Test GchatNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GchatNotificationChannelOptionsV1` + """ + model = GchatNotificationChannelOptionsV1() + if include_optional: + return GchatNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + url = 'https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=KEY&token=TOKEN' + ) + else: + return GchatNotificationChannelOptionsV1( + url = 'https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=KEY&token=TOKEN', + ) + """ + + def testGchatNotificationChannelOptionsV1(self): + """Test GchatNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_gchat_notification_channel_response_v1.py b/test/test_gchat_notification_channel_response_v1.py new file mode 100644 index 00000000..18c8ada5 --- /dev/null +++ b/test/test_gchat_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.gchat_notification_channel_response_v1 import GchatNotificationChannelResponseV1 + + +class TestGchatNotificationChannelResponseV1(unittest.TestCase): + """GchatNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GchatNotificationChannelResponseV1: + """Test GchatNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GchatNotificationChannelResponseV1` + """ + model = GchatNotificationChannelResponseV1() + if include_optional: + return GchatNotificationChannelResponseV1( + options = None + ) + else: + return GchatNotificationChannelResponseV1( + options = None, + ) + """ + + def testGchatNotificationChannelResponseV1(self): + """Test GchatNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_access_keys_paginated_response_v1.py b/test/test_get_access_keys_paginated_response_v1.py new file mode 100644 index 00000000..d8f014ef --- /dev/null +++ b/test/test_get_access_keys_paginated_response_v1.py @@ -0,0 +1,70 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_access_keys_paginated_response_v1 import GetAccessKeysPaginatedResponseV1 + + +class TestGetAccessKeysPaginatedResponseV1(unittest.TestCase): + """GetAccessKeysPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetAccessKeysPaginatedResponseV1: + """Test GetAccessKeysPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetAccessKeysPaginatedResponseV1` + """ + model = GetAccessKeysPaginatedResponseV1() + if include_optional: + return GetAccessKeysPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.access_key_response_v1.Access Key Response V1( + id = 1, + is_enabled = True, + access_key = 'f97af7c5-dac3-49b1-b5e0-710871d34a15', + date_created = '2022-01-31T22:15:28Z', + date_disabled = '2022-01-31T22:15:28Z', + agent_limit = 100, + agent_reservation = 5, + team_id = 13, + metadata = { + 'key' : 'metaKey1:metaValue1' + }, ) + ] + ) + else: + return GetAccessKeysPaginatedResponseV1( + ) + """ + + def testGetAccessKeysPaginatedResponseV1(self): + """Test GetAccessKeysPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_amazon_sqs_integration_response.py b/test/test_get_amazon_sqs_integration_response.py new file mode 100644 index 00000000..ef67d49e --- /dev/null +++ b/test/test_get_amazon_sqs_integration_response.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_amazon_sqs_integration_response import GetAmazonSqsIntegrationResponse + + +class TestGetAmazonSqsIntegrationResponse(unittest.TestCase): + """GetAmazonSqsIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetAmazonSqsIntegrationResponse: + """Test GetAmazonSqsIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetAmazonSqsIntegrationResponse` + """ + model = GetAmazonSqsIntegrationResponse() + if include_optional: + return GetAmazonSqsIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.amazon_sqs.Amazon SQS( + owner_account = '123456789012', + region = 'us-east', + queue = 'sysdig-efo-queue', + delay = 1, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], ) + ) + else: + return GetAmazonSqsIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.amazon_sqs.Amazon SQS( + owner_account = '123456789012', + region = 'us-east', + queue = 'sysdig-efo-queue', + delay = 1, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], ), + ) + """ + + def testGetAmazonSqsIntegrationResponse(self): + """Test GetAmazonSqsIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_bundle_response.py b/test/test_get_bundle_response.py new file mode 100644 index 00000000..7b3c82d3 --- /dev/null +++ b/test/test_get_bundle_response.py @@ -0,0 +1,73 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_bundle_response import GetBundleResponse + + +class TestGetBundleResponse(unittest.TestCase): + """GetBundleResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetBundleResponse: + """Test GetBundleResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetBundleResponse` + """ + model = GetBundleResponse() + if include_optional: + return GetBundleResponse( + id = 1, + name = 'Sysdig Bundle', + identifier = 'sysdig-bundle', + description = 'Default Sysdig Bundle', + bundle_type = 'custom', + rules = [ + sysdig_client.models.bundle_rule.BundleRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}}], + rule_id = '42', ) + ] + ) + else: + return GetBundleResponse( + id = 1, + name = 'Sysdig Bundle', + identifier = 'sysdig-bundle', + bundle_type = 'custom', + rules = [ + sysdig_client.models.bundle_rule.BundleRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}}], + rule_id = '42', ) + ], + ) + """ + + def testGetBundleResponse(self): + """Test GetBundleResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_chronicle_integration_response.py b/test/test_get_chronicle_integration_response.py new file mode 100644 index 00000000..33930800 --- /dev/null +++ b/test/test_get_chronicle_integration_response.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_chronicle_integration_response import GetChronicleIntegrationResponse + + +class TestGetChronicleIntegrationResponse(unittest.TestCase): + """GetChronicleIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetChronicleIntegrationResponse: + """Test GetChronicleIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetChronicleIntegrationResponse` + """ + model = GetChronicleIntegrationResponse() + if include_optional: + return GetChronicleIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = None + ) + else: + return GetChronicleIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = None, + ) + """ + + def testGetChronicleIntegrationResponse(self): + """Test GetChronicleIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_chronicle_integration_response_all_of_connection_info.py b/test/test_get_chronicle_integration_response_all_of_connection_info.py new file mode 100644 index 00000000..11066a36 --- /dev/null +++ b/test/test_get_chronicle_integration_response_all_of_connection_info.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_chronicle_integration_response_all_of_connection_info import ( + GetChronicleIntegrationResponseAllOfConnectionInfo, +) + + +class TestGetChronicleIntegrationResponseAllOfConnectionInfo(unittest.TestCase): + """GetChronicleIntegrationResponseAllOfConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetChronicleIntegrationResponseAllOfConnectionInfo: + """Test GetChronicleIntegrationResponseAllOfConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetChronicleIntegrationResponseAllOfConnectionInfo` + """ + model = GetChronicleIntegrationResponseAllOfConnectionInfo() + if include_optional: + return GetChronicleIntegrationResponseAllOfConnectionInfo( + region = 'us', + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test' + ) + else: + return GetChronicleIntegrationResponseAllOfConnectionInfo( + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + ) + """ + + def testGetChronicleIntegrationResponseAllOfConnectionInfo(self): + """Test GetChronicleIntegrationResponseAllOfConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_custom_jobs_paginated_response_v1.py b/test/test_get_custom_jobs_paginated_response_v1.py new file mode 100644 index 00000000..36b9fcf3 --- /dev/null +++ b/test/test_get_custom_jobs_paginated_response_v1.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_custom_jobs_paginated_response_v1 import GetCustomJobsPaginatedResponseV1 + + +class TestGetCustomJobsPaginatedResponseV1(unittest.TestCase): + """GetCustomJobsPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetCustomJobsPaginatedResponseV1: + """Test GetCustomJobsPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetCustomJobsPaginatedResponseV1` + """ + model = GetCustomJobsPaginatedResponseV1() + if include_optional: + return GetCustomJobsPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.custom_prometheus_job_v1.Custom Prometheus Job V1( + name = 'my-custom-job', + enabled = False, + enablement_by_cluster = {"my-cluster":true}, ) + ] + ) + else: + return GetCustomJobsPaginatedResponseV1( + ) + """ + + def testGetCustomJobsPaginatedResponseV1(self): + """Test GetCustomJobsPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_elasticsearch_integration_response.py b/test/test_get_elasticsearch_integration_response.py new file mode 100644 index 00000000..f33085b8 --- /dev/null +++ b/test/test_get_elasticsearch_integration_response.py @@ -0,0 +1,74 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_elasticsearch_integration_response import GetElasticsearchIntegrationResponse + + +class TestGetElasticsearchIntegrationResponse(unittest.TestCase): + """GetElasticsearchIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetElasticsearchIntegrationResponse: + """Test GetElasticsearchIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetElasticsearchIntegrationResponse` + """ + model = GetElasticsearchIntegrationResponse() + if include_optional: + return GetElasticsearchIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.connection_info_elasticsearch.Connection Info Elasticsearch( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + is_insecure = False, + auth = 'BASIC_AUTH', + format = 'KV_PAIRS', ) + ) + else: + return GetElasticsearchIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.connection_info_elasticsearch.Connection Info Elasticsearch( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + is_insecure = False, + auth = 'BASIC_AUTH', + format = 'KV_PAIRS', ), + ) + """ + + def testGetElasticsearchIntegrationResponse(self): + """Test GetElasticsearchIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_google_pub_sub_integration_response.py b/test/test_get_google_pub_sub_integration_response.py new file mode 100644 index 00000000..db3bf8b6 --- /dev/null +++ b/test/test_get_google_pub_sub_integration_response.py @@ -0,0 +1,80 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_google_pub_sub_integration_response import GetGooglePubSubIntegrationResponse + + +class TestGetGooglePubSubIntegrationResponse(unittest.TestCase): + """GetGooglePubSubIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetGooglePubSubIntegrationResponse: + """Test GetGooglePubSubIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetGooglePubSubIntegrationResponse` + """ + model = GetGooglePubSubIntegrationResponse() + if include_optional: + return GetGooglePubSubIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.google_pub/sub.Google Pub/Sub( + project = 'myproject', + topic = 'mytopic', + ordering_key = 'key', + attributes = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], ) + ) + else: + return GetGooglePubSubIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.google_pub/sub.Google Pub/Sub( + project = 'myproject', + topic = 'mytopic', + ordering_key = 'key', + attributes = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], ), + ) + """ + + def testGetGooglePubSubIntegrationResponse(self): + """Test GetGooglePubSubIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_google_scc_integration_response.py b/test/test_get_google_scc_integration_response.py new file mode 100644 index 00000000..248f321c --- /dev/null +++ b/test/test_get_google_scc_integration_response.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_google_scc_integration_response import GetGoogleSccIntegrationResponse + + +class TestGetGoogleSccIntegrationResponse(unittest.TestCase): + """GetGoogleSccIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetGoogleSccIntegrationResponse: + """Test GetGoogleSccIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetGoogleSccIntegrationResponse` + """ + model = GetGoogleSccIntegrationResponse() + if include_optional: + return GetGoogleSccIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.google_scc.Google SCC( + organization = 'myorg', + security_marks = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], ) + ) + else: + return GetGoogleSccIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.google_scc.Google SCC( + organization = 'myorg', + security_marks = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], ), + ) + """ + + def testGetGoogleSccIntegrationResponse(self): + """Test GetGoogleSccIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_inhibition_rules_paginated_response_v1.py b/test/test_get_inhibition_rules_paginated_response_v1.py new file mode 100644 index 00000000..74dc0bf0 --- /dev/null +++ b/test/test_get_inhibition_rules_paginated_response_v1.py @@ -0,0 +1,83 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_inhibition_rules_paginated_response_v1 import GetInhibitionRulesPaginatedResponseV1 + + +class TestGetInhibitionRulesPaginatedResponseV1(unittest.TestCase): + """GetInhibitionRulesPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetInhibitionRulesPaginatedResponseV1: + """Test GetInhibitionRulesPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetInhibitionRulesPaginatedResponseV1` + """ + model = GetInhibitionRulesPaginatedResponseV1() + if include_optional: + return GetInhibitionRulesPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.inhibition_rule_response_v1.Inhibition Rule Response v1( + id = null, + version = null, + created_on = '2017-07-21T17:32:28Z', + modified_on = '2017-07-21T17:32:28Z', + customer_id = 12, + team_id = 13, + is_enabled = False, + name = 'this is an example name', + description = 'this is an example description', + source_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + target_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + equal = [ + 'myLabel' + ], ) + ] + ) + else: + return GetInhibitionRulesPaginatedResponseV1( + ) + """ + + def testGetInhibitionRulesPaginatedResponseV1(self): + """Test GetInhibitionRulesPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_kafka_integration_response.py b/test/test_get_kafka_integration_response.py new file mode 100644 index 00000000..072b3739 --- /dev/null +++ b/test/test_get_kafka_integration_response.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_kafka_integration_response import GetKafkaIntegrationResponse + + +class TestGetKafkaIntegrationResponse(unittest.TestCase): + """GetKafkaIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetKafkaIntegrationResponse: + """Test GetKafkaIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetKafkaIntegrationResponse` + """ + model = GetKafkaIntegrationResponse() + if include_optional: + return GetKafkaIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = None + ) + else: + return GetKafkaIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = None, + ) + """ + + def testGetKafkaIntegrationResponse(self): + """Test GetKafkaIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_kafka_integration_response_all_of_connection_info.py b/test/test_get_kafka_integration_response_all_of_connection_info.py new file mode 100644 index 00000000..6bf81159 --- /dev/null +++ b/test/test_get_kafka_integration_response_all_of_connection_info.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_kafka_integration_response_all_of_connection_info import ( + GetKafkaIntegrationResponseAllOfConnectionInfo, +) + + +class TestGetKafkaIntegrationResponseAllOfConnectionInfo(unittest.TestCase): + """GetKafkaIntegrationResponseAllOfConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetKafkaIntegrationResponseAllOfConnectionInfo: + """Test GetKafkaIntegrationResponseAllOfConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetKafkaIntegrationResponseAllOfConnectionInfo` + """ + model = GetKafkaIntegrationResponseAllOfConnectionInfo() + if include_optional: + return GetKafkaIntegrationResponseAllOfConnectionInfo( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + balancer = 'murmur2', + compression = 'gzip', + is_tls_enabled = True, + is_insecure = False, + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log' + ) + else: + return GetKafkaIntegrationResponseAllOfConnectionInfo( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log', + ) + """ + + def testGetKafkaIntegrationResponseAllOfConnectionInfo(self): + """Test GetKafkaIntegrationResponseAllOfConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_mcm_integration_response.py b/test/test_get_mcm_integration_response.py new file mode 100644 index 00000000..70c6bf80 --- /dev/null +++ b/test/test_get_mcm_integration_response.py @@ -0,0 +1,74 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_mcm_integration_response import GetMcmIntegrationResponse + + +class TestGetMcmIntegrationResponse(unittest.TestCase): + """GetMcmIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetMcmIntegrationResponse: + """Test GetMcmIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetMcmIntegrationResponse` + """ + model = GetMcmIntegrationResponse() + if include_optional: + return GetMcmIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.ibm_multicloud_manager.IBM Multicloud Manager( + endpoint = 'https://mcm.mydomain.com:8443', + account_id = 'id-mycluster-account', + provider_id = 'sysdig-secure', + note_name = 'note-name', + is_insecure = False, ) + ) + else: + return GetMcmIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.ibm_multicloud_manager.IBM Multicloud Manager( + endpoint = 'https://mcm.mydomain.com:8443', + account_id = 'id-mycluster-account', + provider_id = 'sysdig-secure', + note_name = 'note-name', + is_insecure = False, ), + ) + """ + + def testGetMcmIntegrationResponse(self): + """Test GetMcmIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_microsoft_sentinel_integration_response.py b/test/test_get_microsoft_sentinel_integration_response.py new file mode 100644 index 00000000..a1b4c3fd --- /dev/null +++ b/test/test_get_microsoft_sentinel_integration_response.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_microsoft_sentinel_integration_response import GetMicrosoftSentinelIntegrationResponse + + +class TestGetMicrosoftSentinelIntegrationResponse(unittest.TestCase): + """GetMicrosoftSentinelIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetMicrosoftSentinelIntegrationResponse: + """Test GetMicrosoftSentinelIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetMicrosoftSentinelIntegrationResponse` + """ + model = GetMicrosoftSentinelIntegrationResponse() + if include_optional: + return GetMicrosoftSentinelIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.microsoft_sentinel.Microsoft Sentinel( + workspace_id = '578aef60-81be-4d38-a278-ec77925edcf0', ) + ) + else: + return GetMicrosoftSentinelIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.microsoft_sentinel.Microsoft Sentinel( + workspace_id = '578aef60-81be-4d38-a278-ec77925edcf0', ), + ) + """ + + def testGetMicrosoftSentinelIntegrationResponse(self): + """Test GetMicrosoftSentinelIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_notification_channels_paginated_response_v1.py b/test/test_get_notification_channels_paginated_response_v1.py new file mode 100644 index 00000000..4de1d163 --- /dev/null +++ b/test/test_get_notification_channels_paginated_response_v1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_notification_channels_paginated_response_v1 import GetNotificationChannelsPaginatedResponseV1 + + +class TestGetNotificationChannelsPaginatedResponseV1(unittest.TestCase): + """GetNotificationChannelsPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetNotificationChannelsPaginatedResponseV1: + """Test GetNotificationChannelsPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetNotificationChannelsPaginatedResponseV1` + """ + model = GetNotificationChannelsPaginatedResponseV1() + if include_optional: + return GetNotificationChannelsPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + null + ] + ) + else: + return GetNotificationChannelsPaginatedResponseV1( + ) + """ + + def testGetNotificationChannelsPaginatedResponseV1(self): + """Test GetNotificationChannelsPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_permissions_response_v1.py b/test/test_get_permissions_response_v1.py new file mode 100644 index 00000000..3aafa119 --- /dev/null +++ b/test/test_get_permissions_response_v1.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_permissions_response_v1 import GetPermissionsResponseV1 + + +class TestGetPermissionsResponseV1(unittest.TestCase): + """GetPermissionsResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetPermissionsResponseV1: + """Test GetPermissionsResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetPermissionsResponseV1` + """ + model = GetPermissionsResponseV1() + if include_optional: + return GetPermissionsResponseV1( + permissions = [ + sysdig_client.models.permission_v1.PermissionV1( + id = 'cspm-results.read', + description = 'Access CSPM results', + products = [ + 'SDS' + ], + dependencies = [ + 'cspm-results.read' + ], ) + ], + total = 135 + ) + else: + return GetPermissionsResponseV1( + ) + """ + + def testGetPermissionsResponseV1(self): + """Test GetPermissionsResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_policy_response.py b/test/test_get_policy_response.py new file mode 100644 index 00000000..5a00c733 --- /dev/null +++ b/test/test_get_policy_response.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_policy_response import GetPolicyResponse + + +class TestGetPolicyResponse(unittest.TestCase): + """GetPolicyResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetPolicyResponse: + """Test GetPolicyResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetPolicyResponse` + """ + model = GetPolicyResponse() + if include_optional: + return GetPolicyResponse( + id = 50, + name = 'My Policy', + identifier = 'my-policy', + description = 'This is a policy description', + bundles = [ + sysdig_client.models.policy_bundle_reference.policy bundle reference( + id = 42, + name = 'My Bundle', ) + ], + stages = [ + sysdig_client.models.stage_definition.Stage definition( + name = 'runtime', + configuration = [ + sysdig_client.models.stage_configuration.stage configuration( + scope = 'kubernetes.cluster.name = "my-cluster" and kubernetes.namespace.name = "my-namespace"', ) + ], ) + ] + ) + else: + return GetPolicyResponse( + id = 50, + name = 'My Policy', + identifier = 'my-policy', + bundles = [ + sysdig_client.models.policy_bundle_reference.policy bundle reference( + id = 42, + name = 'My Bundle', ) + ], + stages = [ + sysdig_client.models.stage_definition.Stage definition( + name = 'runtime', + configuration = [ + sysdig_client.models.stage_configuration.stage configuration( + scope = 'kubernetes.cluster.name = "my-cluster" and kubernetes.namespace.name = "my-namespace"', ) + ], ) + ], + ) + """ + + def testGetPolicyResponse(self): + """Test GetPolicyResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_pricing_paginated_response_v1.py b/test/test_get_pricing_paginated_response_v1.py new file mode 100644 index 00000000..b03f23c5 --- /dev/null +++ b/test/test_get_pricing_paginated_response_v1.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_pricing_paginated_response_v1 import GetPricingPaginatedResponseV1 + + +class TestGetPricingPaginatedResponseV1(unittest.TestCase): + """GetPricingPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetPricingPaginatedResponseV1: + """Test GetPricingPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetPricingPaginatedResponseV1` + """ + model = GetPricingPaginatedResponseV1() + if include_optional: + return GetPricingPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.pricing_response_v1.Pricing Response V1( + id = 1, + type = 'CLUSTER', + cluster_name = 'My pricing', + name = 'My pricing', + unit_pricing = null, + spot_label = 'cost-advisor-spot-node', + spot_label_value = 'true', + version = null, ) + ] + ) + else: + return GetPricingPaginatedResponseV1( + ) + """ + + def testGetPricingPaginatedResponseV1(self): + """Test GetPricingPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_pricing_projected_paginated_response_v1.py b/test/test_get_pricing_projected_paginated_response_v1.py new file mode 100644 index 00000000..73bb8e9c --- /dev/null +++ b/test/test_get_pricing_projected_paginated_response_v1.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_pricing_projected_paginated_response_v1 import GetPricingProjectedPaginatedResponseV1 + + +class TestGetPricingProjectedPaginatedResponseV1(unittest.TestCase): + """GetPricingProjectedPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetPricingProjectedPaginatedResponseV1: + """Test GetPricingProjectedPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetPricingProjectedPaginatedResponseV1` + """ + model = GetPricingProjectedPaginatedResponseV1() + if include_optional: + return GetPricingProjectedPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.pricing_projected_response_v1.Pricing Projected Response V1( + cluster_name = 'My pricing', + monthly_projected_cost = 113114.72, ) + ] + ) + else: + return GetPricingProjectedPaginatedResponseV1( + ) + """ + + def testGetPricingProjectedPaginatedResponseV1(self): + """Test GetPricingProjectedPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_qradar_integration_response.py b/test/test_get_qradar_integration_response.py new file mode 100644 index 00000000..911aa40a --- /dev/null +++ b/test/test_get_qradar_integration_response.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_qradar_integration_response import GetQradarIntegrationResponse + + +class TestGetQradarIntegrationResponse(unittest.TestCase): + """GetQradarIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetQradarIntegrationResponse: + """Test GetQradarIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetQradarIntegrationResponse` + """ + model = GetQradarIntegrationResponse() + if include_optional: + return GetQradarIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.ibm_q_radar.IBM QRadar( + address = 'qradar.mydomain.com', + port = 514, + is_insecure = False, + is_tls = True, ) + ) + else: + return GetQradarIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.ibm_q_radar.IBM QRadar( + address = 'qradar.mydomain.com', + port = 514, + is_insecure = False, + is_tls = True, ), + ) + """ + + def testGetQradarIntegrationResponse(self): + """Test GetQradarIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_query_range_v1_step_parameter.py b/test/test_get_query_range_v1_step_parameter.py new file mode 100644 index 00000000..b3c46429 --- /dev/null +++ b/test/test_get_query_range_v1_step_parameter.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_query_range_v1_step_parameter import GetQueryRangeV1StepParameter + + +class TestGetQueryRangeV1StepParameter(unittest.TestCase): + """GetQueryRangeV1StepParameter unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetQueryRangeV1StepParameter: + """Test GetQueryRangeV1StepParameter + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetQueryRangeV1StepParameter` + """ + model = GetQueryRangeV1StepParameter() + if include_optional: + return GetQueryRangeV1StepParameter( + ) + else: + return GetQueryRangeV1StepParameter( + ) + """ + + def testGetQueryRangeV1StepParameter(self): + """Test GetQueryRangeV1StepParameter""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_query_v1401_response.py b/test/test_get_query_v1401_response.py new file mode 100644 index 00000000..c7e40bf8 --- /dev/null +++ b/test/test_get_query_v1401_response.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_query_v1401_response import GetQueryV1401Response + + +class TestGetQueryV1401Response(unittest.TestCase): + """GetQueryV1401Response unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetQueryV1401Response: + """Test GetQueryV1401Response + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetQueryV1401Response` + """ + model = GetQueryV1401Response() + if include_optional: + return GetQueryV1401Response( + timestamp = 1743154268491, + status = 401, + error = 'Unauthorized', + path = '/ext/auth/prometheus/api/v1/query' + ) + else: + return GetQueryV1401Response( + timestamp = 1743154268491, + status = 401, + error = 'Unauthorized', + path = '/ext/auth/prometheus/api/v1/query', + ) + """ + + def testGetQueryV1401Response(self): + """Test GetQueryV1401Response""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_roles_paginated_response_v1.py b/test/test_get_roles_paginated_response_v1.py new file mode 100644 index 00000000..f567c992 --- /dev/null +++ b/test/test_get_roles_paginated_response_v1.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_roles_paginated_response_v1 import GetRolesPaginatedResponseV1 + + +class TestGetRolesPaginatedResponseV1(unittest.TestCase): + """GetRolesPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetRolesPaginatedResponseV1: + """Test GetRolesPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetRolesPaginatedResponseV1` + """ + model = GetRolesPaginatedResponseV1() + if include_optional: + return GetRolesPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.create_role_response.Create Role Response( + id = 1, + description = 'Enables access to Dashboards section', + monitor_permissions = [ + 'alerts.read' + ], + secure_permissions = [ + 'scanning.read' + ], + name = 'Dashboard Viewer', ) + ] + ) + else: + return GetRolesPaginatedResponseV1( + ) + """ + + def testGetRolesPaginatedResponseV1(self): + """Test GetRolesPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_service_accounts_paginated_response_v1.py b/test/test_get_service_accounts_paginated_response_v1.py new file mode 100644 index 00000000..cadae9df --- /dev/null +++ b/test/test_get_service_accounts_paginated_response_v1.py @@ -0,0 +1,70 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_service_accounts_paginated_response_v1 import GetServiceAccountsPaginatedResponseV1 + + +class TestGetServiceAccountsPaginatedResponseV1(unittest.TestCase): + """GetServiceAccountsPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetServiceAccountsPaginatedResponseV1: + """Test GetServiceAccountsPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetServiceAccountsPaginatedResponseV1` + """ + model = GetServiceAccountsPaginatedResponseV1() + if include_optional: + return GetServiceAccountsPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.service_account_response_v1.Service Account Response V1( + id = 1, + name = 'CI/CD service api key', + date_created = '2024-08-23T17:32:28Z', + last_updated = '2024-04-11T17:32:28Z', + last_used = '2024-06-15T17:32:28Z', + expiration_date = '2024-06-15T17:32:28Z', + team_id = 32, + team_role = 'ROLE_TEAM_STANDARD', + system_roles = [ + 'ROLE_SERVICE_ACCOUNT' + ], ) + ] + ) + else: + return GetServiceAccountsPaginatedResponseV1( + ) + """ + + def testGetServiceAccountsPaginatedResponseV1(self): + """Test GetServiceAccountsPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_splunk_integration_response.py b/test/test_get_splunk_integration_response.py new file mode 100644 index 00000000..605d6791 --- /dev/null +++ b/test/test_get_splunk_integration_response.py @@ -0,0 +1,74 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_splunk_integration_response import GetSplunkIntegrationResponse + + +class TestGetSplunkIntegrationResponse(unittest.TestCase): + """GetSplunkIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetSplunkIntegrationResponse: + """Test GetSplunkIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetSplunkIntegrationResponse` + """ + model = GetSplunkIntegrationResponse() + if include_optional: + return GetSplunkIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.splunk.Splunk( + endpoint = 'https://splunk.mydomain.com:443/services/collector/event', + source_type = 'cisco_syslog', + index = 'main', + is_insecure = False, + certificate_id = 1, ) + ) + else: + return GetSplunkIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.splunk.Splunk( + endpoint = 'https://splunk.mydomain.com:443/services/collector/event', + source_type = 'cisco_syslog', + index = 'main', + is_insecure = False, + certificate_id = 1, ), + ) + """ + + def testGetSplunkIntegrationResponse(self): + """Test GetSplunkIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_syslog_integration_response.py b/test/test_get_syslog_integration_response.py new file mode 100644 index 00000000..4f564572 --- /dev/null +++ b/test/test_get_syslog_integration_response.py @@ -0,0 +1,78 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_syslog_integration_response import GetSyslogIntegrationResponse + + +class TestGetSyslogIntegrationResponse(unittest.TestCase): + """GetSyslogIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetSyslogIntegrationResponse: + """Test GetSyslogIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetSyslogIntegrationResponse` + """ + model = GetSyslogIntegrationResponse() + if include_optional: + return GetSyslogIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.syslog.Syslog( + address = 'syslog.mydomain.com', + port = 514, + message_format = 'RFC_5424', + type = 'tcp', + is_insecure = False, + formatter = 'JSON', + certificate_id = 1, ) + ) + else: + return GetSyslogIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.syslog.Syslog( + address = 'syslog.mydomain.com', + port = 514, + message_format = 'RFC_5424', + type = 'tcp', + is_insecure = False, + formatter = 'JSON', + certificate_id = 1, ), + ) + """ + + def testGetSyslogIntegrationResponse(self): + """Test GetSyslogIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_team_users_paginated_response_v1.py b/test/test_get_team_users_paginated_response_v1.py new file mode 100644 index 00000000..163a279c --- /dev/null +++ b/test/test_get_team_users_paginated_response_v1.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_team_users_paginated_response_v1 import GetTeamUsersPaginatedResponseV1 + + +class TestGetTeamUsersPaginatedResponseV1(unittest.TestCase): + """GetTeamUsersPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetTeamUsersPaginatedResponseV1: + """Test GetTeamUsersPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetTeamUsersPaginatedResponseV1` + """ + model = GetTeamUsersPaginatedResponseV1() + if include_optional: + return GetTeamUsersPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.team_user_response_v1.Team User Response V1( + team_id = 1, + user_id = 1, + standard_team_role = null, + custom_team_role_id = null, ) + ] + ) + else: + return GetTeamUsersPaginatedResponseV1( + ) + """ + + def testGetTeamUsersPaginatedResponseV1(self): + """Test GetTeamUsersPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_teams_paginated_response_v1.py b/test/test_get_teams_paginated_response_v1.py new file mode 100644 index 00000000..e7e65d1a --- /dev/null +++ b/test/test_get_teams_paginated_response_v1.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_teams_paginated_response_v1 import GetTeamsPaginatedResponseV1 + + +class TestGetTeamsPaginatedResponseV1(unittest.TestCase): + """GetTeamsPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetTeamsPaginatedResponseV1: + """Test GetTeamsPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetTeamsPaginatedResponseV1` + """ + model = GetTeamsPaginatedResponseV1() + if include_optional: + return GetTeamsPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.team_response_v1.Team Response V1( + id = 1, + name = 'Scanning operations', + description = 'This team has access to scanning results', + is_immutable_team = False, + is_default_team = False, + standard_team_role = null, + custom_team_role_id = null, + product = null, + ui_settings = sysdig_client.models.ui_settings.UiSettings( + entry_point = sysdig_client.models.entry_point.Entry Point( + module = 'Alerts', + selection = '2231245', ), + theme = '#112233', ), + is_all_zones = False, + zone_ids = [ + 1 + ], + scopes = [ + sysdig_client.models.scope.Scope( + type = 'PROMETHEUS_REMOTE_WRITE', + expression = 'kubernetes.cluster.name in ("test-env")', ) + ], + additional_team_permissions = sysdig_client.models.additional_team_permissions.Additional Team Permissions( + has_sysdig_captures = False, + has_infrastructure_events = False, + has_aws_data = False, + has_rapid_response = False, + has_agent_cli = False, + has_beacon_metrics = False, ), + date_created = '2017-07-21T17:32:28Z', + last_updated = '2017-07-21T17:32:28Z', + version = 1, ) + ] + ) + else: + return GetTeamsPaginatedResponseV1( + ) + """ + + def testGetTeamsPaginatedResponseV1(self): + """Test GetTeamsPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_users_paginated_response_v1.py b/test/test_get_users_paginated_response_v1.py new file mode 100644 index 00000000..54f92d8c --- /dev/null +++ b/test/test_get_users_paginated_response_v1.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_users_paginated_response_v1 import GetUsersPaginatedResponseV1 + + +class TestGetUsersPaginatedResponseV1(unittest.TestCase): + """GetUsersPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetUsersPaginatedResponseV1: + """Test GetUsersPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetUsersPaginatedResponseV1` + """ + model = GetUsersPaginatedResponseV1() + if include_optional: + return GetUsersPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.user_response_v1.User Response V1( + id = 1, + email = 'john.doe@nomail.cc', + first_name = 'john', + last_name = 'doe', + is_admin = False, + activation_status = 'confirmed', + date_created = '2017-07-21T17:32:28Z', + last_updated = '2017-07-21T17:32:28Z', + version = null, ) + ] + ) + else: + return GetUsersPaginatedResponseV1( + ) + """ + + def testGetUsersPaginatedResponseV1(self): + """Test GetUsersPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_get_webhook_integration_response.py b/test/test_get_webhook_integration_response.py new file mode 100644 index 00000000..5462b495 --- /dev/null +++ b/test/test_get_webhook_integration_response.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.get_webhook_integration_response import GetWebhookIntegrationResponse + + +class TestGetWebhookIntegrationResponse(unittest.TestCase): + """GetWebhookIntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GetWebhookIntegrationResponse: + """Test GetWebhookIntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GetWebhookIntegrationResponse` + """ + model = GetWebhookIntegrationResponse() + if include_optional: + return GetWebhookIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.webhook.Webhook( + endpoint = 'https://endpoint.mydomain.com', + is_insecure = False, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + output = 'json', + timestamp_format = 'nanoseconds', + auth = 'BASIC_AUTH', + certificate_id = 1, ) + ) + else: + return GetWebhookIntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.webhook.Webhook( + endpoint = 'https://endpoint.mydomain.com', + is_insecure = False, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + output = 'json', + timestamp_format = 'nanoseconds', + auth = 'BASIC_AUTH', + certificate_id = 1, ), + ) + """ + + def testGetWebhookIntegrationResponse(self): + """Test GetWebhookIntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_global_sso_settings_request_v1.py b/test/test_global_sso_settings_request_v1.py new file mode 100644 index 00000000..8595cd4a --- /dev/null +++ b/test/test_global_sso_settings_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.global_sso_settings_request_v1 import GlobalSsoSettingsRequestV1 + + +class TestGlobalSsoSettingsRequestV1(unittest.TestCase): + """GlobalSsoSettingsRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GlobalSsoSettingsRequestV1: + """Test GlobalSsoSettingsRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GlobalSsoSettingsRequestV1` + """ + model = GlobalSsoSettingsRequestV1() + if include_optional: + return GlobalSsoSettingsRequestV1( + is_password_login_enabled = True + ) + else: + return GlobalSsoSettingsRequestV1( + is_password_login_enabled = True, + ) + """ + + def testGlobalSsoSettingsRequestV1(self): + """Test GlobalSsoSettingsRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_global_sso_settings_response_v1.py b/test/test_global_sso_settings_response_v1.py new file mode 100644 index 00000000..a1a3a1e4 --- /dev/null +++ b/test/test_global_sso_settings_response_v1.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.global_sso_settings_response_v1 import GlobalSsoSettingsResponseV1 + + +class TestGlobalSsoSettingsResponseV1(unittest.TestCase): + """GlobalSsoSettingsResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GlobalSsoSettingsResponseV1: + """Test GlobalSsoSettingsResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GlobalSsoSettingsResponseV1` + """ + model = GlobalSsoSettingsResponseV1() + if include_optional: + return GlobalSsoSettingsResponseV1( + is_password_login_enabled = True + ) + else: + return GlobalSsoSettingsResponseV1( + ) + """ + + def testGlobalSsoSettingsResponseV1(self): + """Test GlobalSsoSettingsResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_google_pub_sub_create_connection_info.py b/test/test_google_pub_sub_create_connection_info.py new file mode 100644 index 00000000..41f6b7cd --- /dev/null +++ b/test/test_google_pub_sub_create_connection_info.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.google_pub_sub_create_connection_info import GooglePubSubCreateConnectionInfo + + +class TestGooglePubSubCreateConnectionInfo(unittest.TestCase): + """GooglePubSubCreateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GooglePubSubCreateConnectionInfo: + """Test GooglePubSubCreateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GooglePubSubCreateConnectionInfo` + """ + model = GooglePubSubCreateConnectionInfo() + if include_optional: + return GooglePubSubCreateConnectionInfo( + project = 'myproject', + topic = 'mytopic', + ordering_key = 'key', + attributes = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + credentials_json = '{"key":"value"}' + ) + else: + return GooglePubSubCreateConnectionInfo( + project = 'myproject', + topic = 'mytopic', + credentials_json = '{"key":"value"}', + ) + """ + + def testGooglePubSubCreateConnectionInfo(self): + """Test GooglePubSubCreateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_google_pub_sub_create_connection_info1.py b/test/test_google_pub_sub_create_connection_info1.py new file mode 100644 index 00000000..8553996f --- /dev/null +++ b/test/test_google_pub_sub_create_connection_info1.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.google_pub_sub_create_connection_info1 import GooglePubSubCreateConnectionInfo1 + + +class TestGooglePubSubCreateConnectionInfo1(unittest.TestCase): + """GooglePubSubCreateConnectionInfo1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GooglePubSubCreateConnectionInfo1: + """Test GooglePubSubCreateConnectionInfo1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GooglePubSubCreateConnectionInfo1` + """ + model = GooglePubSubCreateConnectionInfo1() + if include_optional: + return GooglePubSubCreateConnectionInfo1( + project = 'myproject', + topic = 'mytopic', + ordering_key = 'key', + attributes = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + credentials_json = '{"key":"value"}' + ) + else: + return GooglePubSubCreateConnectionInfo1( + project = 'myproject', + topic = 'mytopic', + ) + """ + + def testGooglePubSubCreateConnectionInfo1(self): + """Test GooglePubSubCreateConnectionInfo1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_google_scc_create_connection_info.py b/test/test_google_scc_create_connection_info.py new file mode 100644 index 00000000..46b6511e --- /dev/null +++ b/test/test_google_scc_create_connection_info.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.google_scc_create_connection_info import GoogleSCCCreateConnectionInfo + + +class TestGoogleSCCCreateConnectionInfo(unittest.TestCase): + """GoogleSCCCreateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GoogleSCCCreateConnectionInfo: + """Test GoogleSCCCreateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GoogleSCCCreateConnectionInfo` + """ + model = GoogleSCCCreateConnectionInfo() + if include_optional: + return GoogleSCCCreateConnectionInfo( + organization = 'myorg', + security_marks = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + credentials_json = '{"key":"value"}' + ) + else: + return GoogleSCCCreateConnectionInfo( + organization = 'myorg', + credentials_json = '{"key":"value"}', + ) + """ + + def testGoogleSCCCreateConnectionInfo(self): + """Test GoogleSCCCreateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_google_scc_create_connection_info1.py b/test/test_google_scc_create_connection_info1.py new file mode 100644 index 00000000..64af9a10 --- /dev/null +++ b/test/test_google_scc_create_connection_info1.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.google_scc_create_connection_info1 import GoogleSCCCreateConnectionInfo1 + + +class TestGoogleSCCCreateConnectionInfo1(unittest.TestCase): + """GoogleSCCCreateConnectionInfo1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GoogleSCCCreateConnectionInfo1: + """Test GoogleSCCCreateConnectionInfo1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GoogleSCCCreateConnectionInfo1` + """ + model = GoogleSCCCreateConnectionInfo1() + if include_optional: + return GoogleSCCCreateConnectionInfo1( + organization = 'myorg', + security_marks = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + credentials_json = '{"key":"value"}' + ) + else: + return GoogleSCCCreateConnectionInfo1( + organization = 'myorg', + ) + """ + + def testGoogleSCCCreateConnectionInfo1(self): + """Test GoogleSCCCreateConnectionInfo1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_group_mapping_response_v1.py b/test/test_group_mapping_response_v1.py new file mode 100644 index 00000000..470f9bbf --- /dev/null +++ b/test/test_group_mapping_response_v1.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.group_mapping_response_v1 import GroupMappingResponseV1 + + +class TestGroupMappingResponseV1(unittest.TestCase): + """GroupMappingResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GroupMappingResponseV1: + """Test GroupMappingResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GroupMappingResponseV1` + """ + model = GroupMappingResponseV1() + if include_optional: + return GroupMappingResponseV1( + id = 1, + group_name = 'Admins_Mapped_Group', + standard_team_role = 'ROLE_TEAM_READ', + custom_team_role_id = 1, + is_admin = False, + team_map = sysdig_client.models.team_map.Team Map( + is_for_all_teams = False, + team_ids = [154,187], ), + weight = 2, + date_created = '2017-07-21T17:32:28Z', + last_updated = '2017-07-21T17:32:28Z' + ) + else: + return GroupMappingResponseV1( + ) + """ + + def testGroupMappingResponseV1(self): + """Test GroupMappingResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_group_mapping_settings_v1.py b/test/test_group_mapping_settings_v1.py new file mode 100644 index 00000000..1347d2df --- /dev/null +++ b/test/test_group_mapping_settings_v1.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.group_mapping_settings_v1 import GroupMappingSettingsV1 + + +class TestGroupMappingSettingsV1(unittest.TestCase): + """GroupMappingSettingsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GroupMappingSettingsV1: + """Test GroupMappingSettingsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GroupMappingSettingsV1` + """ + model = GroupMappingSettingsV1() + if include_optional: + return GroupMappingSettingsV1( + no_mapping_strategy = 'UNAUTHORIZED', + different_roles_same_team_strategy = 'UNAUTHORIZED', + no_mappings_error_redirect_url = 'https://www.example.com' + ) + else: + return GroupMappingSettingsV1( + no_mapping_strategy = 'UNAUTHORIZED', + different_roles_same_team_strategy = 'UNAUTHORIZED', + ) + """ + + def testGroupMappingSettingsV1(self): + """Test GroupMappingSettingsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_group_mappings_api.py b/test/test_group_mappings_api.py new file mode 100644 index 00000000..713c4817 --- /dev/null +++ b/test/test_group_mappings_api.py @@ -0,0 +1,80 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.group_mappings_api import GroupMappingsApi + + +class TestGroupMappingsApi(unittest.TestCase): + """GroupMappingsApi unit test stubs""" + + def setUp(self) -> None: + self.api = GroupMappingsApi() + + def tearDown(self) -> None: + pass + + def test_create_group_mapping_v1(self) -> None: + """Test case for create_group_mapping_v1 + + Create Group Mapping + """ + pass + + def test_delete_group_mapping_by_id_v1(self) -> None: + """Test case for delete_group_mapping_by_id_v1 + + Delete Group Mapping + """ + pass + + def test_get_group_mapping_by_id_v1(self) -> None: + """Test case for get_group_mapping_by_id_v1 + + Get Group Mapping + """ + pass + + def test_get_group_mapping_settings_v1(self) -> None: + """Test case for get_group_mapping_settings_v1 + + Get Group Mappings Settings + """ + pass + + def test_get_group_mappings_v1(self) -> None: + """Test case for get_group_mappings_v1 + + List Group Mappings + """ + pass + + def test_save_group_mapping_settings_v1(self) -> None: + """Test case for save_group_mapping_settings_v1 + + Save Group Mapping settings + """ + pass + + def test_update_group_mapping_by_id_v1(self) -> None: + """Test case for update_group_mapping_by_id_v1 + + Update Group Mapping + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_group_mappings_paginated_response_v1.py b/test/test_group_mappings_paginated_response_v1.py new file mode 100644 index 00000000..779945a1 --- /dev/null +++ b/test/test_group_mappings_paginated_response_v1.py @@ -0,0 +1,70 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.group_mappings_paginated_response_v1 import GroupMappingsPaginatedResponseV1 + + +class TestGroupMappingsPaginatedResponseV1(unittest.TestCase): + """GroupMappingsPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GroupMappingsPaginatedResponseV1: + """Test GroupMappingsPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GroupMappingsPaginatedResponseV1` + """ + model = GroupMappingsPaginatedResponseV1() + if include_optional: + return GroupMappingsPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.group_mapping_response_v1.Group Mapping Response V1( + id = 1, + group_name = 'Admins_Mapped_Group', + standard_team_role = null, + custom_team_role_id = null, + is_admin = False, + team_map = sysdig_client.models.team_map.Team Map( + is_for_all_teams = False, + team_ids = [154,187], ), + weight = 2, + date_created = '2017-07-21T17:32:28Z', + last_updated = '2017-07-21T17:32:28Z', ) + ] + ) + else: + return GroupMappingsPaginatedResponseV1( + ) + """ + + def testGroupMappingsPaginatedResponseV1(self): + """Test GroupMappingsPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_gssapi_connection_info_kafka.py b/test/test_gssapi_connection_info_kafka.py new file mode 100644 index 00000000..b138d841 --- /dev/null +++ b/test/test_gssapi_connection_info_kafka.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.gssapi_connection_info_kafka import GssapiConnectionInfoKafka + + +class TestGssapiConnectionInfoKafka(unittest.TestCase): + """GssapiConnectionInfoKafka unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GssapiConnectionInfoKafka: + """Test GssapiConnectionInfoKafka + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GssapiConnectionInfoKafka` + """ + model = GssapiConnectionInfoKafka() + if include_optional: + return GssapiConnectionInfoKafka( + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log' + ) + else: + return GssapiConnectionInfoKafka( + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log', + ) + """ + + def testGssapiConnectionInfoKafka(self): + """Test GssapiConnectionInfoKafka""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_host_metadata.py b/test/test_host_metadata.py new file mode 100644 index 00000000..b72ab44c --- /dev/null +++ b/test/test_host_metadata.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.host_metadata import HostMetadata + + +class TestHostMetadata(unittest.TestCase): + """HostMetadata unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> HostMetadata: + """Test HostMetadata + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `HostMetadata` + """ + model = HostMetadata() + if include_optional: + return HostMetadata( + architecture = 'x86_64', + host_id = 'fa71009b1b1b4b1b9b1b1b1b1b1b1b1b', + host_name = 'ip-xxx-xx-x-x.ec2.internal', + os = 'debian' + ) + else: + return HostMetadata( + host_id = 'fa71009b1b1b4b1b9b1b1b1b1b1b1b1b', + host_name = 'ip-xxx-xx-x-x.ec2.internal', + os = 'debian', + ) + """ + + def testHostMetadata(self): + """Test HostMetadata""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_host_name.py b/test/test_host_name.py new file mode 100644 index 00000000..238a432a --- /dev/null +++ b/test/test_host_name.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.host_name import HostName + + +class TestHostName(unittest.TestCase): + """HostName unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> HostName: + """Test HostName + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `HostName` + """ + model = HostName() + if include_optional: + return HostName( + context_type = 'hostName', + context_value = 'ip-10-0-1-105.ec2.internal' + ) + else: + return HostName( + ) + """ + + def testHostName(self): + """Test HostName""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_host_name_contains.py b/test/test_host_name_contains.py new file mode 100644 index 00000000..8b973023 --- /dev/null +++ b/test/test_host_name_contains.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.host_name_contains import HostNameContains + + +class TestHostNameContains(unittest.TestCase): + """HostNameContains unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> HostNameContains: + """Test HostNameContains + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `HostNameContains` + """ + model = HostNameContains() + if include_optional: + return HostNameContains( + context_type = 'hostNameContains', + context_value = 'ec2.internal' + ) + else: + return HostNameContains( + ) + """ + + def testHostNameContains(self): + """Test HostNameContains""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ibm_event_notifications_notification_channel_options_v1.py b/test/test_ibm_event_notifications_notification_channel_options_v1.py new file mode 100644 index 00000000..73bde2b9 --- /dev/null +++ b/test/test_ibm_event_notifications_notification_channel_options_v1.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ibm_event_notifications_notification_channel_options_v1 import ( + IbmEventNotificationsNotificationChannelOptionsV1, +) + + +class TestIbmEventNotificationsNotificationChannelOptionsV1(unittest.TestCase): + """IbmEventNotificationsNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IbmEventNotificationsNotificationChannelOptionsV1: + """Test IbmEventNotificationsNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IbmEventNotificationsNotificationChannelOptionsV1` + """ + model = IbmEventNotificationsNotificationChannelOptionsV1() + if include_optional: + return IbmEventNotificationsNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + instance_id = 'service-instance-id' + ) + else: + return IbmEventNotificationsNotificationChannelOptionsV1( + instance_id = 'service-instance-id', + ) + """ + + def testIbmEventNotificationsNotificationChannelOptionsV1(self): + """Test IbmEventNotificationsNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ibm_event_notifications_notification_channel_response_v1.py b/test/test_ibm_event_notifications_notification_channel_response_v1.py new file mode 100644 index 00000000..58bb79c7 --- /dev/null +++ b/test/test_ibm_event_notifications_notification_channel_response_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ibm_event_notifications_notification_channel_response_v1 import ( + IbmEventNotificationsNotificationChannelResponseV1, +) + + +class TestIbmEventNotificationsNotificationChannelResponseV1(unittest.TestCase): + """IbmEventNotificationsNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IbmEventNotificationsNotificationChannelResponseV1: + """Test IbmEventNotificationsNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IbmEventNotificationsNotificationChannelResponseV1` + """ + model = IbmEventNotificationsNotificationChannelResponseV1() + if include_optional: + return IbmEventNotificationsNotificationChannelResponseV1( + options = None + ) + else: + return IbmEventNotificationsNotificationChannelResponseV1( + options = None, + ) + """ + + def testIbmEventNotificationsNotificationChannelResponseV1(self): + """Test IbmEventNotificationsNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ibm_multicloud_cloud_create_connection_info.py b/test/test_ibm_multicloud_cloud_create_connection_info.py new file mode 100644 index 00000000..f4781373 --- /dev/null +++ b/test/test_ibm_multicloud_cloud_create_connection_info.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info import IBMMulticloudCloudCreateConnectionInfo + + +class TestIBMMulticloudCloudCreateConnectionInfo(unittest.TestCase): + """IBMMulticloudCloudCreateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IBMMulticloudCloudCreateConnectionInfo: + """Test IBMMulticloudCloudCreateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IBMMulticloudCloudCreateConnectionInfo` + """ + model = IBMMulticloudCloudCreateConnectionInfo() + if include_optional: + return IBMMulticloudCloudCreateConnectionInfo( + endpoint = 'https://mcm.mydomain.com:8443', + account_id = 'id-mycluster-account', + provider_id = 'sysdig-secure', + note_name = 'note-name', + is_insecure = False, + api_key = 'dohch1OhPaewoo2edaifaefahphaoMee' + ) + else: + return IBMMulticloudCloudCreateConnectionInfo( + endpoint = 'https://mcm.mydomain.com:8443', + api_key = 'dohch1OhPaewoo2edaifaefahphaoMee', + ) + """ + + def testIBMMulticloudCloudCreateConnectionInfo(self): + """Test IBMMulticloudCloudCreateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ibm_multicloud_cloud_create_connection_info1.py b/test/test_ibm_multicloud_cloud_create_connection_info1.py new file mode 100644 index 00000000..f8132ada --- /dev/null +++ b/test/test_ibm_multicloud_cloud_create_connection_info1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ibm_multicloud_cloud_create_connection_info1 import IBMMulticloudCloudCreateConnectionInfo1 + + +class TestIBMMulticloudCloudCreateConnectionInfo1(unittest.TestCase): + """IBMMulticloudCloudCreateConnectionInfo1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IBMMulticloudCloudCreateConnectionInfo1: + """Test IBMMulticloudCloudCreateConnectionInfo1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IBMMulticloudCloudCreateConnectionInfo1` + """ + model = IBMMulticloudCloudCreateConnectionInfo1() + if include_optional: + return IBMMulticloudCloudCreateConnectionInfo1( + endpoint = 'https://mcm.mydomain.com:8443', + account_id = 'id-mycluster-account', + provider_id = 'sysdig-secure', + note_name = 'note-name', + is_insecure = False, + api_key = 'dohch1OhPaewoo2edaifaefahphaoMee' + ) + else: + return IBMMulticloudCloudCreateConnectionInfo1( + endpoint = 'https://mcm.mydomain.com:8443', + ) + """ + + def testIBMMulticloudCloudCreateConnectionInfo1(self): + """Test IBMMulticloudCloudCreateConnectionInfo1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image.py b/test/test_image.py new file mode 100644 index 00000000..4a3e2c79 --- /dev/null +++ b/test/test_image.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image import Image + + +class TestImage(unittest.TestCase): + """Image unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Image: + """Test Image + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Image` + """ + model = Image() + if include_optional: + return Image( + hash = '62e348b71acd7be14a4bdfcc', + name = 'prometheus-server', + type = 'Container', + pull_string = 'quay.io/prometheus/prometheus:v2.49.1', + vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + in_use_vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + vm_api_endpoint = '/api/scanning/runtime/v2/workflows/results?cursor&filter=freeText%20in%20%28%222cfced35cf83d6cdcdcd2f4ac103ab620976cb507be8779a53224d31d2a1f227%22%29&limit=100&order=desc&sort=runningVulnsBySev&zones' + ) + else: + return Image( + hash = '62e348b71acd7be14a4bdfcc', + name = 'prometheus-server', + type = 'Container', + pull_string = 'quay.io/prometheus/prometheus:v2.49.1', + vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + in_use_vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + vm_api_endpoint = '/api/scanning/runtime/v2/workflows/results?cursor&filter=freeText%20in%20%28%222cfced35cf83d6cdcdcd2f4ac103ab620976cb507be8779a53224d31d2a1f227%22%29&limit=100&order=desc&sort=runningVulnsBySev&zones', + ) + """ + + def testImage(self): + """Test Image""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_creation_date_with_age.py b/test/test_image_config_creation_date_with_age.py new file mode 100644 index 00000000..eb4dfaa3 --- /dev/null +++ b/test/test_image_config_creation_date_with_age.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_creation_date_with_age import ImageConfigCreationDateWithAge + + +class TestImageConfigCreationDateWithAge(unittest.TestCase): + """ImageConfigCreationDateWithAge unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigCreationDateWithAge: + """Test ImageConfigCreationDateWithAge + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigCreationDateWithAge` + """ + model = ImageConfigCreationDateWithAge() + if include_optional: + return ImageConfigCreationDateWithAge( + type = 'imageConfigCreationDateWithAge', + extra = sysdig_client.models.image_config_creation_date_with_age_extra.ImageConfigCreationDateWithAge_extra( + key = 1, ) + ) + else: + return ImageConfigCreationDateWithAge( + type = 'imageConfigCreationDateWithAge', + extra = sysdig_client.models.image_config_creation_date_with_age_extra.ImageConfigCreationDateWithAge_extra( + key = 1, ), + ) + """ + + def testImageConfigCreationDateWithAge(self): + """Test ImageConfigCreationDateWithAge""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_creation_date_with_age_extra.py b/test/test_image_config_creation_date_with_age_extra.py new file mode 100644 index 00000000..d3f40556 --- /dev/null +++ b/test/test_image_config_creation_date_with_age_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_creation_date_with_age_extra import ImageConfigCreationDateWithAgeExtra + + +class TestImageConfigCreationDateWithAgeExtra(unittest.TestCase): + """ImageConfigCreationDateWithAgeExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigCreationDateWithAgeExtra: + """Test ImageConfigCreationDateWithAgeExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigCreationDateWithAgeExtra` + """ + model = ImageConfigCreationDateWithAgeExtra() + if include_optional: + return ImageConfigCreationDateWithAgeExtra( + key = 1 + ) + else: + return ImageConfigCreationDateWithAgeExtra( + ) + """ + + def testImageConfigCreationDateWithAgeExtra(self): + """Test ImageConfigCreationDateWithAgeExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_default_user_is_not.py b/test/test_image_config_default_user_is_not.py new file mode 100644 index 00000000..a7f996b1 --- /dev/null +++ b/test/test_image_config_default_user_is_not.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_default_user_is_not import ImageConfigDefaultUserIsNot + + +class TestImageConfigDefaultUserIsNot(unittest.TestCase): + """ImageConfigDefaultUserIsNot unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigDefaultUserIsNot: + """Test ImageConfigDefaultUserIsNot + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigDefaultUserIsNot` + """ + model = ImageConfigDefaultUserIsNot() + if include_optional: + return ImageConfigDefaultUserIsNot( + type = 'imageConfigDefaultUserIsNot', + extra = sysdig_client.models.image_config_default_user_is_not_extra.ImageConfigDefaultUserIsNot_extra( + user = 'root', ) + ) + else: + return ImageConfigDefaultUserIsNot( + type = 'imageConfigDefaultUserIsNot', + extra = sysdig_client.models.image_config_default_user_is_not_extra.ImageConfigDefaultUserIsNot_extra( + user = 'root', ), + ) + """ + + def testImageConfigDefaultUserIsNot(self): + """Test ImageConfigDefaultUserIsNot""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_default_user_is_not_extra.py b/test/test_image_config_default_user_is_not_extra.py new file mode 100644 index 00000000..f4714f97 --- /dev/null +++ b/test/test_image_config_default_user_is_not_extra.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_default_user_is_not_extra import ImageConfigDefaultUserIsNotExtra + + +class TestImageConfigDefaultUserIsNotExtra(unittest.TestCase): + """ImageConfigDefaultUserIsNotExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigDefaultUserIsNotExtra: + """Test ImageConfigDefaultUserIsNotExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigDefaultUserIsNotExtra` + """ + model = ImageConfigDefaultUserIsNotExtra() + if include_optional: + return ImageConfigDefaultUserIsNotExtra( + user = 'root' + ) + else: + return ImageConfigDefaultUserIsNotExtra( + user = 'root', + ) + """ + + def testImageConfigDefaultUserIsNotExtra(self): + """Test ImageConfigDefaultUserIsNotExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_default_user_is_root.py b/test/test_image_config_default_user_is_root.py new file mode 100644 index 00000000..3b7172ad --- /dev/null +++ b/test/test_image_config_default_user_is_root.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_default_user_is_root import ImageConfigDefaultUserIsRoot + + +class TestImageConfigDefaultUserIsRoot(unittest.TestCase): + """ImageConfigDefaultUserIsRoot unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigDefaultUserIsRoot: + """Test ImageConfigDefaultUserIsRoot + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigDefaultUserIsRoot` + """ + model = ImageConfigDefaultUserIsRoot() + if include_optional: + return ImageConfigDefaultUserIsRoot( + type = 'imageConfigDefaultUserIsRoot' + ) + else: + return ImageConfigDefaultUserIsRoot( + type = 'imageConfigDefaultUserIsRoot', + ) + """ + + def testImageConfigDefaultUserIsRoot(self): + """Test ImageConfigDefaultUserIsRoot""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_default_user_list.py b/test/test_image_config_default_user_list.py new file mode 100644 index 00000000..b49b0bea --- /dev/null +++ b/test/test_image_config_default_user_list.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_default_user_list import ImageConfigDefaultUserList + + +class TestImageConfigDefaultUserList(unittest.TestCase): + """ImageConfigDefaultUserList unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigDefaultUserList: + """Test ImageConfigDefaultUserList + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigDefaultUserList` + """ + model = ImageConfigDefaultUserList() + if include_optional: + return ImageConfigDefaultUserList( + type = 'imageConfigDefaultUserList', + extra = sysdig_client.models.image_config_default_user_list_extra.ImageConfigDefaultUserList_extra( + operator = 'IN', + users = ["root","admin"], ) + ) + else: + return ImageConfigDefaultUserList( + type = 'imageConfigDefaultUserList', + extra = sysdig_client.models.image_config_default_user_list_extra.ImageConfigDefaultUserList_extra( + operator = 'IN', + users = ["root","admin"], ), + ) + """ + + def testImageConfigDefaultUserList(self): + """Test ImageConfigDefaultUserList""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_default_user_list_extra.py b/test/test_image_config_default_user_list_extra.py new file mode 100644 index 00000000..cb054448 --- /dev/null +++ b/test/test_image_config_default_user_list_extra.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_default_user_list_extra import ImageConfigDefaultUserListExtra + + +class TestImageConfigDefaultUserListExtra(unittest.TestCase): + """ImageConfigDefaultUserListExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigDefaultUserListExtra: + """Test ImageConfigDefaultUserListExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigDefaultUserListExtra` + """ + model = ImageConfigDefaultUserListExtra() + if include_optional: + return ImageConfigDefaultUserListExtra( + operator = 'IN', + users = ["root","admin"] + ) + else: + return ImageConfigDefaultUserListExtra( + operator = 'IN', + users = ["root","admin"], + ) + """ + + def testImageConfigDefaultUserListExtra(self): + """Test ImageConfigDefaultUserListExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_env_variable_contains.py b/test/test_image_config_env_variable_contains.py new file mode 100644 index 00000000..9c730b6f --- /dev/null +++ b/test/test_image_config_env_variable_contains.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_env_variable_contains import ImageConfigEnvVariableContains + + +class TestImageConfigEnvVariableContains(unittest.TestCase): + """ImageConfigEnvVariableContains unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigEnvVariableContains: + """Test ImageConfigEnvVariableContains + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigEnvVariableContains` + """ + model = ImageConfigEnvVariableContains() + if include_optional: + return ImageConfigEnvVariableContains( + type = 'imageConfigEnvVariableContains', + extra = sysdig_client.models.image_config_env_variable_contains_extra.ImageConfigEnvVariableContains_extra( + key = 'ENV_VAR', + value = 'VALUE', ) + ) + else: + return ImageConfigEnvVariableContains( + type = 'imageConfigEnvVariableContains', + extra = sysdig_client.models.image_config_env_variable_contains_extra.ImageConfigEnvVariableContains_extra( + key = 'ENV_VAR', + value = 'VALUE', ), + ) + """ + + def testImageConfigEnvVariableContains(self): + """Test ImageConfigEnvVariableContains""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_env_variable_contains_extra.py b/test/test_image_config_env_variable_contains_extra.py new file mode 100644 index 00000000..818fca59 --- /dev/null +++ b/test/test_image_config_env_variable_contains_extra.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_env_variable_contains_extra import ImageConfigEnvVariableContainsExtra + + +class TestImageConfigEnvVariableContainsExtra(unittest.TestCase): + """ImageConfigEnvVariableContainsExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigEnvVariableContainsExtra: + """Test ImageConfigEnvVariableContainsExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigEnvVariableContainsExtra` + """ + model = ImageConfigEnvVariableContainsExtra() + if include_optional: + return ImageConfigEnvVariableContainsExtra( + key = 'ENV_VAR', + value = 'VALUE' + ) + else: + return ImageConfigEnvVariableContainsExtra( + key = 'ENV_VAR', + ) + """ + + def testImageConfigEnvVariableContainsExtra(self): + """Test ImageConfigEnvVariableContainsExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_env_variable_exists.py b/test/test_image_config_env_variable_exists.py new file mode 100644 index 00000000..78ac09cf --- /dev/null +++ b/test/test_image_config_env_variable_exists.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_env_variable_exists import ImageConfigEnvVariableExists + + +class TestImageConfigEnvVariableExists(unittest.TestCase): + """ImageConfigEnvVariableExists unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigEnvVariableExists: + """Test ImageConfigEnvVariableExists + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigEnvVariableExists` + """ + model = ImageConfigEnvVariableExists() + if include_optional: + return ImageConfigEnvVariableExists( + type = 'imageConfigEnvVariableExists', + extra = sysdig_client.models.image_config_env_variable_exists_extra.ImageConfigEnvVariableExists_extra( + key = 'ENV_VAR', ) + ) + else: + return ImageConfigEnvVariableExists( + type = 'imageConfigEnvVariableExists', + extra = sysdig_client.models.image_config_env_variable_exists_extra.ImageConfigEnvVariableExists_extra( + key = 'ENV_VAR', ), + ) + """ + + def testImageConfigEnvVariableExists(self): + """Test ImageConfigEnvVariableExists""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_env_variable_exists_extra.py b/test/test_image_config_env_variable_exists_extra.py new file mode 100644 index 00000000..afc769a2 --- /dev/null +++ b/test/test_image_config_env_variable_exists_extra.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_env_variable_exists_extra import ImageConfigEnvVariableExistsExtra + + +class TestImageConfigEnvVariableExistsExtra(unittest.TestCase): + """ImageConfigEnvVariableExistsExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigEnvVariableExistsExtra: + """Test ImageConfigEnvVariableExistsExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigEnvVariableExistsExtra` + """ + model = ImageConfigEnvVariableExistsExtra() + if include_optional: + return ImageConfigEnvVariableExistsExtra( + key = 'ENV_VAR' + ) + else: + return ImageConfigEnvVariableExistsExtra( + key = 'ENV_VAR', + ) + """ + + def testImageConfigEnvVariableExistsExtra(self): + """Test ImageConfigEnvVariableExistsExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_env_variable_not_exists.py b/test/test_image_config_env_variable_not_exists.py new file mode 100644 index 00000000..12e97b70 --- /dev/null +++ b/test/test_image_config_env_variable_not_exists.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_env_variable_not_exists import ImageConfigEnvVariableNotExists + + +class TestImageConfigEnvVariableNotExists(unittest.TestCase): + """ImageConfigEnvVariableNotExists unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigEnvVariableNotExists: + """Test ImageConfigEnvVariableNotExists + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigEnvVariableNotExists` + """ + model = ImageConfigEnvVariableNotExists() + if include_optional: + return ImageConfigEnvVariableNotExists( + type = 'imageConfigEnvVariableNotExists', + extra = sysdig_client.models.image_config_env_variable_exists_extra.ImageConfigEnvVariableExists_extra( + key = 'ENV_VAR', ) + ) + else: + return ImageConfigEnvVariableNotExists( + type = 'imageConfigEnvVariableNotExists', + extra = sysdig_client.models.image_config_env_variable_exists_extra.ImageConfigEnvVariableExists_extra( + key = 'ENV_VAR', ), + ) + """ + + def testImageConfigEnvVariableNotExists(self): + """Test ImageConfigEnvVariableNotExists""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_failure.py b/test/test_image_config_failure.py new file mode 100644 index 00000000..b6ff3a04 --- /dev/null +++ b/test/test_image_config_failure.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_failure import ImageConfigFailure + + +class TestImageConfigFailure(unittest.TestCase): + """ImageConfigFailure unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigFailure: + """Test ImageConfigFailure + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigFailure` + """ + model = ImageConfigFailure() + if include_optional: + return ImageConfigFailure( + description = 'failure description', + remediation = 'update image', + arguments = {"version":"1.0"}, + package_ref = 'p-1234123', + vulnerability_ref = 'vuln-12031024120910259', + risk_accept_refs = [ + 'ra-1234123' + ] + ) + else: + return ImageConfigFailure( + remediation = 'update image', + arguments = {"version":"1.0"}, + ) + """ + + def testImageConfigFailure(self): + """Test ImageConfigFailure""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_instruction_is_pkg_manager.py b/test/test_image_config_instruction_is_pkg_manager.py new file mode 100644 index 00000000..21a28fb2 --- /dev/null +++ b/test/test_image_config_instruction_is_pkg_manager.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_instruction_is_pkg_manager import ImageConfigInstructionIsPkgManager + + +class TestImageConfigInstructionIsPkgManager(unittest.TestCase): + """ImageConfigInstructionIsPkgManager unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigInstructionIsPkgManager: + """Test ImageConfigInstructionIsPkgManager + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigInstructionIsPkgManager` + """ + model = ImageConfigInstructionIsPkgManager() + if include_optional: + return ImageConfigInstructionIsPkgManager( + type = 'imageConfigInstructionIsPkgManager' + ) + else: + return ImageConfigInstructionIsPkgManager( + type = 'imageConfigInstructionIsPkgManager', + ) + """ + + def testImageConfigInstructionIsPkgManager(self): + """Test ImageConfigInstructionIsPkgManager""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_instruction_not_recommended.py b/test/test_image_config_instruction_not_recommended.py new file mode 100644 index 00000000..ad25c388 --- /dev/null +++ b/test/test_image_config_instruction_not_recommended.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_instruction_not_recommended import ImageConfigInstructionNotRecommended + + +class TestImageConfigInstructionNotRecommended(unittest.TestCase): + """ImageConfigInstructionNotRecommended unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigInstructionNotRecommended: + """Test ImageConfigInstructionNotRecommended + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigInstructionNotRecommended` + """ + model = ImageConfigInstructionNotRecommended() + if include_optional: + return ImageConfigInstructionNotRecommended( + type = 'imageConfigInstructionNotRecommended' + ) + else: + return ImageConfigInstructionNotRecommended( + type = 'imageConfigInstructionNotRecommended', + ) + """ + + def testImageConfigInstructionNotRecommended(self): + """Test ImageConfigInstructionNotRecommended""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_label_exists.py b/test/test_image_config_label_exists.py new file mode 100644 index 00000000..e341f98c --- /dev/null +++ b/test/test_image_config_label_exists.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_label_exists import ImageConfigLabelExists + + +class TestImageConfigLabelExists(unittest.TestCase): + """ImageConfigLabelExists unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigLabelExists: + """Test ImageConfigLabelExists + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigLabelExists` + """ + model = ImageConfigLabelExists() + if include_optional: + return ImageConfigLabelExists( + type = 'imageConfigLabelExists', + extra = sysdig_client.models.image_config_label_exists_extra.ImageConfigLabelExists_extra( + key = 'test', ) + ) + else: + return ImageConfigLabelExists( + type = 'imageConfigLabelExists', + extra = sysdig_client.models.image_config_label_exists_extra.ImageConfigLabelExists_extra( + key = 'test', ), + ) + """ + + def testImageConfigLabelExists(self): + """Test ImageConfigLabelExists""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_label_exists_extra.py b/test/test_image_config_label_exists_extra.py new file mode 100644 index 00000000..70ed1c4a --- /dev/null +++ b/test/test_image_config_label_exists_extra.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_label_exists_extra import ImageConfigLabelExistsExtra + + +class TestImageConfigLabelExistsExtra(unittest.TestCase): + """ImageConfigLabelExistsExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigLabelExistsExtra: + """Test ImageConfigLabelExistsExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigLabelExistsExtra` + """ + model = ImageConfigLabelExistsExtra() + if include_optional: + return ImageConfigLabelExistsExtra( + key = 'test' + ) + else: + return ImageConfigLabelExistsExtra( + key = 'test', + ) + """ + + def testImageConfigLabelExistsExtra(self): + """Test ImageConfigLabelExistsExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_label_not_contains.py b/test/test_image_config_label_not_contains.py new file mode 100644 index 00000000..92e8873d --- /dev/null +++ b/test/test_image_config_label_not_contains.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_label_not_contains import ImageConfigLabelNotContains + + +class TestImageConfigLabelNotContains(unittest.TestCase): + """ImageConfigLabelNotContains unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigLabelNotContains: + """Test ImageConfigLabelNotContains + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigLabelNotContains` + """ + model = ImageConfigLabelNotContains() + if include_optional: + return ImageConfigLabelNotContains( + type = 'imageConfigLabelNotContains', + extra = sysdig_client.models.image_config_label_not_contains_extra.ImageConfigLabelNotContains_extra( + key = 'label name', + value = 'label value', ) + ) + else: + return ImageConfigLabelNotContains( + type = 'imageConfigLabelNotContains', + extra = sysdig_client.models.image_config_label_not_contains_extra.ImageConfigLabelNotContains_extra( + key = 'label name', + value = 'label value', ), + ) + """ + + def testImageConfigLabelNotContains(self): + """Test ImageConfigLabelNotContains""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_label_not_contains_extra.py b/test/test_image_config_label_not_contains_extra.py new file mode 100644 index 00000000..a65e9115 --- /dev/null +++ b/test/test_image_config_label_not_contains_extra.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_label_not_contains_extra import ImageConfigLabelNotContainsExtra + + +class TestImageConfigLabelNotContainsExtra(unittest.TestCase): + """ImageConfigLabelNotContainsExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigLabelNotContainsExtra: + """Test ImageConfigLabelNotContainsExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigLabelNotContainsExtra` + """ + model = ImageConfigLabelNotContainsExtra() + if include_optional: + return ImageConfigLabelNotContainsExtra( + key = 'label name', + value = 'label value' + ) + else: + return ImageConfigLabelNotContainsExtra( + key = 'label name', + value = 'label value', + ) + """ + + def testImageConfigLabelNotContainsExtra(self): + """Test ImageConfigLabelNotContainsExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_label_not_exists.py b/test/test_image_config_label_not_exists.py new file mode 100644 index 00000000..b8f5b351 --- /dev/null +++ b/test/test_image_config_label_not_exists.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_label_not_exists import ImageConfigLabelNotExists + + +class TestImageConfigLabelNotExists(unittest.TestCase): + """ImageConfigLabelNotExists unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigLabelNotExists: + """Test ImageConfigLabelNotExists + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigLabelNotExists` + """ + model = ImageConfigLabelNotExists() + if include_optional: + return ImageConfigLabelNotExists( + type = 'imageConfigLabelNotExists', + extra = sysdig_client.models.image_config_label_not_exists_extra.ImageConfigLabelNotExists_extra( + key = 'label name', ) + ) + else: + return ImageConfigLabelNotExists( + type = 'imageConfigLabelNotExists', + extra = sysdig_client.models.image_config_label_not_exists_extra.ImageConfigLabelNotExists_extra( + key = 'label name', ), + ) + """ + + def testImageConfigLabelNotExists(self): + """Test ImageConfigLabelNotExists""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_label_not_exists_extra.py b/test/test_image_config_label_not_exists_extra.py new file mode 100644 index 00000000..26304060 --- /dev/null +++ b/test/test_image_config_label_not_exists_extra.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_label_not_exists_extra import ImageConfigLabelNotExistsExtra + + +class TestImageConfigLabelNotExistsExtra(unittest.TestCase): + """ImageConfigLabelNotExistsExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigLabelNotExistsExtra: + """Test ImageConfigLabelNotExistsExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigLabelNotExistsExtra` + """ + model = ImageConfigLabelNotExistsExtra() + if include_optional: + return ImageConfigLabelNotExistsExtra( + key = 'label name' + ) + else: + return ImageConfigLabelNotExistsExtra( + key = 'label name', + ) + """ + + def testImageConfigLabelNotExistsExtra(self): + """Test ImageConfigLabelNotExistsExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_config_sensitive_information_and_secrets.py b/test/test_image_config_sensitive_information_and_secrets.py new file mode 100644 index 00000000..6a22aefa --- /dev/null +++ b/test/test_image_config_sensitive_information_and_secrets.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_config_sensitive_information_and_secrets import ImageConfigSensitiveInformationAndSecrets + + +class TestImageConfigSensitiveInformationAndSecrets(unittest.TestCase): + """ImageConfigSensitiveInformationAndSecrets unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageConfigSensitiveInformationAndSecrets: + """Test ImageConfigSensitiveInformationAndSecrets + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageConfigSensitiveInformationAndSecrets` + """ + model = ImageConfigSensitiveInformationAndSecrets() + if include_optional: + return ImageConfigSensitiveInformationAndSecrets( + type = 'imageConfigSensitiveInformationAndSecrets' + ) + else: + return ImageConfigSensitiveInformationAndSecrets( + type = 'imageConfigSensitiveInformationAndSecrets', + ) + """ + + def testImageConfigSensitiveInformationAndSecrets(self): + """Test ImageConfigSensitiveInformationAndSecrets""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_metadata.py b/test/test_image_metadata.py new file mode 100644 index 00000000..2e079d5b --- /dev/null +++ b/test/test_image_metadata.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_metadata import ImageMetadata + + +class TestImageMetadata(unittest.TestCase): + """ImageMetadata unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageMetadata: + """Test ImageMetadata + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageMetadata` + """ + model = ImageMetadata() + if include_optional: + return ImageMetadata( + pull_string = 'nginx:latest', + image_id = 'sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182', + digest = 'sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182', + base_os = 'debian', + size = 10240, + os = 'debian', + architecture = 'arm64', + labels = {"key":"value"}, + author = 'sysdig', + created_at = '2024-01-22T08:51:46.016464Z' + ) + else: + return ImageMetadata( + pull_string = 'nginx:latest', + image_id = 'sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182', + base_os = 'debian', + size = 10240, + os = 'debian', + created_at = '2024-01-22T08:51:46.016464Z', + ) + """ + + def testImageMetadata(self): + """Test ImageMetadata""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_name.py b/test/test_image_name.py new file mode 100644 index 00000000..38380746 --- /dev/null +++ b/test/test_image_name.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_name import ImageName + + +class TestImageName(unittest.TestCase): + """ImageName unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageName: + """Test ImageName + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageName` + """ + model = ImageName() + if include_optional: + return ImageName( + context_type = 'imageName', + context_value = 'latest' + ) + else: + return ImageName( + ) + """ + + def testImageName(self): + """Test ImageName""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_name_contains.py b/test/test_image_name_contains.py new file mode 100644 index 00000000..04554ed7 --- /dev/null +++ b/test/test_image_name_contains.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_name_contains import ImageNameContains + + +class TestImageNameContains(unittest.TestCase): + """ImageNameContains unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageNameContains: + """Test ImageNameContains + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageNameContains` + """ + model = ImageNameContains() + if include_optional: + return ImageNameContains( + context_type = 'imageNameContains', + context_value = '.io/test' + ) + else: + return ImageNameContains( + ) + """ + + def testImageNameContains(self): + """Test ImageNameContains""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_prefix.py b/test/test_image_prefix.py new file mode 100644 index 00000000..ea129bb4 --- /dev/null +++ b/test/test_image_prefix.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_prefix import ImagePrefix + + +class TestImagePrefix(unittest.TestCase): + """ImagePrefix unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImagePrefix: + """Test ImagePrefix + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImagePrefix` + """ + model = ImagePrefix() + if include_optional: + return ImagePrefix( + context_type = 'imagePrefix', + context_value = 'quay.io/testedImages' + ) + else: + return ImagePrefix( + ) + """ + + def testImagePrefix(self): + """Test ImagePrefix""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_image_suffix.py b/test/test_image_suffix.py new file mode 100644 index 00000000..2728e2d9 --- /dev/null +++ b/test/test_image_suffix.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.image_suffix import ImageSuffix + + +class TestImageSuffix(unittest.TestCase): + """ImageSuffix unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ImageSuffix: + """Test ImageSuffix + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ImageSuffix` + """ + model = ImageSuffix() + if include_optional: + return ImageSuffix( + context_type = 'imageSuffix', + context_value = 'test:latest' + ) + else: + return ImageSuffix( + ) + """ + + def testImageSuffix(self): + """Test ImageSuffix""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_inhibition_rule_response_v1.py b/test/test_inhibition_rule_response_v1.py new file mode 100644 index 00000000..ca9c66d7 --- /dev/null +++ b/test/test_inhibition_rule_response_v1.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.inhibition_rule_response_v1 import InhibitionRuleResponseV1 + + +class TestInhibitionRuleResponseV1(unittest.TestCase): + """InhibitionRuleResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InhibitionRuleResponseV1: + """Test InhibitionRuleResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `InhibitionRuleResponseV1` + """ + model = InhibitionRuleResponseV1() + if include_optional: + return InhibitionRuleResponseV1( + id = 1, + version = 1, + created_on = '2017-07-21T17:32:28Z', + modified_on = '2017-07-21T17:32:28Z', + customer_id = 12, + team_id = 13, + is_enabled = False, + name = 'this is an example name', + description = 'this is an example description', + source_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + target_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + equal = [ + 'myLabel' + ] + ) + else: + return InhibitionRuleResponseV1( + ) + """ + + def testInhibitionRuleResponseV1(self): + """Test InhibitionRuleResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_inhibition_rules_api.py b/test/test_inhibition_rules_api.py new file mode 100644 index 00000000..2217d9de --- /dev/null +++ b/test/test_inhibition_rules_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.inhibition_rules_api import InhibitionRulesApi + + +class TestInhibitionRulesApi(unittest.TestCase): + """InhibitionRulesApi unit test stubs""" + + def setUp(self) -> None: + self.api = InhibitionRulesApi() + + def tearDown(self) -> None: + pass + + def test_create_inhibition_rule(self) -> None: + """Test case for create_inhibition_rule + + Create Inhibition Rule + """ + pass + + def test_delete_inhibition_rule_by_id(self) -> None: + """Test case for delete_inhibition_rule_by_id + + Delete Inhibition Rule + """ + pass + + def test_get_inhibition_rule_by_id(self) -> None: + """Test case for get_inhibition_rule_by_id + + Get Inhibition Rule + """ + pass + + def test_get_inhibition_rules(self) -> None: + """Test case for get_inhibition_rules + + List Inhibition Rules + """ + pass + + def test_update_inhibition_rule(self) -> None: + """Test case for update_inhibition_rule + + Update Inhibition Rule + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_integration_channel.py b/test/test_integration_channel.py new file mode 100644 index 00000000..86fc879e --- /dev/null +++ b/test/test_integration_channel.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.integration_channel import IntegrationChannel + + +class TestIntegrationChannel(unittest.TestCase): + """IntegrationChannel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testIntegrationChannel(self): + """Test IntegrationChannel""" + # inst = IntegrationChannel() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_integration_channels_response.py b/test/test_integration_channels_response.py new file mode 100644 index 00000000..fd2ebdd6 --- /dev/null +++ b/test/test_integration_channels_response.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.integration_channels_response import IntegrationChannelsResponse + + +class TestIntegrationChannelsResponse(unittest.TestCase): + """IntegrationChannelsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IntegrationChannelsResponse: + """Test IntegrationChannelsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IntegrationChannelsResponse` + """ + model = IntegrationChannelsResponse() + if include_optional: + return IntegrationChannelsResponse( + data = ["SECURE_EVENTS_POLICIES","ACTIVITY_AUDIT"] + ) + else: + return IntegrationChannelsResponse( + data = ["SECURE_EVENTS_POLICIES","ACTIVITY_AUDIT"], + ) + """ + + def testIntegrationChannelsResponse(self): + """Test IntegrationChannelsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_integration_response.py b/test/test_integration_response.py new file mode 100644 index 00000000..21e9e0e6 --- /dev/null +++ b/test/test_integration_response.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.integration_response import IntegrationResponse + + +class TestIntegrationResponse(unittest.TestCase): + """IntegrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IntegrationResponse: + """Test IntegrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IntegrationResponse` + """ + model = IntegrationResponse() + if include_optional: + return IntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.webhook.Webhook( + endpoint = 'https://endpoint.mydomain.com', + is_insecure = False, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + output = 'json', + timestamp_format = 'nanoseconds', + auth = 'BASIC_AUTH', + certificate_id = 1, ) + ) + else: + return IntegrationResponse( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + id = 1, + connection_info = sysdig_client.models.webhook.Webhook( + endpoint = 'https://endpoint.mydomain.com', + is_insecure = False, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + output = 'json', + timestamp_format = 'nanoseconds', + auth = 'BASIC_AUTH', + certificate_id = 1, ), + ) + """ + + def testIntegrationResponse(self): + """Test IntegrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_integration_response_v1.py b/test/test_integration_response_v1.py new file mode 100644 index 00000000..3e515a41 --- /dev/null +++ b/test/test_integration_response_v1.py @@ -0,0 +1,141 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.integration_response_v1 import IntegrationResponseV1 + + +class TestIntegrationResponseV1(unittest.TestCase): + """IntegrationResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IntegrationResponseV1: + """Test IntegrationResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IntegrationResponseV1` + """ + model = IntegrationResponseV1() + if include_optional: + return IntegrationResponseV1( + id = 1, + name = 'name', + created_at = '2023-09-06T12:30:45Z', + modified_at = '2023-09-06T12:30:45Z', + deleted_at = '2023-09-06T12:30:45Z', + customer_id = 1, + is_enabled = False, + is_valid = False, + is_all_teams = False, + team_ids = [ + 1 + ], + jira_project_id = '10000', + jira_project_name = 'jira-project-name', + jira_url = 'https://atlassian-url.com', + jira_email = 'jira.user@email.com', + jira_assignee = '5b10ac8d82e05b22cc7d4ef5', + jira_labels = [ + 'label' + ], + parent_issue_type = sysdig_client.models.jira_issue_type_response_v1.Jira Issue Type Response V1( + id = null, + jira_id = '1', + jira_name = 'jira-name', + jira_hierarchy_level = 1, + jira_open_status_id = '1000', + jira_in_progress_status_id = '1001', + jira_closed_status_id = '1002', + standard_fields = [ + sysdig_client.models.jira_issue_type_field_response_v1.Jira Issue Type Field Response V1( + id = null, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, + allowed_values = [ + null + ], ) + ], + custom_fields = [ + sysdig_client.models.jira_issue_type_field_response_v1.Jira Issue Type Field Response V1( + id = null, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, ) + ], ), + child_issue_type = sysdig_client.models.jira_issue_type_response_v1.Jira Issue Type Response V1( + id = null, + jira_id = '1', + jira_name = 'jira-name', + jira_hierarchy_level = 1, + jira_open_status_id = '1000', + jira_in_progress_status_id = '1001', + jira_closed_status_id = '1002', + standard_fields = [ + sysdig_client.models.jira_issue_type_field_response_v1.Jira Issue Type Field Response V1( + id = null, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, + allowed_values = [ + null + ], ) + ], + custom_fields = [ + sysdig_client.models.jira_issue_type_field_response_v1.Jira Issue Type Field Response V1( + id = null, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, ) + ], ) + ) + else: + return IntegrationResponseV1( + id = 1, + name = 'name', + created_at = '2023-09-06T12:30:45Z', + modified_at = '2023-09-06T12:30:45Z', + customer_id = 1, + is_enabled = False, + is_valid = False, + is_all_teams = False, + jira_project_id = '10000', + jira_url = 'https://atlassian-url.com', + jira_email = 'jira.user@email.com', + ) + """ + + def testIntegrationResponseV1(self): + """Test IntegrationResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_integration_type.py b/test/test_integration_type.py new file mode 100644 index 00000000..d276a4fe --- /dev/null +++ b/test/test_integration_type.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.integration_type import IntegrationType + + +class TestIntegrationType(unittest.TestCase): + """IntegrationType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testIntegrationType(self): + """Test IntegrationType""" + # inst = IntegrationType() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_integration_types_response.py b/test/test_integration_types_response.py new file mode 100644 index 00000000..5b9e147a --- /dev/null +++ b/test/test_integration_types_response.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.integration_types_response import IntegrationTypesResponse + + +class TestIntegrationTypesResponse(unittest.TestCase): + """IntegrationTypesResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IntegrationTypesResponse: + """Test IntegrationTypesResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IntegrationTypesResponse` + """ + model = IntegrationTypesResponse() + if include_optional: + return IntegrationTypesResponse( + data = [ + 'SYSLOG' + ] + ) + else: + return IntegrationTypesResponse( + data = [ + 'SYSLOG' + ], + ) + """ + + def testIntegrationTypesResponse(self): + """Test IntegrationTypesResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_invalid_certificate.py b/test/test_invalid_certificate.py new file mode 100644 index 00000000..9290bf55 --- /dev/null +++ b/test/test_invalid_certificate.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.invalid_certificate import InvalidCertificate + + +class TestInvalidCertificate(unittest.TestCase): + """InvalidCertificate unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InvalidCertificate: + """Test InvalidCertificate + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `InvalidCertificate` + """ + model = InvalidCertificate() + if include_optional: + return InvalidCertificate( + type = 'parsing_error', + message = 'could not parse the provided certificate', + details = [ + null + ] + ) + else: + return InvalidCertificate( + type = 'parsing_error', + message = 'could not parse the provided certificate', + ) + """ + + def testInvalidCertificate(self): + """Test InvalidCertificate""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_invalid_request.py b/test/test_invalid_request.py new file mode 100644 index 00000000..13e0bd75 --- /dev/null +++ b/test/test_invalid_request.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.invalid_request import InvalidRequest + + +class TestInvalidRequest(unittest.TestCase): + """InvalidRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InvalidRequest: + """Test InvalidRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `InvalidRequest` + """ + model = InvalidRequest() + if include_optional: + return InvalidRequest( + type = 'parsing_error', + message = 'could not parse the provided certificate', + details = [ + null + ] + ) + else: + return InvalidRequest( + type = 'parsing_error', + message = 'could not parse the provided certificate', + ) + """ + + def testInvalidRequest(self): + """Test InvalidRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_invalid_request1.py b/test/test_invalid_request1.py new file mode 100644 index 00000000..045d993e --- /dev/null +++ b/test/test_invalid_request1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.invalid_request1 import InvalidRequest1 + + +class TestInvalidRequest1(unittest.TestCase): + """InvalidRequest1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InvalidRequest1: + """Test InvalidRequest1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `InvalidRequest1` + """ + model = InvalidRequest1() + if include_optional: + return InvalidRequest1( + type = 'missing_required_parameter', + message = 'Missing required parameter', + details = [ + null + ] + ) + else: + return InvalidRequest1( + type = 'missing_required_parameter', + message = 'Missing required parameter', + ) + """ + + def testInvalidRequest1(self): + """Test InvalidRequest1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_inventory_api.py b/test/test_inventory_api.py new file mode 100644 index 00000000..13ef0e1d --- /dev/null +++ b/test/test_inventory_api.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.inventory_api import InventoryApi + + +class TestInventoryApi(unittest.TestCase): + """InventoryApi unit test stubs""" + + def setUp(self) -> None: + self.api = InventoryApi() + + def tearDown(self) -> None: + pass + + def test_get_resource(self) -> None: + """Test case for get_resource + + Get Resource + """ + pass + + def test_get_resources(self) -> None: + """Test case for get_resources + + List Resources + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_inventory_page.py b/test/test_inventory_page.py new file mode 100644 index 00000000..066b64a7 --- /dev/null +++ b/test/test_inventory_page.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.inventory_page import InventoryPage + + +class TestInventoryPage(unittest.TestCase): + """InventoryPage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InventoryPage: + """Test InventoryPage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `InventoryPage` + """ + model = InventoryPage() + if include_optional: + return InventoryPage( + next = 3, + previous = 1, + total = 5 + ) + else: + return InventoryPage( + total = 5, + ) + """ + + def testInventoryPage(self): + """Test InventoryPage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_inventory_resource.py b/test/test_inventory_resource.py new file mode 100644 index 00000000..bf1224c8 --- /dev/null +++ b/test/test_inventory_resource.py @@ -0,0 +1,118 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.inventory_resource import InventoryResource + + +class TestInventoryResource(unittest.TestCase): + """InventoryResource unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InventoryResource: + """Test InventoryResource + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `InventoryResource` + """ + model = InventoryResource() + if include_optional: + return InventoryResource( + hash = '62e348b71acd7be14a4bdfcc', + name = 'kube-proxy', + platform = 'Kubernetes', + type = 'DaemonSet', + category = 'Compute', + last_seen = 1660742138, + is_exposed = True, + validated_exposure = True, + labels = [ + 'env:Prod' + ], + metadata = {"cluster":"risks-aws-eks-liverisks","containerNames":["kube-proxy"],"distribution":"EKS","distributionVersion":"1.29","imagesCount":"1","namespace":"kube-system","pullStrings":["602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/kube-proxy:v1.29.0-minimal-eksbuild.1"]}, + resource_origin = 'Deployed', + posture_policy_summary = sysdig_client.models.posture_policy_summary.PosturePolicySummary( + pass_percentage = 0, + policies = [ + sysdig_client.models.policies_summary_entry.PoliciesSummaryEntry( + id = 2, + name = 'Sysdig Kubernetes', + is_passed = False, ) + ], ), + vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + in_use_vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + zones = [ + sysdig_client.models.inventory_zone.InventoryZone( + id = 1, + name = 'Entire Infrastructure', ) + ], + config_api_endpoint = '/api/cspm/v1/kube/resource?resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet', + posture_control_summary_api_endpoint = '/api/cspm/v1/kube/resource?fields=posturecontrolsummary%2Chash%2Cname%2Cplatform%2Ctype%2Cmetadata%2Cresourceorigin%2Ccategory%2Clastseen&resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet', + vm_api_endpoint = '/api/scanning/runtime/v2/workflows/results?cursor&filter=freeText%20in%20%28%222cfced35cf83d6cdcdcd2f4ac103ab620976cb507be8779a53224d31d2a1f227%22%29&limit=100&order=desc&sort=runningVulnsBySev&zones', + container_info = [ + sysdig_client.models.container_info.ContainerInfo( + pod_name = 'nginx', + container_id = '1b883a5d-06c7-4e90-9973-d42d9889de27', + container_name = 'my-app', + pull_string = 'redis/redis:1.0.0', ) + ] + ) + else: + return InventoryResource( + hash = '62e348b71acd7be14a4bdfcc', + name = 'kube-proxy', + platform = 'Kubernetes', + type = 'DaemonSet', + category = 'Compute', + last_seen = 1660742138, + labels = [ + 'env:Prod' + ], + metadata = {"cluster":"risks-aws-eks-liverisks","containerNames":["kube-proxy"],"distribution":"EKS","distributionVersion":"1.29","imagesCount":"1","namespace":"kube-system","pullStrings":["602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/kube-proxy:v1.29.0-minimal-eksbuild.1"]}, + resource_origin = 'Deployed', + zones = [ + sysdig_client.models.inventory_zone.InventoryZone( + id = 1, + name = 'Entire Infrastructure', ) + ], + ) + """ + + def testInventoryResource(self): + """Test InventoryResource""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_inventory_resource_extended.py b/test/test_inventory_resource_extended.py new file mode 100644 index 00000000..687751f3 --- /dev/null +++ b/test/test_inventory_resource_extended.py @@ -0,0 +1,140 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.inventory_resource_extended import InventoryResourceExtended + + +class TestInventoryResourceExtended(unittest.TestCase): + """InventoryResourceExtended unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InventoryResourceExtended: + """Test InventoryResourceExtended + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `InventoryResourceExtended` + """ + model = InventoryResourceExtended() + if include_optional: + return InventoryResourceExtended( + hash = '62e348b71acd7be14a4bdfcc', + name = 'kube-proxy', + platform = 'Kubernetes', + type = 'DaemonSet', + category = 'Compute', + last_seen = 1660742138, + is_exposed = True, + validated_exposure = True, + labels = [ + 'env:Prod' + ], + metadata = {cluster=risks-aws-eks-liverisks, containerNames=[kube-proxy], distribution=EKS, distributionVersion=1.29, imagesCount=1, namespace=kube-system, pullStrings=[602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/kube-proxy:v1.29.0-minimal-eksbuild.1]}, + resource_origin = 'Deployed', + posture_policy_summary = sysdig_client.models.posture_policy_summary.PosturePolicySummary( + pass_percentage = 0, + policies = [ + sysdig_client.models.policies_summary_entry.PoliciesSummaryEntry( + id = 2, + name = 'Sysdig Kubernetes', + is_passed = False, ) + ], ), + vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + in_use_vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + zones = [ + sysdig_client.models.inventory_zone.InventoryZone( + id = 1, + name = 'Entire Infrastructure', ) + ], + config_api_endpoint = '/api/cspm/v1/kube/resource?resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet', + posture_control_summary_api_endpoint = '/api/cspm/v1/kube/resource?fields=posturecontrolsummary%2Chash%2Cname%2Cplatform%2Ctype%2Cmetadata%2Cresourceorigin%2Ccategory%2Clastseen&resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet', + vm_api_endpoint = '/api/scanning/runtime/v2/workflows/results?cursor&filter=freeText%20in%20%28%222cfced35cf83d6cdcdcd2f4ac103ab620976cb507be8779a53224d31d2a1f227%22%29&limit=100&order=desc&sort=runningVulnsBySev&zones', + container_info = [ + sysdig_client.models.container_info.ContainerInfo( + pod_name = 'nginx', + container_id = '1b883a5d-06c7-4e90-9973-d42d9889de27', + container_name = 'my-app', + pull_string = 'redis/redis:1.0.0', ) + ], + image_summary = [ + sysdig_client.models.image.Image( + hash = '62e348b71acd7be14a4bdfcc', + name = 'prometheus-server', + type = 'Container', + pull_string = 'quay.io/prometheus/prometheus:v2.49.1', + vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + in_use_vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + vm_api_endpoint = '/api/scanning/runtime/v2/workflows/results?cursor&filter=freeText%20in%20%28%222cfced35cf83d6cdcdcd2f4ac103ab620976cb507be8779a53224d31d2a1f227%22%29&limit=100&order=desc&sort=runningVulnsBySev&zones', ) + ] + ) + else: + return InventoryResourceExtended( + hash = '62e348b71acd7be14a4bdfcc', + name = 'kube-proxy', + platform = 'Kubernetes', + type = 'DaemonSet', + category = 'Compute', + last_seen = 1660742138, + labels = [ + 'env:Prod' + ], + metadata = {cluster=risks-aws-eks-liverisks, containerNames=[kube-proxy], distribution=EKS, distributionVersion=1.29, imagesCount=1, namespace=kube-system, pullStrings=[602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/kube-proxy:v1.29.0-minimal-eksbuild.1]}, + resource_origin = 'Deployed', + zones = [ + sysdig_client.models.inventory_zone.InventoryZone( + id = 1, + name = 'Entire Infrastructure', ) + ], + ) + """ + + def testInventoryResourceExtended(self): + """Test InventoryResourceExtended""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_inventory_resource_response.py b/test/test_inventory_resource_response.py new file mode 100644 index 00000000..40a08ab2 --- /dev/null +++ b/test/test_inventory_resource_response.py @@ -0,0 +1,166 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.inventory_resource_response import InventoryResourceResponse + + +class TestInventoryResourceResponse(unittest.TestCase): + """InventoryResourceResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InventoryResourceResponse: + """Test InventoryResourceResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `InventoryResourceResponse` + """ + model = InventoryResourceResponse() + if include_optional: + return InventoryResourceResponse( + data = [ + sysdig_client.models.inventory_resource.InventoryResource( + hash = '62e348b71acd7be14a4bdfcc', + name = 'kube-proxy', + platform = 'Kubernetes', + type = 'DaemonSet', + category = 'Compute', + last_seen = 1660742138, + is_exposed = True, + validated_exposure = True, + labels = [ + 'env:Prod' + ], + metadata = {"cluster":"risks-aws-eks-liverisks","containerNames":["kube-proxy"],"distribution":"EKS","distributionVersion":"1.29","imagesCount":"1","namespace":"kube-system","pullStrings":["602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/kube-proxy:v1.29.0-minimal-eksbuild.1"]}, + resource_origin = 'Deployed', + posture_policy_summary = sysdig_client.models.posture_policy_summary.PosturePolicySummary( + pass_percentage = 0, + policies = [ + sysdig_client.models.policies_summary_entry.PoliciesSummaryEntry( + id = 2, + name = 'Sysdig Kubernetes', + is_passed = False, ) + ], ), + vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + in_use_vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + zones = [ + sysdig_client.models.inventory_zone.InventoryZone( + id = 1, + name = 'Entire Infrastructure', ) + ], + config_api_endpoint = '/api/cspm/v1/kube/resource?resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet', + posture_control_summary_api_endpoint = '/api/cspm/v1/kube/resource?fields=posturecontrolsummary%2Chash%2Cname%2Cplatform%2Ctype%2Cmetadata%2Cresourceorigin%2Ccategory%2Clastseen&resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet', + vm_api_endpoint = '/api/scanning/runtime/v2/workflows/results?cursor&filter=freeText%20in%20%28%222cfced35cf83d6cdcdcd2f4ac103ab620976cb507be8779a53224d31d2a1f227%22%29&limit=100&order=desc&sort=runningVulnsBySev&zones', + container_info = [ + sysdig_client.models.container_info.ContainerInfo( + pod_name = 'nginx', + container_id = '1b883a5d-06c7-4e90-9973-d42d9889de27', + container_name = 'my-app', + pull_string = 'redis/redis:1.0.0', ) + ], ) + ], + page = sysdig_client.models.inventory_page.InventoryPage( + next = 3, + previous = 1, + total = 5, ) + ) + else: + return InventoryResourceResponse( + data = [ + sysdig_client.models.inventory_resource.InventoryResource( + hash = '62e348b71acd7be14a4bdfcc', + name = 'kube-proxy', + platform = 'Kubernetes', + type = 'DaemonSet', + category = 'Compute', + last_seen = 1660742138, + is_exposed = True, + validated_exposure = True, + labels = [ + 'env:Prod' + ], + metadata = {"cluster":"risks-aws-eks-liverisks","containerNames":["kube-proxy"],"distribution":"EKS","distributionVersion":"1.29","imagesCount":"1","namespace":"kube-system","pullStrings":["602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/kube-proxy:v1.29.0-minimal-eksbuild.1"]}, + resource_origin = 'Deployed', + posture_policy_summary = sysdig_client.models.posture_policy_summary.PosturePolicySummary( + pass_percentage = 0, + policies = [ + sysdig_client.models.policies_summary_entry.PoliciesSummaryEntry( + id = 2, + name = 'Sysdig Kubernetes', + is_passed = False, ) + ], ), + vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + in_use_vulnerability_summary = sysdig_client.models.vulnerability_summary.VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, ), + zones = [ + sysdig_client.models.inventory_zone.InventoryZone( + id = 1, + name = 'Entire Infrastructure', ) + ], + config_api_endpoint = '/api/cspm/v1/kube/resource?resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet', + posture_control_summary_api_endpoint = '/api/cspm/v1/kube/resource?fields=posturecontrolsummary%2Chash%2Cname%2Cplatform%2Ctype%2Cmetadata%2Cresourceorigin%2Ccategory%2Clastseen&resourceHash=62e348b71acd7be14a4bdfcc&resourceKind=DaemonSet', + vm_api_endpoint = '/api/scanning/runtime/v2/workflows/results?cursor&filter=freeText%20in%20%28%222cfced35cf83d6cdcdcd2f4ac103ab620976cb507be8779a53224d31d2a1f227%22%29&limit=100&order=desc&sort=runningVulnsBySev&zones', + container_info = [ + sysdig_client.models.container_info.ContainerInfo( + pod_name = 'nginx', + container_id = '1b883a5d-06c7-4e90-9973-d42d9889de27', + container_name = 'my-app', + pull_string = 'redis/redis:1.0.0', ) + ], ) + ], + page = sysdig_client.models.inventory_page.InventoryPage( + next = 3, + previous = 1, + total = 5, ), + ) + """ + + def testInventoryResourceResponse(self): + """Test InventoryResourceResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_inventory_zone.py b/test/test_inventory_zone.py new file mode 100644 index 00000000..9a184e1e --- /dev/null +++ b/test/test_inventory_zone.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.inventory_zone import InventoryZone + + +class TestInventoryZone(unittest.TestCase): + """InventoryZone unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InventoryZone: + """Test InventoryZone + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `InventoryZone` + """ + model = InventoryZone() + if include_optional: + return InventoryZone( + id = 1, + name = 'Entire Infrastructure' + ) + else: + return InventoryZone( + id = 1, + name = 'Entire Infrastructure', + ) + """ + + def testInventoryZone(self): + """Test InventoryZone""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ip_filter_response_v1.py b/test/test_ip_filter_response_v1.py new file mode 100644 index 00000000..7b717c63 --- /dev/null +++ b/test/test_ip_filter_response_v1.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ip_filter_response_v1 import IpFilterResponseV1 + + +class TestIpFilterResponseV1(unittest.TestCase): + """IpFilterResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IpFilterResponseV1: + """Test IpFilterResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IpFilterResponseV1` + """ + model = IpFilterResponseV1() + if include_optional: + return IpFilterResponseV1( + id = 1, + ip_range = '192.168.0.0/24', + note = 'London Office', + is_enabled = True, + is_allowed = True, + last_updated = '2017-07-21T17:32:28Z' + ) + else: + return IpFilterResponseV1( + ) + """ + + def testIpFilterResponseV1(self): + """Test IpFilterResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ip_filtering_api.py b/test/test_ip_filtering_api.py new file mode 100644 index 00000000..3b676d8d --- /dev/null +++ b/test/test_ip_filtering_api.py @@ -0,0 +1,80 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.ip_filtering_api import IPFilteringApi + + +class TestIPFilteringApi(unittest.TestCase): + """IPFilteringApi unit test stubs""" + + def setUp(self) -> None: + self.api = IPFilteringApi() + + def tearDown(self) -> None: + pass + + def test_create_ip_filter_v1(self) -> None: + """Test case for create_ip_filter_v1 + + Create IP Filter + """ + pass + + def test_delete_ip_filter_by_id_v1(self) -> None: + """Test case for delete_ip_filter_by_id_v1 + + Delete IP Filter + """ + pass + + def test_get_ip_filter_by_id_v1(self) -> None: + """Test case for get_ip_filter_by_id_v1 + + Get IP Filter by ID + """ + pass + + def test_get_ip_filters_settings_v1(self) -> None: + """Test case for get_ip_filters_settings_v1 + + Get IP Filters Settings + """ + pass + + def test_get_ip_filters_v1(self) -> None: + """Test case for get_ip_filters_v1 + + List IP Filters + """ + pass + + def test_save_ip_filters_settings_v1(self) -> None: + """Test case for save_ip_filters_settings_v1 + + Save IP Filters settings + """ + pass + + def test_update_ip_filter_v1(self) -> None: + """Test case for update_ip_filter_v1 + + Update IP Filter + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ip_filters_paginated_response_v1.py b/test/test_ip_filters_paginated_response_v1.py new file mode 100644 index 00000000..2cfdb8dd --- /dev/null +++ b/test/test_ip_filters_paginated_response_v1.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ip_filters_paginated_response_v1 import IpFiltersPaginatedResponseV1 + + +class TestIpFiltersPaginatedResponseV1(unittest.TestCase): + """IpFiltersPaginatedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IpFiltersPaginatedResponseV1: + """Test IpFiltersPaginatedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IpFiltersPaginatedResponseV1` + """ + model = IpFiltersPaginatedResponseV1() + if include_optional: + return IpFiltersPaginatedResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.ip_filter_response_v1.IP Filter Response V1( + id = 1, + ip_range = '192.168.0.0/24', + note = 'London Office', + is_enabled = True, + is_allowed = True, + last_updated = '2017-07-21T17:32:28Z', ) + ] + ) + else: + return IpFiltersPaginatedResponseV1( + ) + """ + + def testIpFiltersPaginatedResponseV1(self): + """Test IpFiltersPaginatedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ip_filters_settings_v1.py b/test/test_ip_filters_settings_v1.py new file mode 100644 index 00000000..3d5c6ad0 --- /dev/null +++ b/test/test_ip_filters_settings_v1.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ip_filters_settings_v1 import IpFiltersSettingsV1 + + +class TestIpFiltersSettingsV1(unittest.TestCase): + """IpFiltersSettingsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IpFiltersSettingsV1: + """Test IpFiltersSettingsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IpFiltersSettingsV1` + """ + model = IpFiltersSettingsV1() + if include_optional: + return IpFiltersSettingsV1( + is_filtering_enabled = False + ) + else: + return IpFiltersSettingsV1( + ) + """ + + def testIpFiltersSettingsV1(self): + """Test IpFiltersSettingsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_issue_type_field_response_v1.py b/test/test_issue_type_field_response_v1.py new file mode 100644 index 00000000..d97e93a9 --- /dev/null +++ b/test/test_issue_type_field_response_v1.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.issue_type_field_response_v1 import IssueTypeFieldResponseV1 + + +class TestIssueTypeFieldResponseV1(unittest.TestCase): + """IssueTypeFieldResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IssueTypeFieldResponseV1: + """Test IssueTypeFieldResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IssueTypeFieldResponseV1` + """ + model = IssueTypeFieldResponseV1() + if include_optional: + return IssueTypeFieldResponseV1( + id = 1, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, + allowed_values = [ + null + ] + ) + else: + return IssueTypeFieldResponseV1( + id = 1, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, + ) + """ + + def testIssueTypeFieldResponseV1(self): + """Test IssueTypeFieldResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_issue_type_field_response_v1_allowed_values_inner.py b/test/test_issue_type_field_response_v1_allowed_values_inner.py new file mode 100644 index 00000000..a8d79366 --- /dev/null +++ b/test/test_issue_type_field_response_v1_allowed_values_inner.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.issue_type_field_response_v1_allowed_values_inner import IssueTypeFieldResponseV1AllowedValuesInner + + +class TestIssueTypeFieldResponseV1AllowedValuesInner(unittest.TestCase): + """IssueTypeFieldResponseV1AllowedValuesInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IssueTypeFieldResponseV1AllowedValuesInner: + """Test IssueTypeFieldResponseV1AllowedValuesInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IssueTypeFieldResponseV1AllowedValuesInner` + """ + model = IssueTypeFieldResponseV1AllowedValuesInner() + if include_optional: + return IssueTypeFieldResponseV1AllowedValuesInner( + id = 'id', + value = 'value' + ) + else: + return IssueTypeFieldResponseV1AllowedValuesInner( + id = 'id', + value = 'value', + ) + """ + + def testIssueTypeFieldResponseV1AllowedValuesInner(self): + """Test IssueTypeFieldResponseV1AllowedValuesInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_issue_type_response_v1.py b/test/test_issue_type_response_v1.py new file mode 100644 index 00000000..7ff45a5e --- /dev/null +++ b/test/test_issue_type_response_v1.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.issue_type_response_v1 import IssueTypeResponseV1 + + +class TestIssueTypeResponseV1(unittest.TestCase): + """IssueTypeResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IssueTypeResponseV1: + """Test IssueTypeResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IssueTypeResponseV1` + """ + model = IssueTypeResponseV1() + if include_optional: + return IssueTypeResponseV1( + id = 1, + jira_id = '1', + jira_name = 'jira-name', + jira_hierarchy_level = 1, + jira_open_status_id = '1000', + jira_in_progress_status_id = '1001', + jira_closed_status_id = '1002', + standard_fields = [ + sysdig_client.models.jira_issue_type_field_response_v1.Jira Issue Type Field Response V1( + id = null, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, + allowed_values = [ + null + ], ) + ], + custom_fields = [ + sysdig_client.models.jira_issue_type_field_response_v1.Jira Issue Type Field Response V1( + id = null, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, + allowed_values = [ + null + ], ) + ] + ) + else: + return IssueTypeResponseV1( + id = 1, + jira_id = '1', + jira_name = 'jira-name', + jira_hierarchy_level = 1, + jira_open_status_id = '1000', + jira_in_progress_status_id = '1001', + jira_closed_status_id = '1002', + standard_fields = [ + sysdig_client.models.jira_issue_type_field_response_v1.Jira Issue Type Field Response V1( + id = null, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, + allowed_values = [ + null + ], ) + ], + ) + """ + + def testIssueTypeResponseV1(self): + """Test IssueTypeResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_issue_types_response_v1.py b/test/test_issue_types_response_v1.py new file mode 100644 index 00000000..8c6fbdae --- /dev/null +++ b/test/test_issue_types_response_v1.py @@ -0,0 +1,83 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.issue_types_response_v1 import IssueTypesResponseV1 + + +class TestIssueTypesResponseV1(unittest.TestCase): + """IssueTypesResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> IssueTypesResponseV1: + """Test IssueTypesResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `IssueTypesResponseV1` + """ + model = IssueTypesResponseV1() + if include_optional: + return IssueTypesResponseV1( + data = [ + sysdig_client.models.jira_issue_type_response_v1.Jira Issue Type Response V1( + id = null, + jira_id = '1', + jira_name = 'jira-name', + jira_hierarchy_level = 1, + jira_open_status_id = '1000', + jira_in_progress_status_id = '1001', + jira_closed_status_id = '1002', + standard_fields = [ + sysdig_client.models.jira_issue_type_field_response_v1.Jira Issue Type Field Response V1( + id = null, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, + allowed_values = [ + null + ], ) + ], + custom_fields = [ + sysdig_client.models.jira_issue_type_field_response_v1.Jira Issue Type Field Response V1( + id = null, + jira_id = 'jira-id', + jira_name = 'jira-name', + type = 'checkbox', + is_required = True, + has_default_value = False, ) + ], ) + ] + ) + else: + return IssueTypesResponseV1( + ) + """ + + def testIssueTypesResponseV1(self): + """Test IssueTypesResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_jira_integrations_api.py b/test/test_jira_integrations_api.py new file mode 100644 index 00000000..398eae5e --- /dev/null +++ b/test/test_jira_integrations_api.py @@ -0,0 +1,101 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.jira_integrations_api import JiraIntegrationsApi + + +class TestJiraIntegrationsApi(unittest.TestCase): + """JiraIntegrationsApi unit test stubs""" + + def setUp(self) -> None: + self.api = JiraIntegrationsApi() + + def tearDown(self) -> None: + pass + + def test_create_jira_integration_v1(self) -> None: + """Test case for create_jira_integration_v1 + + Create Jira integration + """ + pass + + def test_create_jira_issue_type_v1(self) -> None: + """Test case for create_jira_issue_type_v1 + + Create Jira issue type + """ + pass + + def test_delete_jira_integration_v1(self) -> None: + """Test case for delete_jira_integration_v1 + + Delete Jira integration + """ + pass + + def test_delete_jira_issue_type_v1(self) -> None: + """Test case for delete_jira_issue_type_v1 + + Delete Jira issue type + """ + pass + + def test_get_jira_integration_v1(self) -> None: + """Test case for get_jira_integration_v1 + + Get Jira integration + """ + pass + + def test_get_jira_integrations_v1(self) -> None: + """Test case for get_jira_integrations_v1 + + List Jira integrations + """ + pass + + def test_get_jira_issue_type_v1(self) -> None: + """Test case for get_jira_issue_type_v1 + + Get Jira issue type + """ + pass + + def test_get_jira_issue_types_v1(self) -> None: + """Test case for get_jira_issue_types_v1 + + List Jira issue types + """ + pass + + def test_update_jira_integration_v1(self) -> None: + """Test case for update_jira_integration_v1 + + Update Jira integration + """ + pass + + def test_update_jira_issue_type_v1(self) -> None: + """Test case for update_jira_issue_type_v1 + + Update Jira issue type + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_job_response.py b/test/test_job_response.py new file mode 100644 index 00000000..11d8b142 --- /dev/null +++ b/test/test_job_response.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.job_response import JobResponse + + +class TestJobResponse(unittest.TestCase): + """JobResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> JobResponse: + """Test JobResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `JobResponse` + """ + model = JobResponse() + if include_optional: + return JobResponse( + id = '2pUnGeLvrOo5qoWuvXg5H9nEH2g', + user_id = 0, + team_id = 2074112, + customer_id = 121517, + iac_task_id = 151514, + schedule_id = '2otw7opjilXpl0JRJIetx5Y6SHM', + report_id = 26, + is_report_template = True, + report_format = 'pdf', + job_type = 'SCHEDULED', + job_name = 'weekly-report', + zones = [ + 239 + ], + policies = [ + 12 + ], + status = 'COMPLETED', + timezone = 'America/Los_Angeles', + time_frame = sysdig_client.models.time_frame.TimeFrame( + from = 1, + to = 1, ), + file_name = 'filename.zip', + file_path = 'https://sysdig.com/api/platform/reporting_files/v1/filename.zip?token=token', + created_by = 'user@sysdig.com', + scheduled_on = '2024-11-28T21:30:26.531740Z', + started_on = '2024-11-28T21:30:26.531740Z', + completed_on = '2024-11-28T21:31:08.647529Z' + ) + else: + return JobResponse( + id = '2pUnGeLvrOo5qoWuvXg5H9nEH2g', + user_id = 0, + team_id = 2074112, + customer_id = 121517, + report_id = 26, + is_report_template = True, + report_format = 'pdf', + job_type = 'SCHEDULED', + zones = [ + 239 + ], + status = 'COMPLETED', + created_by = 'user@sysdig.com', + scheduled_on = '2024-11-28T21:30:26.531740Z', + ) + """ + + def testJobResponse(self): + """Test JobResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_k8s_admission_review_content.py b/test/test_k8s_admission_review_content.py new file mode 100644 index 00000000..c6e8906a --- /dev/null +++ b/test/test_k8s_admission_review_content.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.k8s_admission_review_content import K8sAdmissionReviewContent + + +class TestK8sAdmissionReviewContent(unittest.TestCase): + """K8sAdmissionReviewContent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> K8sAdmissionReviewContent: + """Test K8sAdmissionReviewContent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `K8sAdmissionReviewContent` + """ + model = K8sAdmissionReviewContent() + if include_optional: + return K8sAdmissionReviewContent( + type = 'workloadRuntimeDetection', + namespace = 'hub', + cluster_name = 'prod5', + resource_name = 'sfdc-bulk-updates-12345678', + resource_kind = 'Job', + zones = [ + sysdig_client.models.zone.Zone( + zone_name = 'Zone example', + zone_id = 1234, ) + ], + scan_result = None + ) + else: + return K8sAdmissionReviewContent( + type = 'workloadRuntimeDetection', + scan_result = None, + ) + """ + + def testK8sAdmissionReviewContent(self): + """Test K8sAdmissionReviewContent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_k8s_admission_review_content_all_of_scan_result.py b/test/test_k8s_admission_review_content_all_of_scan_result.py new file mode 100644 index 00000000..deca6389 --- /dev/null +++ b/test/test_k8s_admission_review_content_all_of_scan_result.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.k8s_admission_review_content_all_of_scan_result import K8sAdmissionReviewContentAllOfScanResult + + +class TestK8sAdmissionReviewContentAllOfScanResult(unittest.TestCase): + """K8sAdmissionReviewContentAllOfScanResult unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> K8sAdmissionReviewContentAllOfScanResult: + """Test K8sAdmissionReviewContentAllOfScanResult + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `K8sAdmissionReviewContentAllOfScanResult` + """ + model = K8sAdmissionReviewContentAllOfScanResult() + if include_optional: + return K8sAdmissionReviewContentAllOfScanResult( + ) + else: + return K8sAdmissionReviewContentAllOfScanResult( + ) + """ + + def testK8sAdmissionReviewContentAllOfScanResult(self): + """Test K8sAdmissionReviewContentAllOfScanResult""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_kafka_plaintext.py b/test/test_kafka_plaintext.py new file mode 100644 index 00000000..ce2d2b45 --- /dev/null +++ b/test/test_kafka_plaintext.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.kafka_plaintext import KafkaPlaintext + + +class TestKafkaPlaintext(unittest.TestCase): + """KafkaPlaintext unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> KafkaPlaintext: + """Test KafkaPlaintext + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `KafkaPlaintext` + """ + model = KafkaPlaintext() + if include_optional: + return KafkaPlaintext( + is_tls_enabled = False + ) + else: + return KafkaPlaintext( + ) + """ + + def testKafkaPlaintext(self): + """Test KafkaPlaintext""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_kafka_tls_encrypted.py b/test/test_kafka_tls_encrypted.py new file mode 100644 index 00000000..eb4a7302 --- /dev/null +++ b/test/test_kafka_tls_encrypted.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.kafka_tls_encrypted import KafkaTlsEncrypted + + +class TestKafkaTlsEncrypted(unittest.TestCase): + """KafkaTlsEncrypted unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> KafkaTlsEncrypted: + """Test KafkaTlsEncrypted + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `KafkaTlsEncrypted` + """ + model = KafkaTlsEncrypted() + if include_optional: + return KafkaTlsEncrypted( + is_tls_enabled = True, + is_insecure = False + ) + else: + return KafkaTlsEncrypted( + ) + """ + + def testKafkaTlsEncrypted(self): + """Test KafkaTlsEncrypted""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_key_value_object.py b/test/test_key_value_object.py new file mode 100644 index 00000000..df3cc01a --- /dev/null +++ b/test/test_key_value_object.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.key_value_object import KeyValueObject + + +class TestKeyValueObject(unittest.TestCase): + """KeyValueObject unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> KeyValueObject: + """Test KeyValueObject + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `KeyValueObject` + """ + model = KeyValueObject() + if include_optional: + return KeyValueObject( + key = 'mykey', + value = 'myvalue' + ) + else: + return KeyValueObject( + key = 'mykey', + value = 'myvalue', + ) + """ + + def testKeyValueObject(self): + """Test KeyValueObject""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_kubernetes.py b/test/test_kubernetes.py new file mode 100644 index 00000000..c3db9fe0 --- /dev/null +++ b/test/test_kubernetes.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.kubernetes import Kubernetes + + +class TestKubernetes(unittest.TestCase): + """Kubernetes unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Kubernetes: + """Test Kubernetes + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Kubernetes` + """ + model = Kubernetes() + if include_optional: + return Kubernetes( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'kubernetes', + hostname = 'ip-127-0-0-1', + container_id = 'f8d4f71ab80b', + resource = 'pods', + sub_resource = 'exec', + namespace = 'sysdigcloud', + name = 'sysdigcloud-redis-75675f5897-7ci7o', + source_addresses = ["127.0.0.1","192.168.0.1"], + user = sysdig_client.models.user.User( + username = 'kubernetes-admin', + groups = ["system:masters","system:authenticated"], ), + user_agent = 'kubectl/v1.13.5 (linux/amd64) kubernetes/2166946', + args = {"command":"bash","container":"redis"}, + labels = { + 'key' : 'foo' + } + ) + else: + return Kubernetes( + id = '15cbf54e34df95404caad1c988cf7c42', + timestamp = 1546300800000000000, + type = 'kubernetes', + hostname = 'ip-127-0-0-1', + container_id = 'f8d4f71ab80b', + resource = 'pods', + sub_resource = 'exec', + namespace = 'sysdigcloud', + name = 'sysdigcloud-redis-75675f5897-7ci7o', + source_addresses = ["127.0.0.1","192.168.0.1"], + user = sysdig_client.models.user.User( + username = 'kubernetes-admin', + groups = ["system:masters","system:authenticated"], ), + user_agent = 'kubectl/v1.13.5 (linux/amd64) kubernetes/2166946', + args = {"command":"bash","container":"redis"}, + ) + """ + + def testKubernetes(self): + """Test Kubernetes""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_label_matcher_v1.py b/test/test_label_matcher_v1.py new file mode 100644 index 00000000..8fef33a5 --- /dev/null +++ b/test/test_label_matcher_v1.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.label_matcher_v1 import LabelMatcherV1 + + +class TestLabelMatcherV1(unittest.TestCase): + """LabelMatcherV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> LabelMatcherV1: + """Test LabelMatcherV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `LabelMatcherV1` + """ + model = LabelMatcherV1() + if include_optional: + return LabelMatcherV1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?' + ) + else: + return LabelMatcherV1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', + ) + """ + + def testLabelMatcherV1(self): + """Test LabelMatcherV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_label_values_response_v1.py b/test/test_label_values_response_v1.py new file mode 100644 index 00000000..963229d6 --- /dev/null +++ b/test/test_label_values_response_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.label_values_response_v1 import LabelValuesResponseV1 + + +class TestLabelValuesResponseV1(unittest.TestCase): + """LabelValuesResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> LabelValuesResponseV1: + """Test LabelValuesResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `LabelValuesResponseV1` + """ + model = LabelValuesResponseV1() + if include_optional: + return LabelValuesResponseV1( + status = 'success', + data = ["prometheus","node-exporter"], + warnings = [], + infos = [] + ) + else: + return LabelValuesResponseV1( + ) + """ + + def testLabelValuesResponseV1(self): + """Test LabelValuesResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_labels_response_v1.py b/test/test_labels_response_v1.py new file mode 100644 index 00000000..f0993c31 --- /dev/null +++ b/test/test_labels_response_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.labels_response_v1 import LabelsResponseV1 + + +class TestLabelsResponseV1(unittest.TestCase): + """LabelsResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> LabelsResponseV1: + """Test LabelsResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `LabelsResponseV1` + """ + model = LabelsResponseV1() + if include_optional: + return LabelsResponseV1( + status = 'success', + data = ["__name__","instance","job"], + warnings = [], + infos = [] + ) + else: + return LabelsResponseV1( + ) + """ + + def testLabelsResponseV1(self): + """Test LabelsResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_layer.py b/test/test_layer.py new file mode 100644 index 00000000..559e595c --- /dev/null +++ b/test/test_layer.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.layer import Layer + + +class TestLayer(unittest.TestCase): + """Layer unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Layer: + """Test Layer + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Layer` + """ + model = Layer() + if include_optional: + return Layer( + index = 50, + digest = 'sha256:55f2611539bc5c771a4848183bb3d29af95aa9ae66563e7e808b7501659f5c50', + size = 50, + command = 'COPY docker-entrypoint.sh', + base_images_ref = [ + 'a3ee5e6b4b0d3255bf' + ] + ) + else: + return Layer( + digest = 'sha256:55f2611539bc5c771a4848183bb3d29af95aa9ae66563e7e808b7501659f5c50', + ) + """ + + def testLayer(self): + """Test Layer""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_audit_events_response.py b/test/test_list_audit_events_response.py new file mode 100644 index 00000000..4bdbcf15 --- /dev/null +++ b/test/test_list_audit_events_response.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_audit_events_response import ListAuditEventsResponse + + +class TestListAuditEventsResponse(unittest.TestCase): + """ListAuditEventsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListAuditEventsResponse: + """Test ListAuditEventsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListAuditEventsResponse` + """ + model = ListAuditEventsResponse() + if include_optional: + return ListAuditEventsResponse( + page = sysdig_client.models.audit_page.AuditPage( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn', ), + data = [ + sysdig_client.models.audit_event.AuditEvent( + id = '15cbf54e34df95404caad1c988cf7c42', + cursor = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + timestamp = 1617220000000000000, + content = sysdig_client.models.audit_trail_content.AuditTrailContent( + timestamp_ns = 1617220000000000000, + user_id = 122, + username = 'joendoe', + team_id = 13, + team_name = 'Security Operations', + request_method = 'GET', + request_uri = '/api/v1/audit', + user_origin_ip = '22.220.145.219', + query_string = 'controlId=1&resourceKind=workload', + response_status_code = 200, + entity_type = 'policy', + entity_id = '', + entity_payload = 'SAMLResponse=***&RelayState=%23%2F%26customer%3D5', + service_account_id = 123, + service_account_name = 'service-account-1', ), + labels = {"entityType":"auth"}, ) + ] + ) + else: + return ListAuditEventsResponse( + page = sysdig_client.models.audit_page.AuditPage( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn', ), + data = [ + sysdig_client.models.audit_event.AuditEvent( + id = '15cbf54e34df95404caad1c988cf7c42', + cursor = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + timestamp = 1617220000000000000, + content = sysdig_client.models.audit_trail_content.AuditTrailContent( + timestamp_ns = 1617220000000000000, + user_id = 122, + username = 'joendoe', + team_id = 13, + team_name = 'Security Operations', + request_method = 'GET', + request_uri = '/api/v1/audit', + user_origin_ip = '22.220.145.219', + query_string = 'controlId=1&resourceKind=workload', + response_status_code = 200, + entity_type = 'policy', + entity_id = '', + entity_payload = 'SAMLResponse=***&RelayState=%23%2F%26customer%3D5', + service_account_id = 123, + service_account_name = 'service-account-1', ), + labels = {"entityType":"auth"}, ) + ], + ) + """ + + def testListAuditEventsResponse(self): + """Test ListAuditEventsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_bundles_response.py b/test/test_list_bundles_response.py new file mode 100644 index 00000000..21e7dac0 --- /dev/null +++ b/test/test_list_bundles_response.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_bundles_response import ListBundlesResponse + + +class TestListBundlesResponse(unittest.TestCase): + """ListBundlesResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListBundlesResponse: + """Test ListBundlesResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListBundlesResponse` + """ + model = ListBundlesResponse() + if include_optional: + return ListBundlesResponse( + page = sysdig_client.models.policies_page.PoliciesPage( + returned = 1, + matched = 10, + next = 'MA==', ), + data = [ + sysdig_client.models.get_bundle_response.GetBundleResponse( + id = 1, + name = 'Sysdig Bundle', + identifier = 'sysdig-bundle', + description = 'Default Sysdig Bundle', + bundle_type = 'custom', + rules = [ + sysdig_client.models.bundle_rule.BundleRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}}], + rule_id = '42', ) + ], ) + ] + ) + else: + return ListBundlesResponse( + page = sysdig_client.models.policies_page.PoliciesPage( + returned = 1, + matched = 10, + next = 'MA==', ), + data = [ + sysdig_client.models.get_bundle_response.GetBundleResponse( + id = 1, + name = 'Sysdig Bundle', + identifier = 'sysdig-bundle', + description = 'Default Sysdig Bundle', + bundle_type = 'custom', + rules = [ + sysdig_client.models.bundle_rule.BundleRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}}], + rule_id = '42', ) + ], ) + ], + ) + """ + + def testListBundlesResponse(self): + """Test ListBundlesResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_events_response.py b/test/test_list_events_response.py new file mode 100644 index 00000000..c0b6b540 --- /dev/null +++ b/test/test_list_events_response.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_events_response import ListEventsResponse + + +class TestListEventsResponse(unittest.TestCase): + """ListEventsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListEventsResponse: + """Test ListEventsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListEventsResponse` + """ + model = ListEventsResponse() + if include_optional: + return ListEventsResponse( + page = sysdig_client.models.events_feed_page.EventsFeedPage( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn', ), + data = [ + sysdig_client.models.event.Event( + id = '15cbf54e34df95404caad1c988cf7c42', + cursor = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + timestamp = 1617220000000000000, + originator = 'policy', + category = 'runtime', + source = 'k8s_audit', + source_details = sysdig_client.models.source_details.SourceDetails( + type = 'cloud', + sub_type = 'host', ), + raw_event_originator = 'admissionController', + raw_event_category = 'runtime', + engine = 'drift', + name = 'Launch Privileged Container', + description = 'Identify a container being created with privileged=true +', + severity = 4, + actions = [ + null + ], + content = sysdig_client.models.event_content.EventContent(), + labels = {"foo":"bar","baz":"qux"}, ) + ] + ) + else: + return ListEventsResponse( + page = sysdig_client.models.events_feed_page.EventsFeedPage( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn', ), + data = [ + sysdig_client.models.event.Event( + id = '15cbf54e34df95404caad1c988cf7c42', + cursor = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + timestamp = 1617220000000000000, + originator = 'policy', + category = 'runtime', + source = 'k8s_audit', + source_details = sysdig_client.models.source_details.SourceDetails( + type = 'cloud', + sub_type = 'host', ), + raw_event_originator = 'admissionController', + raw_event_category = 'runtime', + engine = 'drift', + name = 'Launch Privileged Container', + description = 'Identify a container being created with privileged=true +', + severity = 4, + actions = [ + null + ], + content = sysdig_client.models.event_content.EventContent(), + labels = {"foo":"bar","baz":"qux"}, ) + ], + ) + """ + + def testListEventsResponse(self): + """Test ListEventsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_integrations_response.py b/test/test_list_integrations_response.py new file mode 100644 index 00000000..648f8a6b --- /dev/null +++ b/test/test_list_integrations_response.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_integrations_response import ListIntegrationsResponse + + +class TestListIntegrationsResponse(unittest.TestCase): + """ListIntegrationsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListIntegrationsResponse: + """Test ListIntegrationsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListIntegrationsResponse` + """ + model = ListIntegrationsResponse() + if include_optional: + return ListIntegrationsResponse( + data = [ + null + ] + ) + else: + return ListIntegrationsResponse( + data = [ + null + ], + ) + """ + + def testListIntegrationsResponse(self): + """Test ListIntegrationsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_job_and_disabled_metrics_v1.py b/test/test_list_job_and_disabled_metrics_v1.py new file mode 100644 index 00000000..231f0853 --- /dev/null +++ b/test/test_list_job_and_disabled_metrics_v1.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_job_and_disabled_metrics_v1 import ListJobAndDisabledMetricsV1 + + +class TestListJobAndDisabledMetricsV1(unittest.TestCase): + """ListJobAndDisabledMetricsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListJobAndDisabledMetricsV1: + """Test ListJobAndDisabledMetricsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListJobAndDisabledMetricsV1` + """ + model = ListJobAndDisabledMetricsV1() + if include_optional: + return ListJobAndDisabledMetricsV1( + job_name = 'k8s-pods', + metrics = [ + sysdig_client.models.metric_v1.MetricV1( + metric_name = 'apache_accesses_total', + modified_date = '2017-07-21T17:32:28Z', + user_id = 1234, + user_name = 'John Smith', ) + ] + ) + else: + return ListJobAndDisabledMetricsV1( + ) + """ + + def testListJobAndDisabledMetricsV1(self): + """Test ListJobAndDisabledMetricsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_jobs.py b/test/test_list_jobs.py new file mode 100644 index 00000000..1e862563 --- /dev/null +++ b/test/test_list_jobs.py @@ -0,0 +1,114 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_jobs import ListJobs + + +class TestListJobs(unittest.TestCase): + """ListJobs unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListJobs: + """Test ListJobs + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListJobs` + """ + model = ListJobs() + if include_optional: + return ListJobs( + data = [ + sysdig_client.models.job_response.Job Response( + id = '2pUnGeLvrOo5qoWuvXg5H9nEH2g', + user_id = 0, + team_id = 2074112, + customer_id = 121517, + iac_task_id = 151514, + schedule_id = '2otw7opjilXpl0JRJIetx5Y6SHM', + report_id = 26, + is_report_template = True, + report_format = 'pdf', + job_type = 'SCHEDULED', + job_name = 'weekly-report', + zones = [ + 239 + ], + policies = [ + 12 + ], + status = 'COMPLETED', + timezone = 'America/Los_Angeles', + time_frame = sysdig_client.models.time_frame.TimeFrame( + from = 1, + to = 1, ), + file_name = 'filename.zip', + file_path = 'https://sysdig.com/api/platform/reporting_files/v1/filename.zip?token=token', + created_by = 'user@sysdig.com', + scheduled_on = '2024-11-28T21:30:26.531740Z', + started_on = '2024-11-28T21:30:26.531740Z', + completed_on = '2024-11-28T21:31:08.647529Z', ) + ] + ) + else: + return ListJobs( + data = [ + sysdig_client.models.job_response.Job Response( + id = '2pUnGeLvrOo5qoWuvXg5H9nEH2g', + user_id = 0, + team_id = 2074112, + customer_id = 121517, + iac_task_id = 151514, + schedule_id = '2otw7opjilXpl0JRJIetx5Y6SHM', + report_id = 26, + is_report_template = True, + report_format = 'pdf', + job_type = 'SCHEDULED', + job_name = 'weekly-report', + zones = [ + 239 + ], + policies = [ + 12 + ], + status = 'COMPLETED', + timezone = 'America/Los_Angeles', + time_frame = sysdig_client.models.time_frame.TimeFrame( + from = 1, + to = 1, ), + file_name = 'filename.zip', + file_path = 'https://sysdig.com/api/platform/reporting_files/v1/filename.zip?token=token', + created_by = 'user@sysdig.com', + scheduled_on = '2024-11-28T21:30:26.531740Z', + started_on = '2024-11-28T21:30:26.531740Z', + completed_on = '2024-11-28T21:31:08.647529Z', ) + ], + ) + """ + + def testListJobs(self): + """Test ListJobs""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_monitor_events_response.py b/test/test_list_monitor_events_response.py new file mode 100644 index 00000000..422374e5 --- /dev/null +++ b/test/test_list_monitor_events_response.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Platform Zones Public API + +Sysdig Platform Zones Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_monitor_events_response import ListMonitorEventsResponse + + +class TestListMonitorEventsResponse(unittest.TestCase): + """ListMonitorEventsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListMonitorEventsResponse: + """Test ListMonitorEventsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListMonitorEventsResponse` + """ + model = ListMonitorEventsResponse() + if include_optional: + return ListMonitorEventsResponse( + page = sysdig_client.models.monitor_events_page.MonitorEventsPage( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn', ), + data = [ + sysdig_client.models.monitor_event.MonitorEvent() + ] + ) + else: + return ListMonitorEventsResponse( + page = sysdig_client.models.monitor_events_page.MonitorEventsPage( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn', ), + data = [ + sysdig_client.models.monitor_event.MonitorEvent() + ], + ) + """ + + def testListMonitorEventsResponse(self): + """Test ListMonitorEventsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_policies_response.py b/test/test_list_policies_response.py new file mode 100644 index 00000000..4f98d06a --- /dev/null +++ b/test/test_list_policies_response.py @@ -0,0 +1,80 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_policies_response import ListPoliciesResponse + + +class TestListPoliciesResponse(unittest.TestCase): + """ListPoliciesResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListPoliciesResponse: + """Test ListPoliciesResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListPoliciesResponse` + """ + model = ListPoliciesResponse() + if include_optional: + return ListPoliciesResponse( + page = sysdig_client.models.policies_page.PoliciesPage( + returned = 1, + matched = 10, + next = 'MA==', ), + data = [ + sysdig_client.models.policy_summary_definition.Policy summary definition( + id = 1, + name = 'Sysdig policy', + identifier = 'sysdig-policy', + description = 'Sysdig policy', + stages = [ + 'runtime' + ], ) + ] + ) + else: + return ListPoliciesResponse( + page = sysdig_client.models.policies_page.PoliciesPage( + returned = 1, + matched = 10, + next = 'MA==', ), + data = [ + sysdig_client.models.policy_summary_definition.Policy summary definition( + id = 1, + name = 'Sysdig policy', + identifier = 'sysdig-policy', + description = 'Sysdig policy', + stages = [ + 'runtime' + ], ) + ], + ) + """ + + def testListPoliciesResponse(self): + """Test ListPoliciesResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_risk_accepted_response.py b/test/test_list_risk_accepted_response.py new file mode 100644 index 00000000..4aee4029 --- /dev/null +++ b/test/test_list_risk_accepted_response.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_risk_accepted_response import ListRiskAcceptedResponse + + +class TestListRiskAcceptedResponse(unittest.TestCase): + """ListRiskAcceptedResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListRiskAcceptedResponse: + """Test ListRiskAcceptedResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListRiskAcceptedResponse` + """ + model = ListRiskAcceptedResponse() + if include_optional: + return ListRiskAcceptedResponse( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + null + ] + ) + else: + return ListRiskAcceptedResponse( + data = [ + null + ], + ) + """ + + def testListRiskAcceptedResponse(self): + """Test ListRiskAcceptedResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_risk_accepted_response_all_of_data.py b/test/test_list_risk_accepted_response_all_of_data.py new file mode 100644 index 00000000..7f5bf2d1 --- /dev/null +++ b/test/test_list_risk_accepted_response_all_of_data.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_risk_accepted_response_all_of_data import ListRiskAcceptedResponseAllOfData + + +class TestListRiskAcceptedResponseAllOfData(unittest.TestCase): + """ListRiskAcceptedResponseAllOfData unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListRiskAcceptedResponseAllOfData: + """Test ListRiskAcceptedResponseAllOfData + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListRiskAcceptedResponseAllOfData` + """ + model = ListRiskAcceptedResponseAllOfData() + if include_optional: + return ListRiskAcceptedResponseAllOfData( + entity_type = 'imageName', + context = None, + id = '17af8bade67c9a208e632df001fcea2c', + expiration_date = 'Mon Feb 26 18:00:00 CST 2024', + created_at = '2024-01-22T08:51:46.016464Z', + updated_at = '2024-02-22T08:51:46.016464Z', + status = 'active', + created_by = 'user@sysdig.com', + updated_by = 'user@sysdig.com', + entity_value = 'CVE-1234-56789', + reason = 'RiskTransferred', + description = 'vulnerability cannot be removed manually', + stages = [runtime, pipeline, registry] + ) + else: + return ListRiskAcceptedResponseAllOfData( + entity_type = 'imageName', + context = None, + id = '17af8bade67c9a208e632df001fcea2c', + status = 'active', + entity_value = 'CVE-1234-56789', + reason = 'RiskTransferred', + description = 'vulnerability cannot be removed manually', + ) + """ + + def testListRiskAcceptedResponseAllOfData(self): + """Test ListRiskAcceptedResponseAllOfData""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_schedules.py b/test/test_list_schedules.py new file mode 100644 index 00000000..979a39e9 --- /dev/null +++ b/test/test_list_schedules.py @@ -0,0 +1,122 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_schedules import ListSchedules + + +class TestListSchedules(unittest.TestCase): + """ListSchedules unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListSchedules: + """Test ListSchedules + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListSchedules` + """ + model = ListSchedules() + if include_optional: + return ListSchedules( + data = [ + sysdig_client.models.schedule.Schedule( + id = '2pAtvxUMOXjoZlA1WJkkoCL6SeS', + user_id = 2678526, + team_id = 2074112, + customer_id = 121517, + name = 'test schedule password 1', + description = '', + report_id = 26, + report_name = 'Compliance Readiness Report', + is_report_template = True, + report_format = 'pdf', + zones = [ + 239 + ], + policies = [ + 52 + ], + timezone = 'America/Chicago', + schedule = '00 30 06 * * *', + enabled = True, + notification_channels = [ + null + ], + iac_task_id = 647423, + password_enabled = True, + compression = 'zip', + created_by = 'user@sysdig.com', + updated_by = 'user@sysdig.com', + created_on = '2024-11-21T20:29:01.415528Z', + modified_on = '2024-11-22T04:40:17.308300Z', + last_scheduled_on = '2024-12-10T06:30:05.472079Z', + last_started_on = '2024-12-10T06:30:05.472079Z', + last_completed_on = '2024-12-10T06:30:36.194531Z', ) + ] + ) + else: + return ListSchedules( + data = [ + sysdig_client.models.schedule.Schedule( + id = '2pAtvxUMOXjoZlA1WJkkoCL6SeS', + user_id = 2678526, + team_id = 2074112, + customer_id = 121517, + name = 'test schedule password 1', + description = '', + report_id = 26, + report_name = 'Compliance Readiness Report', + is_report_template = True, + report_format = 'pdf', + zones = [ + 239 + ], + policies = [ + 52 + ], + timezone = 'America/Chicago', + schedule = '00 30 06 * * *', + enabled = True, + notification_channels = [ + null + ], + iac_task_id = 647423, + password_enabled = True, + compression = 'zip', + created_by = 'user@sysdig.com', + updated_by = 'user@sysdig.com', + created_on = '2024-11-21T20:29:01.415528Z', + modified_on = '2024-11-22T04:40:17.308300Z', + last_scheduled_on = '2024-12-10T06:30:05.472079Z', + last_started_on = '2024-12-10T06:30:05.472079Z', + last_completed_on = '2024-12-10T06:30:36.194531Z', ) + ], + ) + """ + + def testListSchedules(self): + """Test ListSchedules""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_zones_response_v1.py b/test/test_list_zones_response_v1.py new file mode 100644 index 00000000..d8be5603 --- /dev/null +++ b/test/test_list_zones_response_v1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_zones_response_v1 import ListZonesResponseV1 + + +class TestListZonesResponseV1(unittest.TestCase): + """ListZonesResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListZonesResponseV1: + """Test ListZonesResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListZonesResponseV1` + """ + model = ListZonesResponseV1() + if include_optional: + return ListZonesResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + null + ] + ) + else: + return ListZonesResponseV1( + ) + """ + + def testListZonesResponseV1(self): + """Test ListZonesResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_zones_response_v1_all_of_data.py b/test/test_list_zones_response_v1_all_of_data.py new file mode 100644 index 00000000..6dd88b4c --- /dev/null +++ b/test/test_list_zones_response_v1_all_of_data.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.list_zones_response_v1_all_of_data import ListZonesResponseV1AllOfData + + +class TestListZonesResponseV1AllOfData(unittest.TestCase): + """ListZonesResponseV1AllOfData unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListZonesResponseV1AllOfData: + """Test ListZonesResponseV1AllOfData + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListZonesResponseV1AllOfData` + """ + model = ListZonesResponseV1AllOfData() + if include_optional: + return ListZonesResponseV1AllOfData( + id = 1, + name = 'Production', + description = 'Production Environment', + author = 'Sysdig', + last_modified_by = 'john_doe@sysdig.com', + last_updated = 1, + is_system = False, + scopes = [ + sysdig_client.models.zone_scope.Zone Scope( + id = 1, + target_type = 'target', + rules = 'clusterId in ( "test" )', ) + ] + ) + else: + return ListZonesResponseV1AllOfData( + ) + """ + + def testListZonesResponseV1AllOfData(self): + """Test ListZonesResponseV1AllOfData""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_malware_prevented_action.py b/test/test_malware_prevented_action.py new file mode 100644 index 00000000..faa15dc8 --- /dev/null +++ b/test/test_malware_prevented_action.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.malware_prevented_action import MalwarePreventedAction + + +class TestMalwarePreventedAction(unittest.TestCase): + """MalwarePreventedAction unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MalwarePreventedAction: + """Test MalwarePreventedAction + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MalwarePreventedAction` + """ + model = MalwarePreventedAction() + if include_optional: + return MalwarePreventedAction( + type = 'capture', + is_successful = True, + err_msg = 'Prevention action failed on container 9566c6966932 due to a system error: ...' + ) + else: + return MalwarePreventedAction( + type = 'capture', + ) + """ + + def testMalwarePreventedAction(self): + """Test MalwarePreventedAction""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_metadata_response_v1.py b/test/test_metadata_response_v1.py new file mode 100644 index 00000000..aa88a088 --- /dev/null +++ b/test/test_metadata_response_v1.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.metadata_response_v1 import MetadataResponseV1 + + +class TestMetadataResponseV1(unittest.TestCase): + """MetadataResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MetadataResponseV1: + """Test MetadataResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MetadataResponseV1` + """ + model = MetadataResponseV1() + if include_optional: + return MetadataResponseV1( + status = 'success', + data = { + 'key' : [ + sysdig_client.models.metadata_response_v1_data_value_inner.MetadataResponseV1_data_value_inner( + type = 'counter', + help = 'Number of HTTP requests', + unit = '', ) + ] + }, + warnings = [], + infos = [] + ) + else: + return MetadataResponseV1( + ) + """ + + def testMetadataResponseV1(self): + """Test MetadataResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_metadata_response_v1_data_value_inner.py b/test/test_metadata_response_v1_data_value_inner.py new file mode 100644 index 00000000..6cb543e9 --- /dev/null +++ b/test/test_metadata_response_v1_data_value_inner.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.metadata_response_v1_data_value_inner import MetadataResponseV1DataValueInner + + +class TestMetadataResponseV1DataValueInner(unittest.TestCase): + """MetadataResponseV1DataValueInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MetadataResponseV1DataValueInner: + """Test MetadataResponseV1DataValueInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MetadataResponseV1DataValueInner` + """ + model = MetadataResponseV1DataValueInner() + if include_optional: + return MetadataResponseV1DataValueInner( + type = 'counter', + help = 'Number of HTTP requests', + unit = '' + ) + else: + return MetadataResponseV1DataValueInner( + type = 'counter', + help = 'Number of HTTP requests', + unit = '', + ) + """ + + def testMetadataResponseV1DataValueInner(self): + """Test MetadataResponseV1DataValueInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_metric_error_v1.py b/test/test_metric_error_v1.py new file mode 100644 index 00000000..cc753607 --- /dev/null +++ b/test/test_metric_error_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.metric_error_v1 import MetricErrorV1 + + +class TestMetricErrorV1(unittest.TestCase): + """MetricErrorV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MetricErrorV1: + """Test MetricErrorV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MetricErrorV1` + """ + model = MetricErrorV1() + if include_optional: + return MetricErrorV1( + metric_name = 'apache_accesses_total', + job_name = 'k8s-pods', + message = 'This is not a valid metric name.' + ) + else: + return MetricErrorV1( + ) + """ + + def testMetricErrorV1(self): + """Test MetricErrorV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_metric_v1.py b/test/test_metric_v1.py new file mode 100644 index 00000000..8e4cda90 --- /dev/null +++ b/test/test_metric_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.metric_v1 import MetricV1 + + +class TestMetricV1(unittest.TestCase): + """MetricV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MetricV1: + """Test MetricV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MetricV1` + """ + model = MetricV1() + if include_optional: + return MetricV1( + metric_name = 'apache_accesses_total', + modified_date = '2017-07-21T17:32:28Z', + user_id = 1234, + user_name = 'John Smith' + ) + else: + return MetricV1( + ) + """ + + def testMetricV1(self): + """Test MetricV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_metrics_collection_api.py b/test/test_metrics_collection_api.py new file mode 100644 index 00000000..c4eddade --- /dev/null +++ b/test/test_metrics_collection_api.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.metrics_collection_api import MetricsCollectionApi + + +class TestMetricsCollectionApi(unittest.TestCase): + """MetricsCollectionApi unit test stubs""" + + def setUp(self) -> None: + self.api = MetricsCollectionApi() + + def tearDown(self) -> None: + pass + + def test_get_disabled_metrics_by_job_v1(self) -> None: + """Test case for get_disabled_metrics_by_job_v1 + + List disabled metrics collection for Jobs. + """ + pass + + def test_post_disabled_metrics_v1(self) -> None: + """Test case for post_disabled_metrics_v1 + + Disable or re-enable metrics collection for Jobs + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_microsoft_sentinel_create_connection_info.py b/test/test_microsoft_sentinel_create_connection_info.py new file mode 100644 index 00000000..730670a4 --- /dev/null +++ b/test/test_microsoft_sentinel_create_connection_info.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.microsoft_sentinel_create_connection_info import MicrosoftSentinelCreateConnectionInfo + + +class TestMicrosoftSentinelCreateConnectionInfo(unittest.TestCase): + """MicrosoftSentinelCreateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MicrosoftSentinelCreateConnectionInfo: + """Test MicrosoftSentinelCreateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MicrosoftSentinelCreateConnectionInfo` + """ + model = MicrosoftSentinelCreateConnectionInfo() + if include_optional: + return MicrosoftSentinelCreateConnectionInfo( + workspace_id = '578aef60-81be-4d38-a278-ec77925edcf0', + secret = 'b29qb29jdWIyd2F5N0FoWThzYWhuZzZhaWdoMWVlcmFoM3BoZXRvZURpZTdlaWJhCg==' + ) + else: + return MicrosoftSentinelCreateConnectionInfo( + workspace_id = '578aef60-81be-4d38-a278-ec77925edcf0', + secret = 'b29qb29jdWIyd2F5N0FoWThzYWhuZzZhaWdoMWVlcmFoM3BoZXRvZURpZTdlaWJhCg==', + ) + """ + + def testMicrosoftSentinelCreateConnectionInfo(self): + """Test MicrosoftSentinelCreateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_microsoft_sentinel_update_connection_info.py b/test/test_microsoft_sentinel_update_connection_info.py new file mode 100644 index 00000000..96317def --- /dev/null +++ b/test/test_microsoft_sentinel_update_connection_info.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.microsoft_sentinel_update_connection_info import MicrosoftSentinelUpdateConnectionInfo + + +class TestMicrosoftSentinelUpdateConnectionInfo(unittest.TestCase): + """MicrosoftSentinelUpdateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MicrosoftSentinelUpdateConnectionInfo: + """Test MicrosoftSentinelUpdateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MicrosoftSentinelUpdateConnectionInfo` + """ + model = MicrosoftSentinelUpdateConnectionInfo() + if include_optional: + return MicrosoftSentinelUpdateConnectionInfo( + workspace_id = '578aef60-81be-4d38-a278-ec77925edcf0', + secret = 'b29qb29jdWIyd2F5N0FoWThzYWhuZzZhaWdoMWVlcmFoM3BoZXRvZURpZTdlaWJhCg==' + ) + else: + return MicrosoftSentinelUpdateConnectionInfo( + workspace_id = '578aef60-81be-4d38-a278-ec77925edcf0', + ) + """ + + def testMicrosoftSentinelUpdateConnectionInfo(self): + """Test MicrosoftSentinelUpdateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_monitor_event.py b/test/test_monitor_event.py new file mode 100644 index 00000000..da50e794 --- /dev/null +++ b/test/test_monitor_event.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Platform Zones Public API + +Sysdig Platform Zones Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.monitor_event import MonitorEvent + + +class TestMonitorEvent(unittest.TestCase): + """MonitorEvent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MonitorEvent: + """Test MonitorEvent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MonitorEvent` + """ + model = MonitorEvent() + if include_optional: + return MonitorEvent( + type = 'ALERT' + ) + else: + return MonitorEvent( + ) + """ + + def testMonitorEvent(self): + """Test MonitorEvent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_monitor_events_api.py b/test/test_monitor_events_api.py new file mode 100644 index 00000000..2dd9b1a8 --- /dev/null +++ b/test/test_monitor_events_api.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +Sysdig Platform Zones Public API + +Sysdig Platform Zones Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.monitor_events_api import MonitorEventsApi + + +class TestMonitorEventsApi(unittest.TestCase): + """MonitorEventsApi unit test stubs""" + + def setUp(self) -> None: + self.api = MonitorEventsApi() + + def tearDown(self) -> None: + pass + + def test_get_monitor_events_v1(self) -> None: + """Test case for get_monitor_events_v1 + + Get Events + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_monitor_events_page.py b/test/test_monitor_events_page.py new file mode 100644 index 00000000..d835705f --- /dev/null +++ b/test/test_monitor_events_page.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Platform Zones Public API + +Sysdig Platform Zones Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.monitor_events_page import MonitorEventsPage + + +class TestMonitorEventsPage(unittest.TestCase): + """MonitorEventsPage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MonitorEventsPage: + """Test MonitorEventsPage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MonitorEventsPage` + """ + model = MonitorEventsPage() + if include_optional: + return MonitorEventsPage( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn' + ) + else: + return MonitorEventsPage( + total = 10, + ) + """ + + def testMonitorEventsPage(self): + """Test MonitorEventsPage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_monitor_scope_label.py b/test/test_monitor_scope_label.py new file mode 100644 index 00000000..03912e36 --- /dev/null +++ b/test/test_monitor_scope_label.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Platform Zones Public API + +Sysdig Platform Zones Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.monitor_scope_label import MonitorScopeLabel + + +class TestMonitorScopeLabel(unittest.TestCase): + """MonitorScopeLabel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MonitorScopeLabel: + """Test MonitorScopeLabel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MonitorScopeLabel` + """ + model = MonitorScopeLabel() + if include_optional: + return MonitorScopeLabel( + key = 'kube_cluster_name', + value = [ + 'myCluster' + ] + ) + else: + return MonitorScopeLabel( + ) + """ + + def testMonitorScopeLabel(self): + """Test MonitorScopeLabel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ms_teams_notification_channel_options_v1.py b/test/test_ms_teams_notification_channel_options_v1.py new file mode 100644 index 00000000..3f91c380 --- /dev/null +++ b/test/test_ms_teams_notification_channel_options_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ms_teams_notification_channel_options_v1 import MsTeamsNotificationChannelOptionsV1 + + +class TestMsTeamsNotificationChannelOptionsV1(unittest.TestCase): + """MsTeamsNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MsTeamsNotificationChannelOptionsV1: + """Test MsTeamsNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MsTeamsNotificationChannelOptionsV1` + """ + model = MsTeamsNotificationChannelOptionsV1() + if include_optional: + return MsTeamsNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + url = 'https://xxxxxx.webhook.office.com/webhookb2/00000000-0000-0000-0000-000000000000@11111111-1111-1111-1111-111111111111/IncomingWebhook/00000000000000000000000000000000/22222222-2222-2222-2222-222222222222' + ) + else: + return MsTeamsNotificationChannelOptionsV1( + url = 'https://xxxxxx.webhook.office.com/webhookb2/00000000-0000-0000-0000-000000000000@11111111-1111-1111-1111-111111111111/IncomingWebhook/00000000000000000000000000000000/22222222-2222-2222-2222-222222222222', + ) + """ + + def testMsTeamsNotificationChannelOptionsV1(self): + """Test MsTeamsNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ms_teams_notification_channel_response_v1.py b/test/test_ms_teams_notification_channel_response_v1.py new file mode 100644 index 00000000..e9803b8e --- /dev/null +++ b/test/test_ms_teams_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ms_teams_notification_channel_response_v1 import MsTeamsNotificationChannelResponseV1 + + +class TestMsTeamsNotificationChannelResponseV1(unittest.TestCase): + """MsTeamsNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MsTeamsNotificationChannelResponseV1: + """Test MsTeamsNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `MsTeamsNotificationChannelResponseV1` + """ + model = MsTeamsNotificationChannelResponseV1() + if include_optional: + return MsTeamsNotificationChannelResponseV1( + options = None + ) + else: + return MsTeamsNotificationChannelResponseV1( + options = None, + ) + """ + + def testMsTeamsNotificationChannelResponseV1(self): + """Test MsTeamsNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_new_rule.py b/test/test_new_rule.py new file mode 100644 index 00000000..24ba5dc8 --- /dev/null +++ b/test/test_new_rule.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.new_rule import NewRule + + +class TestNewRule(unittest.TestCase): + """NewRule unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> NewRule: + """Test NewRule + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `NewRule` + """ + model = NewRule() + if include_optional: + return NewRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}},{"type":"vulnIsFixable"},{"type":"denyCVE","extra":{"vulnIds":["CVE-2021-12345","CVE-2021-67890"]}}] + ) + else: + return NewRule( + rule_type = 'vulnDenyList', + predicates = [{"type":"vulnSeverity","extra":{"level":"high"}},{"type":"vulnIsFixable"},{"type":"denyCVE","extra":{"vulnIds":["CVE-2021-12345","CVE-2021-67890"]}}], + ) + """ + + def testNewRule(self): + """Test NewRule""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_new_stage.py b/test/test_new_stage.py new file mode 100644 index 00000000..bac3c29d --- /dev/null +++ b/test/test_new_stage.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.new_stage import NewStage + + +class TestNewStage(unittest.TestCase): + """NewStage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> NewStage: + """Test NewStage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `NewStage` + """ + model = NewStage() + if include_optional: + return NewStage( + name = 'runtime', + configuration = [ + sysdig_client.models.stage_configuration.stage configuration( + scope = 'kubernetes.cluster.name = "my-cluster" and kubernetes.namespace.name = "my-namespace"', ) + ] + ) + else: + return NewStage( + name = 'runtime', + ) + """ + + def testNewStage(self): + """Test NewStage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_notification_channel.py b/test/test_notification_channel.py new file mode 100644 index 00000000..3038bd36 --- /dev/null +++ b/test/test_notification_channel.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.notification_channel import NotificationChannel + + +class TestNotificationChannel(unittest.TestCase): + """NotificationChannel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> NotificationChannel: + """Test NotificationChannel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `NotificationChannel` + """ + model = NotificationChannel() + if include_optional: + return NotificationChannel( + id = 2678526, + type = 'Email' + ) + else: + return NotificationChannel( + ) + """ + + def testNotificationChannel(self): + """Test NotificationChannel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_notification_channel_options_v1.py b/test/test_notification_channel_options_v1.py new file mode 100644 index 00000000..a45cedf7 --- /dev/null +++ b/test/test_notification_channel_options_v1.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.notification_channel_options_v1 import NotificationChannelOptionsV1 + + +class TestNotificationChannelOptionsV1(unittest.TestCase): + """NotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> NotificationChannelOptionsV1: + """Test NotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `NotificationChannelOptionsV1` + """ + model = NotificationChannelOptionsV1() + if include_optional: + return NotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True + ) + else: + return NotificationChannelOptionsV1( + ) + """ + + def testNotificationChannelOptionsV1(self): + """Test NotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_notification_channel_response_v1.py b/test/test_notification_channel_response_v1.py new file mode 100644 index 00000000..47fe6e14 --- /dev/null +++ b/test/test_notification_channel_response_v1.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.notification_channel_response_v1 import NotificationChannelResponseV1 + + +class TestNotificationChannelResponseV1(unittest.TestCase): + """NotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> NotificationChannelResponseV1: + """Test NotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `NotificationChannelResponseV1` + """ + model = NotificationChannelResponseV1() + if include_optional: + return NotificationChannelResponseV1( + team_id = 13, + is_enabled = False, + name = 'Sample Notification Channel Name', + has_test_notification_enabled = False, + type = 'EMAIL', + customer_id = 12, + id = 1, + version = 1, + created_on = '2017-07-21T17:32:28Z', + modified_on = '2017-07-21T17:32:28Z' + ) + else: + return NotificationChannelResponseV1( + name = 'Sample Notification Channel Name', + type = 'EMAIL', + ) + """ + + def testNotificationChannelResponseV1(self): + """Test NotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_notification_channel_type_v1.py b/test/test_notification_channel_type_v1.py new file mode 100644 index 00000000..f167d898 --- /dev/null +++ b/test/test_notification_channel_type_v1.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.notification_channel_type_v1 import NotificationChannelTypeV1 + + +class TestNotificationChannelTypeV1(unittest.TestCase): + """NotificationChannelTypeV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testNotificationChannelTypeV1(self): + """Test NotificationChannelTypeV1""" + # inst = NotificationChannelTypeV1() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_notification_channel_v1.py b/test/test_notification_channel_v1.py new file mode 100644 index 00000000..33ffd823 --- /dev/null +++ b/test/test_notification_channel_v1.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.notification_channel_v1 import NotificationChannelV1 + + +class TestNotificationChannelV1(unittest.TestCase): + """NotificationChannelV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> NotificationChannelV1: + """Test NotificationChannelV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `NotificationChannelV1` + """ + model = NotificationChannelV1() + if include_optional: + return NotificationChannelV1( + team_id = 13, + is_enabled = False, + name = 'Sample Notification Channel Name', + has_test_notification_enabled = False + ) + else: + return NotificationChannelV1( + name = 'Sample Notification Channel Name', + ) + """ + + def testNotificationChannelV1(self): + """Test NotificationChannelV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_notification_channels_api.py b/test/test_notification_channels_api.py new file mode 100644 index 00000000..67a4883b --- /dev/null +++ b/test/test_notification_channels_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.notification_channels_api import NotificationChannelsApi + + +class TestNotificationChannelsApi(unittest.TestCase): + """NotificationChannelsApi unit test stubs""" + + def setUp(self) -> None: + self.api = NotificationChannelsApi() + + def tearDown(self) -> None: + pass + + def test_create_notification_channel(self) -> None: + """Test case for create_notification_channel + + Create Notification Channel + """ + pass + + def test_delete_notification_channel_by_id(self) -> None: + """Test case for delete_notification_channel_by_id + + Delete Notification Channel + """ + pass + + def test_get_notification_channel_by_id(self) -> None: + """Test case for get_notification_channel_by_id + + Get Notification Channel + """ + pass + + def test_get_notification_channels(self) -> None: + """Test case for get_notification_channels + + List Notification Channels + """ + pass + + def test_update_notification_channel_by_id(self) -> None: + """Test case for update_notification_channel_by_id + + Update Notification Channel + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_offset_paginated_response.py b/test/test_offset_paginated_response.py new file mode 100644 index 00000000..c4f16749 --- /dev/null +++ b/test/test_offset_paginated_response.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.offset_paginated_response import OffsetPaginatedResponse + + +class TestOffsetPaginatedResponse(unittest.TestCase): + """OffsetPaginatedResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OffsetPaginatedResponse: + """Test OffsetPaginatedResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OffsetPaginatedResponse` + """ + model = OffsetPaginatedResponse() + if include_optional: + return OffsetPaginatedResponse( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + null + ] + ) + else: + return OffsetPaginatedResponse( + ) + """ + + def testOffsetPaginatedResponse(self): + """Test OffsetPaginatedResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_offset_paginated_response_page.py b/test/test_offset_paginated_response_page.py new file mode 100644 index 00000000..ea0276e6 --- /dev/null +++ b/test/test_offset_paginated_response_page.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.offset_paginated_response_page import OffsetPaginatedResponsePage + + +class TestOffsetPaginatedResponsePage(unittest.TestCase): + """OffsetPaginatedResponsePage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OffsetPaginatedResponsePage: + """Test OffsetPaginatedResponsePage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OffsetPaginatedResponsePage` + """ + model = OffsetPaginatedResponsePage() + if include_optional: + return OffsetPaginatedResponsePage( + previous = '10', + next = '30', + total = 1 + ) + else: + return OffsetPaginatedResponsePage( + ) + """ + + def testOffsetPaginatedResponsePage(self): + """Test OffsetPaginatedResponsePage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_open_id_base_v1.py b/test/test_open_id_base_v1.py new file mode 100644 index 00000000..c23022b2 --- /dev/null +++ b/test/test_open_id_base_v1.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.open_id_base_v1 import OpenIdBaseV1 + + +class TestOpenIdBaseV1(unittest.TestCase): + """OpenIdBaseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OpenIdBaseV1: + """Test OpenIdBaseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OpenIdBaseV1` + """ + model = OpenIdBaseV1() + if include_optional: + return OpenIdBaseV1( + issuer_url = 'https://accounts.example.com', + client_id = 'client-id', + is_metadata_discovery_enabled = True, + metadata = sysdig_client.models.the_metadata_of_the_open_id_connect_provider.The metadata of the OpenID Connect provider( + issuer = 'https://accounts.example.com', + authorization_endpoint = 'https://accounts.example.com/oauth2/authorize', + token_endpoint = 'https://accounts.example.com/oauth2/token', + jwks_uri = 'https://accounts.example.com/oauth2/jwks', + end_session_endpoint = 'https://accounts.example.com/oauth2/logout', + user_info_endpoint = 'https://accounts.example.com/oauth2/userinfo', + token_auth_method = 'CLIENT_SECRET_BASIC', ), + group_attribute_name = 'groups', + is_additional_scopes_check_enabled = True, + additional_scopes = ["scope 1","scope 2"] + ) + else: + return OpenIdBaseV1( + ) + """ + + def testOpenIdBaseV1(self): + """Test OpenIdBaseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_open_id_config_response_v1.py b/test/test_open_id_config_response_v1.py new file mode 100644 index 00000000..e11c66c9 --- /dev/null +++ b/test/test_open_id_config_response_v1.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.open_id_config_response_v1 import OpenIdConfigResponseV1 + + +class TestOpenIdConfigResponseV1(unittest.TestCase): + """OpenIdConfigResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OpenIdConfigResponseV1: + """Test OpenIdConfigResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OpenIdConfigResponseV1` + """ + model = OpenIdConfigResponseV1() + if include_optional: + return OpenIdConfigResponseV1( + issuer_url = 'https://accounts.example.com', + client_id = 'client-id', + is_metadata_discovery_enabled = True, + metadata = sysdig_client.models.the_metadata_of_the_open_id_connect_provider.The metadata of the OpenID Connect provider( + issuer = 'https://accounts.example.com', + authorization_endpoint = 'https://accounts.example.com/oauth2/authorize', + token_endpoint = 'https://accounts.example.com/oauth2/token', + jwks_uri = 'https://accounts.example.com/oauth2/jwks', + end_session_endpoint = 'https://accounts.example.com/oauth2/logout', + user_info_endpoint = 'https://accounts.example.com/oauth2/userinfo', + token_auth_method = 'CLIENT_SECRET_BASIC', ), + group_attribute_name = 'groups', + is_additional_scopes_check_enabled = True, + additional_scopes = [scope 1, scope 2] + ) + else: + return OpenIdConfigResponseV1( + ) + """ + + def testOpenIdConfigResponseV1(self): + """Test OpenIdConfigResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_open_id_create_request_v1.py b/test/test_open_id_create_request_v1.py new file mode 100644 index 00000000..706170b0 --- /dev/null +++ b/test/test_open_id_create_request_v1.py @@ -0,0 +1,70 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.open_id_create_request_v1 import OpenIdCreateRequestV1 + + +class TestOpenIdCreateRequestV1(unittest.TestCase): + """OpenIdCreateRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OpenIdCreateRequestV1: + """Test OpenIdCreateRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OpenIdCreateRequestV1` + """ + model = OpenIdCreateRequestV1() + if include_optional: + return OpenIdCreateRequestV1( + issuer_url = 'https://accounts.example.com', + client_id = 'client-id', + is_metadata_discovery_enabled = True, + metadata = sysdig_client.models.the_metadata_of_the_open_id_connect_provider.The metadata of the OpenID Connect provider( + issuer = 'https://accounts.example.com', + authorization_endpoint = 'https://accounts.example.com/oauth2/authorize', + token_endpoint = 'https://accounts.example.com/oauth2/token', + jwks_uri = 'https://accounts.example.com/oauth2/jwks', + end_session_endpoint = 'https://accounts.example.com/oauth2/logout', + user_info_endpoint = 'https://accounts.example.com/oauth2/userinfo', + token_auth_method = 'CLIENT_SECRET_BASIC', ), + group_attribute_name = 'groups', + is_additional_scopes_check_enabled = True, + additional_scopes = [scope 1, scope 2], + client_secret = 'client-secret' + ) + else: + return OpenIdCreateRequestV1( + issuer_url = 'https://accounts.example.com', + client_id = 'client-id', + client_secret = 'client-secret', + ) + """ + + def testOpenIdCreateRequestV1(self): + """Test OpenIdCreateRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_open_id_metadata_v1.py b/test/test_open_id_metadata_v1.py new file mode 100644 index 00000000..58f07c15 --- /dev/null +++ b/test/test_open_id_metadata_v1.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.open_id_metadata_v1 import OpenIdMetadataV1 + + +class TestOpenIdMetadataV1(unittest.TestCase): + """OpenIdMetadataV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OpenIdMetadataV1: + """Test OpenIdMetadataV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OpenIdMetadataV1` + """ + model = OpenIdMetadataV1() + if include_optional: + return OpenIdMetadataV1( + issuer = 'https://accounts.example.com', + authorization_endpoint = 'https://accounts.example.com/oauth2/authorize', + token_endpoint = 'https://accounts.example.com/oauth2/token', + jwks_uri = 'https://accounts.example.com/oauth2/jwks', + end_session_endpoint = 'https://accounts.example.com/oauth2/logout', + user_info_endpoint = 'https://accounts.example.com/oauth2/userinfo', + token_auth_method = 'CLIENT_SECRET_BASIC' + ) + else: + return OpenIdMetadataV1( + authorization_endpoint = 'https://accounts.example.com/oauth2/authorize', + token_endpoint = 'https://accounts.example.com/oauth2/token', + token_auth_method = 'CLIENT_SECRET_BASIC', + ) + """ + + def testOpenIdMetadataV1(self): + """Test OpenIdMetadataV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_open_id_request_base_v1.py b/test/test_open_id_request_base_v1.py new file mode 100644 index 00000000..877c666e --- /dev/null +++ b/test/test_open_id_request_base_v1.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.open_id_request_base_v1 import OpenIdRequestBaseV1 + + +class TestOpenIdRequestBaseV1(unittest.TestCase): + """OpenIdRequestBaseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OpenIdRequestBaseV1: + """Test OpenIdRequestBaseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OpenIdRequestBaseV1` + """ + model = OpenIdRequestBaseV1() + if include_optional: + return OpenIdRequestBaseV1( + issuer_url = 'https://accounts.example.com', + client_id = 'client-id', + is_metadata_discovery_enabled = True, + metadata = sysdig_client.models.the_metadata_of_the_open_id_connect_provider.The metadata of the OpenID Connect provider( + issuer = 'https://accounts.example.com', + authorization_endpoint = 'https://accounts.example.com/oauth2/authorize', + token_endpoint = 'https://accounts.example.com/oauth2/token', + jwks_uri = 'https://accounts.example.com/oauth2/jwks', + end_session_endpoint = 'https://accounts.example.com/oauth2/logout', + user_info_endpoint = 'https://accounts.example.com/oauth2/userinfo', + token_auth_method = 'CLIENT_SECRET_BASIC', ), + group_attribute_name = 'groups', + is_additional_scopes_check_enabled = True, + additional_scopes = [scope 1, scope 2], + client_secret = 'client-secret' + ) + else: + return OpenIdRequestBaseV1( + ) + """ + + def testOpenIdRequestBaseV1(self): + """Test OpenIdRequestBaseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_open_id_update_request_v1.py b/test/test_open_id_update_request_v1.py new file mode 100644 index 00000000..96fe9ba6 --- /dev/null +++ b/test/test_open_id_update_request_v1.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.open_id_update_request_v1 import OpenIdUpdateRequestV1 + + +class TestOpenIdUpdateRequestV1(unittest.TestCase): + """OpenIdUpdateRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OpenIdUpdateRequestV1: + """Test OpenIdUpdateRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OpenIdUpdateRequestV1` + """ + model = OpenIdUpdateRequestV1() + if include_optional: + return OpenIdUpdateRequestV1( + issuer_url = 'https://accounts.example.com', + client_id = 'client-id', + is_metadata_discovery_enabled = True, + metadata = sysdig_client.models.the_metadata_of_the_open_id_connect_provider.The metadata of the OpenID Connect provider( + issuer = 'https://accounts.example.com', + authorization_endpoint = 'https://accounts.example.com/oauth2/authorize', + token_endpoint = 'https://accounts.example.com/oauth2/token', + jwks_uri = 'https://accounts.example.com/oauth2/jwks', + end_session_endpoint = 'https://accounts.example.com/oauth2/logout', + user_info_endpoint = 'https://accounts.example.com/oauth2/userinfo', + token_auth_method = 'CLIENT_SECRET_BASIC', ), + group_attribute_name = 'groups', + is_additional_scopes_check_enabled = True, + additional_scopes = [scope 1, scope 2], + client_secret = 'client-secret' + ) + else: + return OpenIdUpdateRequestV1( + issuer_url = 'https://accounts.example.com', + client_id = 'client-id', + is_metadata_discovery_enabled = True, + is_additional_scopes_check_enabled = True, + client_secret = 'client-secret', + ) + """ + + def testOpenIdUpdateRequestV1(self): + """Test OpenIdUpdateRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_operand.py b/test/test_operand.py new file mode 100644 index 00000000..6d19ae36 --- /dev/null +++ b/test/test_operand.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.operand import Operand + + +class TestOperand(unittest.TestCase): + """Operand unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testOperand(self): + """Test Operand""" + # inst = Operand() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_opsgenie_notification_channel_options_v1.py b/test/test_opsgenie_notification_channel_options_v1.py new file mode 100644 index 00000000..fa8dd2c7 --- /dev/null +++ b/test/test_opsgenie_notification_channel_options_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.opsgenie_notification_channel_options_v1 import OpsgenieNotificationChannelOptionsV1 + + +class TestOpsgenieNotificationChannelOptionsV1(unittest.TestCase): + """OpsgenieNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OpsgenieNotificationChannelOptionsV1: + """Test OpsgenieNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OpsgenieNotificationChannelOptionsV1` + """ + model = OpsgenieNotificationChannelOptionsV1() + if include_optional: + return OpsgenieNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + region = 'US', + api_key = 'opsgenie-api-key' + ) + else: + return OpsgenieNotificationChannelOptionsV1( + api_key = 'opsgenie-api-key', + ) + """ + + def testOpsgenieNotificationChannelOptionsV1(self): + """Test OpsgenieNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_opsgenie_notification_channel_response_v1.py b/test/test_opsgenie_notification_channel_response_v1.py new file mode 100644 index 00000000..08a5776e --- /dev/null +++ b/test/test_opsgenie_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.opsgenie_notification_channel_response_v1 import OpsgenieNotificationChannelResponseV1 + + +class TestOpsgenieNotificationChannelResponseV1(unittest.TestCase): + """OpsgenieNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> OpsgenieNotificationChannelResponseV1: + """Test OpsgenieNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `OpsgenieNotificationChannelResponseV1` + """ + model = OpsgenieNotificationChannelResponseV1() + if include_optional: + return OpsgenieNotificationChannelResponseV1( + options = None + ) + else: + return OpsgenieNotificationChannelResponseV1( + options = None, + ) + """ + + def testOpsgenieNotificationChannelResponseV1(self): + """Test OpsgenieNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_originator.py b/test/test_originator.py new file mode 100644 index 00000000..83c24485 --- /dev/null +++ b/test/test_originator.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.originator import Originator + + +class TestOriginator(unittest.TestCase): + """Originator unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testOriginator(self): + """Test Originator""" + # inst = Originator() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_package.py b/test/test_package.py new file mode 100644 index 00000000..15bf86a6 --- /dev/null +++ b/test/test_package.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.package import Package + + +class TestPackage(unittest.TestCase): + """Package unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Package: + """Test Package + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Package` + """ + model = Package() + if include_optional: + return Package( + type = 'os', + name = 'openssl', + is_running = True, + is_removed = True, + version = '1.2.3', + license = 'MIT', + path = '/usr/local/bin/openssl', + suggested_fix = '1.2.3', + layer_ref = 'l-123124', + vulnerabilities_refs = [ + '71af37c6a8f2772' + ] + ) + else: + return Package( + type = 'os', + name = 'openssl', + version = '1.2.3', + ) + """ + + def testPackage(self): + """Test Package""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_package_name.py b/test/test_package_name.py new file mode 100644 index 00000000..0b4398e2 --- /dev/null +++ b/test/test_package_name.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.package_name import PackageName + + +class TestPackageName(unittest.TestCase): + """PackageName unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PackageName: + """Test PackageName + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PackageName` + """ + model = PackageName() + if include_optional: + return PackageName( + context_type = 'packageName', + context_value = 'github.com/prometheus/common' + ) + else: + return PackageName( + ) + """ + + def testPackageName(self): + """Test PackageName""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_package_name_version.py b/test/test_package_name_version.py new file mode 100644 index 00000000..ad0db84b --- /dev/null +++ b/test/test_package_name_version.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.package_name_version import PackageNameVersion + + +class TestPackageNameVersion(unittest.TestCase): + """PackageNameVersion unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PackageNameVersion: + """Test PackageNameVersion + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PackageNameVersion` + """ + model = PackageNameVersion() + if include_optional: + return PackageNameVersion( + context_type = 'packageVersion', + context_value = 'github.com/prometheus/common' + ) + else: + return PackageNameVersion( + ) + """ + + def testPackageNameVersion(self): + """Test PackageNameVersion""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_package_path.py b/test/test_package_path.py new file mode 100644 index 00000000..8f8e7960 --- /dev/null +++ b/test/test_package_path.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.package_path import PackagePath + + +class TestPackagePath(unittest.TestCase): + """PackagePath unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PackagePath: + """Test PackagePath + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PackagePath` + """ + model = PackagePath() + if include_optional: + return PackagePath( + context_type = 'packagePath', + context_value = '/var/lib' + ) + else: + return PackagePath( + ) + """ + + def testPackagePath(self): + """Test PackagePath""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_package_path_version.py b/test/test_package_path_version.py new file mode 100644 index 00000000..d9fa79bd --- /dev/null +++ b/test/test_package_path_version.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.package_path_version import PackagePathVersion + + +class TestPackagePathVersion(unittest.TestCase): + """PackagePathVersion unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PackagePathVersion: + """Test PackagePathVersion + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PackagePathVersion` + """ + model = PackagePathVersion() + if include_optional: + return PackagePathVersion( + context_type = 'packageVersion', + context_value = 'v0.50.0' + ) + else: + return PackagePathVersion( + ) + """ + + def testPackagePathVersion(self): + """Test PackagePathVersion""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_package_version.py b/test/test_package_version.py new file mode 100644 index 00000000..14d30de1 --- /dev/null +++ b/test/test_package_version.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.package_version import PackageVersion + + +class TestPackageVersion(unittest.TestCase): + """PackageVersion unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PackageVersion: + """Test PackageVersion + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PackageVersion` + """ + model = PackageVersion() + if include_optional: + return PackageVersion( + context_type = 'packageVersion', + context_value = 'v0.50.0' + ) + else: + return PackageVersion( + ) + """ + + def testPackageVersion(self): + """Test PackageVersion""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_page.py b/test/test_page.py new file mode 100644 index 00000000..35c8f8f6 --- /dev/null +++ b/test/test_page.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.page import Page + + +class TestPage(unittest.TestCase): + """Page unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Page: + """Test Page + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Page` + """ + model = Page() + if include_optional: + return Page( + total = 10, + prev = 'LTltNGUybXIwdWkzZThhMjE1bjRn', + next = 'KzltNGUybXIwdWkzZThhMjE1bjRn' + ) + else: + return Page( + total = 10, + ) + """ + + def testPage(self): + """Test Page""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_pager_duty_notification_channel_options_v1.py b/test/test_pager_duty_notification_channel_options_v1.py new file mode 100644 index 00000000..43ad7410 --- /dev/null +++ b/test/test_pager_duty_notification_channel_options_v1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.pager_duty_notification_channel_options_v1 import PagerDutyNotificationChannelOptionsV1 + + +class TestPagerDutyNotificationChannelOptionsV1(unittest.TestCase): + """PagerDutyNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PagerDutyNotificationChannelOptionsV1: + """Test PagerDutyNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PagerDutyNotificationChannelOptionsV1` + """ + model = PagerDutyNotificationChannelOptionsV1() + if include_optional: + return PagerDutyNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + account = 'myPagerDutyUser', + service_key = 'myPagerDutyServiceKey', + service_name = 'myPagerDutyService' + ) + else: + return PagerDutyNotificationChannelOptionsV1( + account = 'myPagerDutyUser', + service_key = 'myPagerDutyServiceKey', + service_name = 'myPagerDutyService', + ) + """ + + def testPagerDutyNotificationChannelOptionsV1(self): + """Test PagerDutyNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_pager_duty_notification_channel_response_v1.py b/test/test_pager_duty_notification_channel_response_v1.py new file mode 100644 index 00000000..ed56374f --- /dev/null +++ b/test/test_pager_duty_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.pager_duty_notification_channel_response_v1 import PagerDutyNotificationChannelResponseV1 + + +class TestPagerDutyNotificationChannelResponseV1(unittest.TestCase): + """PagerDutyNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PagerDutyNotificationChannelResponseV1: + """Test PagerDutyNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PagerDutyNotificationChannelResponseV1` + """ + model = PagerDutyNotificationChannelResponseV1() + if include_optional: + return PagerDutyNotificationChannelResponseV1( + options = None + ) + else: + return PagerDutyNotificationChannelResponseV1( + options = None, + ) + """ + + def testPagerDutyNotificationChannelResponseV1(self): + """Test PagerDutyNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_paginated_integrations_response_v1.py b/test/test_paginated_integrations_response_v1.py new file mode 100644 index 00000000..076dd277 --- /dev/null +++ b/test/test_paginated_integrations_response_v1.py @@ -0,0 +1,81 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.paginated_integrations_response_v1 import PaginatedIntegrationsResponseV1 + + +class TestPaginatedIntegrationsResponseV1(unittest.TestCase): + """PaginatedIntegrationsResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PaginatedIntegrationsResponseV1: + """Test PaginatedIntegrationsResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PaginatedIntegrationsResponseV1` + """ + model = PaginatedIntegrationsResponseV1() + if include_optional: + return PaginatedIntegrationsResponseV1( + page = sysdig_client.models.offset_paginated_response_page.OffsetPaginatedResponse_page( + previous = '10', + next = '30', + total = 1, ), + data = [ + sysdig_client.models.jira_integration_response_v1.Jira Integration Response V1( + id = null, + name = 'name', + created_at = '2023-09-06T12:30:45Z', + modified_at = '2023-09-06T12:30:45Z', + deleted_at = '2023-09-06T12:30:45Z', + customer_id = null, + is_enabled = False, + is_valid = False, + is_all_teams = False, + team_ids = [ + 1 + ], + jira_project_id = '10000', + jira_project_name = 'jira-project-name', + jira_url = 'https://atlassian-url.com', + jira_email = 'jira.user@email.com', + jira_assignee = '5b10ac8d82e05b22cc7d4ef5', + jira_labels = [ + 'label' + ], + parent_issue_type = null, + child_issue_type = null, ) + ] + ) + else: + return PaginatedIntegrationsResponseV1( + ) + """ + + def testPaginatedIntegrationsResponseV1(self): + """Test PaginatedIntegrationsResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_permission_v1.py b/test/test_permission_v1.py new file mode 100644 index 00000000..befa7df3 --- /dev/null +++ b/test/test_permission_v1.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.permission_v1 import PermissionV1 + + +class TestPermissionV1(unittest.TestCase): + """PermissionV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PermissionV1: + """Test PermissionV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PermissionV1` + """ + model = PermissionV1() + if include_optional: + return PermissionV1( + id = 'cspm-results.read', + description = 'Access CSPM results', + products = [ + 'SDS' + ], + dependencies = [ + 'cspm-results.read' + ] + ) + else: + return PermissionV1( + ) + """ + + def testPermissionV1(self): + """Test PermissionV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_permissions_api.py b/test/test_permissions_api.py new file mode 100644 index 00000000..591b6a23 --- /dev/null +++ b/test/test_permissions_api.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.permissions_api import PermissionsApi + + +class TestPermissionsApi(unittest.TestCase): + """PermissionsApi unit test stubs""" + + def setUp(self) -> None: + self.api = PermissionsApi() + + def tearDown(self) -> None: + pass + + def test_get_permissions_v1(self) -> None: + """Test case for get_permissions_v1 + + Get Customer Permissions + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_pipeline_result.py b/test/test_pipeline_result.py new file mode 100644 index 00000000..2cf09956 --- /dev/null +++ b/test/test_pipeline_result.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.pipeline_result import PipelineResult + + +class TestPipelineResult(unittest.TestCase): + """PipelineResult unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PipelineResult: + """Test PipelineResult + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PipelineResult` + """ + model = PipelineResult() + if include_optional: + return PipelineResult( + policy_evaluation_result = 'passed', + result_id = 'scan-1234', + pull_string = 'nginx:latest', + vuln_total_by_severity = sysdig_client.models.vuln_total_by_severity.VulnTotalBySeverity( + critical = 12345, + high = 12345, + medium = 12345, + low = 12345, + negligible = 12345, ), + image_id = 'sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6', + created_at = '2024-01-22T08:51:46.016464Z' + ) + else: + return PipelineResult( + ) + """ + + def testPipelineResult(self): + """Test PipelineResult""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_pipeline_results_response.py b/test/test_pipeline_results_response.py new file mode 100644 index 00000000..cf722e8e --- /dev/null +++ b/test/test_pipeline_results_response.py @@ -0,0 +1,69 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.pipeline_results_response import PipelineResultsResponse + + +class TestPipelineResultsResponse(unittest.TestCase): + """PipelineResultsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PipelineResultsResponse: + """Test PipelineResultsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PipelineResultsResponse` + """ + model = PipelineResultsResponse() + if include_optional: + return PipelineResultsResponse( + page = sysdig_client.models.vulnerability_management_page.VulnerabilityManagementPage( + total = 1, + next = 'MTI0MjM0Cg==', ), + data = [ + sysdig_client.models.pipeline_result.PipelineResult( + policy_evaluation_result = 'passed', + result_id = 'scan-1234', + pull_string = 'nginx:latest', + vuln_total_by_severity = sysdig_client.models.vuln_total_by_severity.VulnTotalBySeverity( + critical = 12345, + high = 12345, + medium = 12345, + low = 12345, + negligible = 12345, ), + image_id = 'sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6', + created_at = '2024-01-22T08:51:46.016464Z', ) + ] + ) + else: + return PipelineResultsResponse( + ) + """ + + def testPipelineResultsResponse(self): + """Test PipelineResultsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_pkg_vuln_failure.py b/test/test_pkg_vuln_failure.py new file mode 100644 index 00000000..1eff5ea2 --- /dev/null +++ b/test/test_pkg_vuln_failure.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.pkg_vuln_failure import PkgVulnFailure + + +class TestPkgVulnFailure(unittest.TestCase): + """PkgVulnFailure unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PkgVulnFailure: + """Test PkgVulnFailure + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PkgVulnFailure` + """ + model = PkgVulnFailure() + if include_optional: + return PkgVulnFailure( + description = 'description', + package_ref = '2772f8a6c73fa17', + vulnerability_ref = '71af37c6a8f2772', + risk_accept_refs = [ + 'e6b4b0d3255bfef' + ] + ) + else: + return PkgVulnFailure( + description = 'description', + ) + """ + + def testPkgVulnFailure(self): + """Test PkgVulnFailure""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_platform_audit_api.py b/test/test_platform_audit_api.py new file mode 100644 index 00000000..4c64afd1 --- /dev/null +++ b/test/test_platform_audit_api.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.platform_audit_api import PlatformAuditApi + + +class TestPlatformAuditApi(unittest.TestCase): + """PlatformAuditApi unit test stubs""" + + def setUp(self) -> None: + self.api = PlatformAuditApi() + + def tearDown(self) -> None: + pass + + def test_get_platform_audit_events_v1(self) -> None: + """Test case for get_platform_audit_events_v1 + + Get Platform Audit Events + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_policies.py b/test/test_policies.py new file mode 100644 index 00000000..2ac8f3bb --- /dev/null +++ b/test/test_policies.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.policies import Policies + + +class TestPolicies(unittest.TestCase): + """Policies unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Policies: + """Test Policies + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Policies` + """ + model = Policies() + if include_optional: + return Policies( + global_evaluation = 'passed', + evaluations = [ + sysdig_client.models.policy_evaluation.Policy Evaluation( + name = 'policy-0', + identifier = '550e8400-e29b', + description = 'description', + bundles = [ + sysdig_client.models.bundle.Bundle( + name = 'Severe vulnerabilities with a Fix', + identifier = 'severe_vulnerabilities_with_a_fix', + type = 'predefined', + rules = [ + sysdig_client.models.rule.Rule( + rule_id = '1234A', + rule_type = 'vulnDenyList', + evaluation_result = 'passed', + predicates = [ + sysdig_client.models.predicate.Predicate( + type = 'vulnIsFixable', + extra = sysdig_client.models.extra.extra(), ) + ], + failure_type = 'pkgVulnFailure', + description = 'rule description', + failures = [ + null + ], ) + ], ) + ], + evaluation = 'passed', + created_at = '2024-01-22T08:51:46.016464Z', + updated_at = '2024-01-22T08:51:46.016464Z', ) + ] + ) + else: + return Policies( + ) + """ + + def testPolicies(self): + """Test Policies""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_policies_page.py b/test/test_policies_page.py new file mode 100644 index 00000000..ecca1d5e --- /dev/null +++ b/test/test_policies_page.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.policies_page import PoliciesPage + + +class TestPoliciesPage(unittest.TestCase): + """PoliciesPage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PoliciesPage: + """Test PoliciesPage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PoliciesPage` + """ + model = PoliciesPage() + if include_optional: + return PoliciesPage( + returned = 1, + matched = 10, + next = 'MA==' + ) + else: + return PoliciesPage( + returned = 1, + matched = 10, + ) + """ + + def testPoliciesPage(self): + """Test PoliciesPage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_policies_summary_entry.py b/test/test_policies_summary_entry.py new file mode 100644 index 00000000..ca4cc6dd --- /dev/null +++ b/test/test_policies_summary_entry.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.policies_summary_entry import PoliciesSummaryEntry + + +class TestPoliciesSummaryEntry(unittest.TestCase): + """PoliciesSummaryEntry unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PoliciesSummaryEntry: + """Test PoliciesSummaryEntry + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PoliciesSummaryEntry` + """ + model = PoliciesSummaryEntry() + if include_optional: + return PoliciesSummaryEntry( + id = 2, + name = 'Sysdig Kubernetes', + is_passed = False + ) + else: + return PoliciesSummaryEntry( + id = 2, + name = 'Sysdig Kubernetes', + is_passed = False, + ) + """ + + def testPoliciesSummaryEntry(self): + """Test PoliciesSummaryEntry""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_policy_evaluation.py b/test/test_policy_evaluation.py new file mode 100644 index 00000000..96b71a31 --- /dev/null +++ b/test/test_policy_evaluation.py @@ -0,0 +1,85 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.policy_evaluation import PolicyEvaluation + + +class TestPolicyEvaluation(unittest.TestCase): + """PolicyEvaluation unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PolicyEvaluation: + """Test PolicyEvaluation + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PolicyEvaluation` + """ + model = PolicyEvaluation() + if include_optional: + return PolicyEvaluation( + name = 'policy-0', + identifier = '550e8400-e29b', + description = 'description', + bundles = [ + sysdig_client.models.bundle.Bundle( + name = 'Severe vulnerabilities with a Fix', + identifier = 'severe_vulnerabilities_with_a_fix', + type = 'predefined', + rules = [ + sysdig_client.models.rule.Rule( + rule_id = '1234A', + rule_type = 'vulnDenyList', + evaluation_result = 'passed', + predicates = [ + sysdig_client.models.predicate.Predicate( + type = 'vulnIsFixable', + extra = sysdig_client.models.extra.extra(), ) + ], + failure_type = 'pkgVulnFailure', + description = 'rule description', + failures = [ + null + ], ) + ], ) + ], + evaluation = 'passed', + created_at = '2024-01-22T08:51:46.016464Z', + updated_at = '2024-01-22T08:51:46.016464Z' + ) + else: + return PolicyEvaluation( + name = 'policy-0', + identifier = '550e8400-e29b', + evaluation = 'passed', + created_at = '2024-01-22T08:51:46.016464Z', + updated_at = '2024-01-22T08:51:46.016464Z', + ) + """ + + def testPolicyEvaluation(self): + """Test PolicyEvaluation""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_policy_evaluation_result.py b/test/test_policy_evaluation_result.py new file mode 100644 index 00000000..f34ec825 --- /dev/null +++ b/test/test_policy_evaluation_result.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Secure Vulnerability Management Runtimeview Public API + +This API allows reading runtime vulnerability data. + +The version of the OpenAPI document: 1.0.3 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.policy_evaluation_result import PolicyEvaluationResult + + +class TestPolicyEvaluationResult(unittest.TestCase): + """PolicyEvaluationResult unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testPolicyEvaluationResult(self): + """Test PolicyEvaluationResult""" + # inst = PolicyEvaluationResult() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_policy_origin.py b/test/test_policy_origin.py new file mode 100644 index 00000000..5352fa69 --- /dev/null +++ b/test/test_policy_origin.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.policy_origin import PolicyOrigin + + +class TestPolicyOrigin(unittest.TestCase): + """PolicyOrigin unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testPolicyOrigin(self): + """Test PolicyOrigin""" + # inst = PolicyOrigin() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_policy_summary.py b/test/test_policy_summary.py new file mode 100644 index 00000000..2b68929e --- /dev/null +++ b/test/test_policy_summary.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.policy_summary import PolicySummary + + +class TestPolicySummary(unittest.TestCase): + """PolicySummary unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PolicySummary: + """Test PolicySummary + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PolicySummary` + """ + model = PolicySummary() + if include_optional: + return PolicySummary( + id = 1, + name = 'Sysdig policy', + identifier = 'sysdig-policy', + description = 'Sysdig policy', + stages = [ + 'runtime' + ] + ) + else: + return PolicySummary( + id = 1, + name = 'Sysdig policy', + identifier = 'sysdig-policy', + stages = [ + 'runtime' + ], + ) + """ + + def testPolicySummary(self): + """Test PolicySummary""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_posture_policy_summary.py b/test/test_posture_policy_summary.py new file mode 100644 index 00000000..01c6e108 --- /dev/null +++ b/test/test_posture_policy_summary.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.posture_policy_summary import PosturePolicySummary + + +class TestPosturePolicySummary(unittest.TestCase): + """PosturePolicySummary unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PosturePolicySummary: + """Test PosturePolicySummary + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PosturePolicySummary` + """ + model = PosturePolicySummary() + if include_optional: + return PosturePolicySummary( + pass_percentage = 0, + policies = [ + sysdig_client.models.policies_summary_entry.PoliciesSummaryEntry( + id = 2, + name = 'Sysdig Kubernetes', + is_passed = False, ) + ] + ) + else: + return PosturePolicySummary( + pass_percentage = 0, + policies = [ + sysdig_client.models.policies_summary_entry.PoliciesSummaryEntry( + id = 2, + name = 'Sysdig Kubernetes', + is_passed = False, ) + ], + ) + """ + + def testPosturePolicySummary(self): + """Test PosturePolicySummary""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_predicate.py b/test/test_predicate.py new file mode 100644 index 00000000..db402ffe --- /dev/null +++ b/test/test_predicate.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.predicate import Predicate + + +class TestPredicate(unittest.TestCase): + """Predicate unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Predicate: + """Test Predicate + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Predicate` + """ + model = Predicate() + if include_optional: + return Predicate( + type = 'vulnIsFixable', + extra = None + ) + else: + return Predicate( + ) + """ + + def testPredicate(self): + """Test Predicate""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_predicates_inner.py b/test/test_predicates_inner.py new file mode 100644 index 00000000..ceee655b --- /dev/null +++ b/test/test_predicates_inner.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.predicates_inner import PredicatesInner + + +class TestPredicatesInner(unittest.TestCase): + """PredicatesInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PredicatesInner: + """Test PredicatesInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PredicatesInner` + """ + model = PredicatesInner() + if include_optional: + return PredicatesInner( + type = 'vulnSeverity', + extra = sysdig_client.models.image_config_creation_date_with_age_extra.ImageConfigCreationDateWithAge_extra( + key = 1, ) + ) + else: + return PredicatesInner( + type = 'vulnSeverity', + extra = sysdig_client.models.image_config_creation_date_with_age_extra.ImageConfigCreationDateWithAge_extra( + key = 1, ), + ) + """ + + def testPredicatesInner(self): + """Test PredicatesInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_pricing_projected_response_v1.py b/test/test_pricing_projected_response_v1.py new file mode 100644 index 00000000..beb00007 --- /dev/null +++ b/test/test_pricing_projected_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.pricing_projected_response_v1 import PricingProjectedResponseV1 + + +class TestPricingProjectedResponseV1(unittest.TestCase): + """PricingProjectedResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PricingProjectedResponseV1: + """Test PricingProjectedResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PricingProjectedResponseV1` + """ + model = PricingProjectedResponseV1() + if include_optional: + return PricingProjectedResponseV1( + cluster_name = 'My pricing', + monthly_projected_cost = 113114.72 + ) + else: + return PricingProjectedResponseV1( + ) + """ + + def testPricingProjectedResponseV1(self): + """Test PricingProjectedResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_pricing_response_v1.py b/test/test_pricing_response_v1.py new file mode 100644 index 00000000..05785c61 --- /dev/null +++ b/test/test_pricing_response_v1.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.pricing_response_v1 import PricingResponseV1 + + +class TestPricingResponseV1(unittest.TestCase): + """PricingResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PricingResponseV1: + """Test PricingResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PricingResponseV1` + """ + model = PricingResponseV1() + if include_optional: + return PricingResponseV1( + id = 1, + type = 'CLUSTER', + cluster_name = 'My pricing', + name = 'My pricing', + unit_pricing = sysdig_client.models.unit_pricing_v1.Unit Pricing V1( + cpu = 0.031611, + ram = 0.004237, + storage = 0.00005479452, + spot_cpu = 1.337, + spot_ram = 1.337, ), + spot_label = 'cost-advisor-spot-node', + spot_label_value = 'true', + version = 1 + ) + else: + return PricingResponseV1( + ) + """ + + def testPricingResponseV1(self): + """Test PricingResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_pricing_type.py b/test/test_pricing_type.py new file mode 100644 index 00000000..6eaa8428 --- /dev/null +++ b/test/test_pricing_type.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.pricing_type import PricingType + + +class TestPricingType(unittest.TestCase): + """PricingType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testPricingType(self): + """Test PricingType""" + # inst = PricingType() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_amazon_sqs.py b/test/test_private_connection_info_amazon_sqs.py new file mode 100644 index 00000000..ebe7b0f0 --- /dev/null +++ b/test/test_private_connection_info_amazon_sqs.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_amazon_sqs import PrivateConnectionInfoAmazonSqs + + +class TestPrivateConnectionInfoAmazonSqs(unittest.TestCase): + """PrivateConnectionInfoAmazonSqs unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoAmazonSqs: + """Test PrivateConnectionInfoAmazonSqs + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoAmazonSqs` + """ + model = PrivateConnectionInfoAmazonSqs() + if include_optional: + return PrivateConnectionInfoAmazonSqs( + access_key = 'myaccesskey', + access_secret = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' + ) + else: + return PrivateConnectionInfoAmazonSqs( + ) + """ + + def testPrivateConnectionInfoAmazonSqs(self): + """Test PrivateConnectionInfoAmazonSqs""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_chronicle.py b/test/test_private_connection_info_chronicle.py new file mode 100644 index 00000000..fd06a721 --- /dev/null +++ b/test/test_private_connection_info_chronicle.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_chronicle import PrivateConnectionInfoChronicle + + +class TestPrivateConnectionInfoChronicle(unittest.TestCase): + """PrivateConnectionInfoChronicle unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoChronicle: + """Test PrivateConnectionInfoChronicle + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoChronicle` + """ + model = PrivateConnectionInfoChronicle() + if include_optional: + return PrivateConnectionInfoChronicle( + api_key = 'jeequiedahtaiSh2uM0chigheekaego8' + ) + else: + return PrivateConnectionInfoChronicle( + ) + """ + + def testPrivateConnectionInfoChronicle(self): + """Test PrivateConnectionInfoChronicle""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_chronicle_v2.py b/test/test_private_connection_info_chronicle_v2.py new file mode 100644 index 00000000..81c7f694 --- /dev/null +++ b/test/test_private_connection_info_chronicle_v2.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_chronicle_v2 import PrivateConnectionInfoChronicleV2 + + +class TestPrivateConnectionInfoChronicleV2(unittest.TestCase): + """PrivateConnectionInfoChronicleV2 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoChronicleV2: + """Test PrivateConnectionInfoChronicleV2 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoChronicleV2` + """ + model = PrivateConnectionInfoChronicleV2() + if include_optional: + return PrivateConnectionInfoChronicleV2( + credentials_o_auth2 = '{ "type": "service_account", "project_id": "malachite", "client_id": "1234567", }' + ) + else: + return PrivateConnectionInfoChronicleV2( + ) + """ + + def testPrivateConnectionInfoChronicleV2(self): + """Test PrivateConnectionInfoChronicleV2""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_elasticsearch.py b/test/test_private_connection_info_elasticsearch.py new file mode 100644 index 00000000..a00b6f2a --- /dev/null +++ b/test/test_private_connection_info_elasticsearch.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_elasticsearch import PrivateConnectionInfoElasticsearch + + +class TestPrivateConnectionInfoElasticsearch(unittest.TestCase): + """PrivateConnectionInfoElasticsearch unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoElasticsearch: + """Test PrivateConnectionInfoElasticsearch + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoElasticsearch` + """ + model = PrivateConnectionInfoElasticsearch() + if include_optional: + return PrivateConnectionInfoElasticsearch( + auth = 'BASIC_AUTH', + secret = 'Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK' + ) + else: + return PrivateConnectionInfoElasticsearch( + ) + """ + + def testPrivateConnectionInfoElasticsearch(self): + """Test PrivateConnectionInfoElasticsearch""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_google_pub_sub.py b/test/test_private_connection_info_google_pub_sub.py new file mode 100644 index 00000000..047c5c90 --- /dev/null +++ b/test/test_private_connection_info_google_pub_sub.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_google_pub_sub import PrivateConnectionInfoGooglePubSub + + +class TestPrivateConnectionInfoGooglePubSub(unittest.TestCase): + """PrivateConnectionInfoGooglePubSub unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoGooglePubSub: + """Test PrivateConnectionInfoGooglePubSub + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoGooglePubSub` + """ + model = PrivateConnectionInfoGooglePubSub() + if include_optional: + return PrivateConnectionInfoGooglePubSub( + credentials_json = '{"key":"value"}' + ) + else: + return PrivateConnectionInfoGooglePubSub( + ) + """ + + def testPrivateConnectionInfoGooglePubSub(self): + """Test PrivateConnectionInfoGooglePubSub""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_google_scc.py b/test/test_private_connection_info_google_scc.py new file mode 100644 index 00000000..3d0198cb --- /dev/null +++ b/test/test_private_connection_info_google_scc.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_google_scc import PrivateConnectionInfoGoogleScc + + +class TestPrivateConnectionInfoGoogleScc(unittest.TestCase): + """PrivateConnectionInfoGoogleScc unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoGoogleScc: + """Test PrivateConnectionInfoGoogleScc + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoGoogleScc` + """ + model = PrivateConnectionInfoGoogleScc() + if include_optional: + return PrivateConnectionInfoGoogleScc( + credentials_json = '{"key":"value"}' + ) + else: + return PrivateConnectionInfoGoogleScc( + ) + """ + + def testPrivateConnectionInfoGoogleScc(self): + """Test PrivateConnectionInfoGoogleScc""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_kafka.py b/test/test_private_connection_info_kafka.py new file mode 100644 index 00000000..761e88a3 --- /dev/null +++ b/test/test_private_connection_info_kafka.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_kafka import PrivateConnectionInfoKafka + + +class TestPrivateConnectionInfoKafka(unittest.TestCase): + """PrivateConnectionInfoKafka unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoKafka: + """Test PrivateConnectionInfoKafka + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoKafka` + """ + model = PrivateConnectionInfoKafka() + if include_optional: + return PrivateConnectionInfoKafka( + keytab = 'BQIAAAA3AAEAClNZU0RJRy5DT00ABnN5c2RpZwAAAAFlhdTkAQAXABCIRvfq7o+xF60Gvdgwt1hsAAAAAQ==' + ) + else: + return PrivateConnectionInfoKafka( + ) + """ + + def testPrivateConnectionInfoKafka(self): + """Test PrivateConnectionInfoKafka""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_mcm.py b/test/test_private_connection_info_mcm.py new file mode 100644 index 00000000..27e15d6f --- /dev/null +++ b/test/test_private_connection_info_mcm.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_mcm import PrivateConnectionInfoMcm + + +class TestPrivateConnectionInfoMcm(unittest.TestCase): + """PrivateConnectionInfoMcm unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoMcm: + """Test PrivateConnectionInfoMcm + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoMcm` + """ + model = PrivateConnectionInfoMcm() + if include_optional: + return PrivateConnectionInfoMcm( + api_key = 'dohch1OhPaewoo2edaifaefahphaoMee' + ) + else: + return PrivateConnectionInfoMcm( + ) + """ + + def testPrivateConnectionInfoMcm(self): + """Test PrivateConnectionInfoMcm""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_microsoft_sentinel.py b/test/test_private_connection_info_microsoft_sentinel.py new file mode 100644 index 00000000..c16cbc81 --- /dev/null +++ b/test/test_private_connection_info_microsoft_sentinel.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_microsoft_sentinel import PrivateConnectionInfoMicrosoftSentinel + + +class TestPrivateConnectionInfoMicrosoftSentinel(unittest.TestCase): + """PrivateConnectionInfoMicrosoftSentinel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoMicrosoftSentinel: + """Test PrivateConnectionInfoMicrosoftSentinel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoMicrosoftSentinel` + """ + model = PrivateConnectionInfoMicrosoftSentinel() + if include_optional: + return PrivateConnectionInfoMicrosoftSentinel( + secret = 'b29qb29jdWIyd2F5N0FoWThzYWhuZzZhaWdoMWVlcmFoM3BoZXRvZURpZTdlaWJhCg==' + ) + else: + return PrivateConnectionInfoMicrosoftSentinel( + ) + """ + + def testPrivateConnectionInfoMicrosoftSentinel(self): + """Test PrivateConnectionInfoMicrosoftSentinel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_splunk.py b/test/test_private_connection_info_splunk.py new file mode 100644 index 00000000..6c86eeb0 --- /dev/null +++ b/test/test_private_connection_info_splunk.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_splunk import PrivateConnectionInfoSplunk + + +class TestPrivateConnectionInfoSplunk(unittest.TestCase): + """PrivateConnectionInfoSplunk unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoSplunk: + """Test PrivateConnectionInfoSplunk + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoSplunk` + """ + model = PrivateConnectionInfoSplunk() + if include_optional: + return PrivateConnectionInfoSplunk( + token = 'eyJraWQiOiJzcGx1bmsuc2VjcmV0IiwiYWxnIjoiSFM1MTIiLCJ2ZXIiOiJ2MSIsInR0eXAiOiJzdGF0aWMifQ.eyJpc3MiOiJhZG1pbiBmcm9tIHNvMSIsInN1YiI6ImFkbWluIiwiYXVkIjoiVG9rZW50b3duIiwiaWRwIjoic3BsdW5rIiwianRpIjoiY2EwOGE2ODQyZDNlYzIxYjRkMTg1NDk3NTRlOGU4ZDc3YTM5MmQ3ZTE3ZGUyOGNmZGM3MWI3ODAwNWExNmU3OCIsImlhdCI6MTU1MTk5OTM0NiwiZXhwIjowLCJuYnIiOjE1NTE5OTkzNDZ9.RrZxe89qchfEtrEnG1PjTmJzO_JTtPX8xqSiSunYGylupG114KujO3-E88TtM-Tf51qtVpJydR3JSJpPfaf17w' + ) + else: + return PrivateConnectionInfoSplunk( + ) + """ + + def testPrivateConnectionInfoSplunk(self): + """Test PrivateConnectionInfoSplunk""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_private_connection_info_webhook.py b/test/test_private_connection_info_webhook.py new file mode 100644 index 00000000..d6904f09 --- /dev/null +++ b/test/test_private_connection_info_webhook.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.private_connection_info_webhook import PrivateConnectionInfoWebhook + + +class TestPrivateConnectionInfoWebhook(unittest.TestCase): + """PrivateConnectionInfoWebhook unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrivateConnectionInfoWebhook: + """Test PrivateConnectionInfoWebhook + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrivateConnectionInfoWebhook` + """ + model = PrivateConnectionInfoWebhook() + if include_optional: + return PrivateConnectionInfoWebhook( + secret = 'eiMaimiYohrahbaeS6iaNgo8iu' + ) + else: + return PrivateConnectionInfoWebhook( + ) + """ + + def testPrivateConnectionInfoWebhook(self): + """Test PrivateConnectionInfoWebhook""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_process_killed_action.py b/test/test_process_killed_action.py new file mode 100644 index 00000000..d967034a --- /dev/null +++ b/test/test_process_killed_action.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.process_killed_action import ProcessKilledAction + + +class TestProcessKilledAction(unittest.TestCase): + """ProcessKilledAction unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ProcessKilledAction: + """Test ProcessKilledAction + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ProcessKilledAction` + """ + model = ProcessKilledAction() + if include_optional: + return ProcessKilledAction( + type = 'capture', + is_successful = True, + err_msg = 'Rule with name non_existent refers to a rule that does not exist' + ) + else: + return ProcessKilledAction( + type = 'capture', + ) + """ + + def testProcessKilledAction(self): + """Test ProcessKilledAction""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_producer.py b/test/test_producer.py new file mode 100644 index 00000000..02ee61e7 --- /dev/null +++ b/test/test_producer.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.producer import Producer + + +class TestProducer(unittest.TestCase): + """Producer unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Producer: + """Test Producer + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Producer` + """ + model = Producer() + if include_optional: + return Producer( + produced_at = '2024-01-22T08:51:46Z' + ) + else: + return Producer( + ) + """ + + def testProducer(self): + """Test Producer""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_product.py b/test/test_product.py new file mode 100644 index 00000000..6439b2f9 --- /dev/null +++ b/test/test_product.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.product import Product + + +class TestProduct(unittest.TestCase): + """Product unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testProduct(self): + """Test Product""" + # inst = Product() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_prometheus_alert_manager_notification_channel_options_v1.py b/test/test_prometheus_alert_manager_notification_channel_options_v1.py new file mode 100644 index 00000000..40223007 --- /dev/null +++ b/test/test_prometheus_alert_manager_notification_channel_options_v1.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.prometheus_alert_manager_notification_channel_options_v1 import ( + PrometheusAlertManagerNotificationChannelOptionsV1, +) + + +class TestPrometheusAlertManagerNotificationChannelOptionsV1(unittest.TestCase): + """PrometheusAlertManagerNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrometheusAlertManagerNotificationChannelOptionsV1: + """Test PrometheusAlertManagerNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrometheusAlertManagerNotificationChannelOptionsV1` + """ + model = PrometheusAlertManagerNotificationChannelOptionsV1() + if include_optional: + return PrometheusAlertManagerNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + url = 'http://some-website/some-path', + is_allows_insecure_connections = False, + additional_headers = { + 'key' : 'CUSTOM_HEADER' + } + ) + else: + return PrometheusAlertManagerNotificationChannelOptionsV1( + url = 'http://some-website/some-path', + ) + """ + + def testPrometheusAlertManagerNotificationChannelOptionsV1(self): + """Test PrometheusAlertManagerNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_prometheus_alert_manager_notification_channel_response_v1.py b/test/test_prometheus_alert_manager_notification_channel_response_v1.py new file mode 100644 index 00000000..a2e60472 --- /dev/null +++ b/test/test_prometheus_alert_manager_notification_channel_response_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.prometheus_alert_manager_notification_channel_response_v1 import ( + PrometheusAlertManagerNotificationChannelResponseV1, +) + + +class TestPrometheusAlertManagerNotificationChannelResponseV1(unittest.TestCase): + """PrometheusAlertManagerNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrometheusAlertManagerNotificationChannelResponseV1: + """Test PrometheusAlertManagerNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrometheusAlertManagerNotificationChannelResponseV1` + """ + model = PrometheusAlertManagerNotificationChannelResponseV1() + if include_optional: + return PrometheusAlertManagerNotificationChannelResponseV1( + options = None + ) + else: + return PrometheusAlertManagerNotificationChannelResponseV1( + options = None, + ) + """ + + def testPrometheusAlertManagerNotificationChannelResponseV1(self): + """Test PrometheusAlertManagerNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_prometheus_api.py b/test/test_prometheus_api.py new file mode 100644 index 00000000..4e6a3ec9 --- /dev/null +++ b/test/test_prometheus_api.py @@ -0,0 +1,283 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.prometheus_api import PrometheusApi + + +class TestPrometheusApi(unittest.TestCase): + """PrometheusApi unit test stubs""" + + def setUp(self) -> None: + self.api = PrometheusApi() + + def tearDown(self) -> None: + pass + + def test_get_admin_tsdb_clean_tombstones_v1(self) -> None: + """Test case for get_admin_tsdb_clean_tombstones_v1 + + Clean Tombstones + """ + pass + + def test_get_admin_tsdb_delete_series_v1(self) -> None: + """Test case for get_admin_tsdb_delete_series_v1 + + Delete Series + """ + pass + + def test_get_admin_tsdb_snapshot_v1(self) -> None: + """Test case for get_admin_tsdb_snapshot_v1 + + Snapshot + """ + pass + + def test_get_alert_managers_v1(self) -> None: + """Test case for get_alert_managers_v1 + + Alertmanagers + """ + pass + + def test_get_alerts_v1(self) -> None: + """Test case for get_alerts_v1 + + Alerts + """ + pass + + def test_get_exemplars_v1(self) -> None: + """Test case for get_exemplars_v1 + + Query Exemplars + """ + pass + + def test_get_format_query_v1(self) -> None: + """Test case for get_format_query_v1 + + Format Query + """ + pass + + def test_get_label_values_v1(self) -> None: + """Test case for get_label_values_v1 + + Labels Values Query + """ + pass + + def test_get_labels_v1(self) -> None: + """Test case for get_labels_v1 + + Labels Query + """ + pass + + def test_get_live_notifications_v1(self) -> None: + """Test case for get_live_notifications_v1 + + Live Notifications + """ + pass + + def test_get_metadata_v1(self) -> None: + """Test case for get_metadata_v1 + + Querying metric metadata + """ + pass + + def test_get_notifications_v1(self) -> None: + """Test case for get_notifications_v1 + + Active Notifications + """ + pass + + def test_get_parse_query_v1(self) -> None: + """Test case for get_parse_query_v1 + + Parse Query + """ + pass + + def test_get_query_range_v1(self) -> None: + """Test case for get_query_range_v1 + + Range Query + """ + pass + + def test_get_query_v1(self) -> None: + """Test case for get_query_v1 + + Instant Query + """ + pass + + def test_get_rules_v1(self) -> None: + """Test case for get_rules_v1 + + Rules + """ + pass + + def test_get_series_v1(self) -> None: + """Test case for get_series_v1 + + Series Query + """ + pass + + def test_get_status_build_info_v1(self) -> None: + """Test case for get_status_build_info_v1 + + Build Information + """ + pass + + def test_get_status_config_v1(self) -> None: + """Test case for get_status_config_v1 + + Config + """ + pass + + def test_get_status_flags_v1(self) -> None: + """Test case for get_status_flags_v1 + + Flags + """ + pass + + def test_get_status_runtime_info_v1(self) -> None: + """Test case for get_status_runtime_info_v1 + + Runtime Information + """ + pass + + def test_get_status_tsdb_v1(self) -> None: + """Test case for get_status_tsdb_v1 + + TSDB Stats + """ + pass + + def test_get_status_wal_replay_v1(self) -> None: + """Test case for get_status_wal_replay_v1 + + WAL Replay + """ + pass + + def test_get_targets_metadata_v1(self) -> None: + """Test case for get_targets_metadata_v1 + + Querying target metadata + """ + pass + + def test_get_targets_v1(self) -> None: + """Test case for get_targets_v1 + + Targets + """ + pass + + def test_post_admin_tsdb_clean_tombstones_v1(self) -> None: + """Test case for post_admin_tsdb_clean_tombstones_v1 + + Clean Tombstones + """ + pass + + def test_post_admin_tsdb_delete_series_v1(self) -> None: + """Test case for post_admin_tsdb_delete_series_v1 + + Delete Series + """ + pass + + def test_post_admin_tsdb_snapshot_v1(self) -> None: + """Test case for post_admin_tsdb_snapshot_v1 + + Snapshot + """ + pass + + def test_post_exemplars_v1(self) -> None: + """Test case for post_exemplars_v1 + + Query Exemplars + """ + pass + + def test_post_format_query_v1(self) -> None: + """Test case for post_format_query_v1 + + Format Query + """ + pass + + def test_post_labels_v1(self) -> None: + """Test case for post_labels_v1 + + Labels Query + """ + pass + + def test_post_parse_query_v1(self) -> None: + """Test case for post_parse_query_v1 + + Parse Query + """ + pass + + def test_post_query_range_v1(self) -> None: + """Test case for post_query_range_v1 + + Range Query + """ + pass + + def test_post_query_v1(self) -> None: + """Test case for post_query_v1 + + Instant Query + """ + pass + + def test_post_series_v1(self) -> None: + """Test case for post_series_v1 + + Series Query + """ + pass + + def test_remote_write_v1(self) -> None: + """Test case for remote_write_v1 + + Ingest metric data (remote write) + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_prometheus_error.py b/test/test_prometheus_error.py new file mode 100644 index 00000000..c308e051 --- /dev/null +++ b/test/test_prometheus_error.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.prometheus_error import PrometheusError + + +class TestPrometheusError(unittest.TestCase): + """PrometheusError unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PrometheusError: + """Test PrometheusError + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PrometheusError` + """ + model = PrometheusError() + if include_optional: + return PrometheusError( + status = 'error', + error_type = 'gone', + error = 'This API endpoint is not supported.' + ) + else: + return PrometheusError( + ) + """ + + def testPrometheusError(self): + """Test PrometheusError""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_promql_matcher.py b/test/test_promql_matcher.py new file mode 100644 index 00000000..7f331880 --- /dev/null +++ b/test/test_promql_matcher.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.promql_matcher import PromqlMatcher + + +class TestPromqlMatcher(unittest.TestCase): + """PromqlMatcher unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PromqlMatcher: + """Test PromqlMatcher + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `PromqlMatcher` + """ + model = PromqlMatcher() + if include_optional: + return PromqlMatcher( + label = 'kube_cluster_name', + operator = 'REGEX_MATCH', + value = 'my_service.*' + ) + else: + return PromqlMatcher( + label = 'kube_cluster_name', + operator = 'REGEX_MATCH', + value = 'my_service.*', + ) + """ + + def testPromqlMatcher(self): + """Test PromqlMatcher""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_response.py b/test/test_query_response.py new file mode 100644 index 00000000..5ba244ef --- /dev/null +++ b/test/test_query_response.py @@ -0,0 +1,70 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_response import QueryResponse + + +class TestQueryResponse(unittest.TestCase): + """QueryResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QueryResponse: + """Test QueryResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QueryResponse` + """ + model = QueryResponse() + if include_optional: + return QueryResponse( + entities = { }, + items = [ + {"name":"CVE-2024-45491","cvssScore":7.5,"severity":"Medium"} + ], + id = '4b1d2442-739a-4957-bf27-20b563e46c3a', + summary = sysdig_client.models.query_summary.QuerySummary( + available_after = 23, + consumed_after = 100, + total_time = 25, ) + ) + else: + return QueryResponse( + entities = { }, + items = [ + {"name":"CVE-2024-45491","cvssScore":7.5,"severity":"Medium"} + ], + id = '4b1d2442-739a-4957-bf27-20b563e46c3a', + summary = sysdig_client.models.query_summary.QuerySummary( + available_after = 23, + consumed_after = 100, + total_time = 25, ), + ) + """ + + def testQueryResponse(self): + """Test QueryResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_response_entities.py b/test/test_query_response_entities.py new file mode 100644 index 00000000..bcebeab5 --- /dev/null +++ b/test/test_query_response_entities.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_response_entities import QueryResponseEntities + + +class TestQueryResponseEntities(unittest.TestCase): + """QueryResponseEntities unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QueryResponseEntities: + """Test QueryResponseEntities + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QueryResponseEntities` + """ + model = QueryResponseEntities() + if include_optional: + return QueryResponseEntities( + fields = sysdig_client.models.entity_definition.EntityDefinition( + type = 'Field', + alias = 'name', + definition = sysdig_client.models.entity_definition_definition.EntityDefinition_definition( + def_type = 'Field', + name = 'name', + type = 'String', + hidden = False, ), ) + ) + else: + return QueryResponseEntities( + ) + """ + + def testQueryResponseEntities(self): + """Test QueryResponseEntities""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_response_v1.py b/test/test_query_response_v1.py new file mode 100644 index 00000000..0f2a587b --- /dev/null +++ b/test/test_query_response_v1.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_response_v1 import QueryResponseV1 + + +class TestQueryResponseV1(unittest.TestCase): + """QueryResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QueryResponseV1: + """Test QueryResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QueryResponseV1` + """ + model = QueryResponseV1() + if include_optional: + return QueryResponseV1( + status = 'success', + data = sysdig_client.models.query_response_v1_data.QueryResponseV1_data( + result_type = 'vector', + result = null, ), + warnings = [], + infos = [] + ) + else: + return QueryResponseV1( + ) + """ + + def testQueryResponseV1(self): + """Test QueryResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_response_v1_data.py b/test/test_query_response_v1_data.py new file mode 100644 index 00000000..a15f0639 --- /dev/null +++ b/test/test_query_response_v1_data.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_response_v1_data import QueryResponseV1Data + + +class TestQueryResponseV1Data(unittest.TestCase): + """QueryResponseV1Data unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QueryResponseV1Data: + """Test QueryResponseV1Data + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QueryResponseV1Data` + """ + model = QueryResponseV1Data() + if include_optional: + return QueryResponseV1Data( + result_type = 'vector', + result = None + ) + else: + return QueryResponseV1Data( + ) + """ + + def testQueryResponseV1Data(self): + """Test QueryResponseV1Data""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_response_v1_data_result.py b/test/test_query_response_v1_data_result.py new file mode 100644 index 00000000..d663edab --- /dev/null +++ b/test/test_query_response_v1_data_result.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_response_v1_data_result import QueryResponseV1DataResult + + +class TestQueryResponseV1DataResult(unittest.TestCase): + """QueryResponseV1DataResult unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QueryResponseV1DataResult: + """Test QueryResponseV1DataResult + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QueryResponseV1DataResult` + """ + model = QueryResponseV1DataResult() + if include_optional: + return QueryResponseV1DataResult( + ) + else: + return QueryResponseV1DataResult( + ) + """ + + def testQueryResponseV1DataResult(self): + """Test QueryResponseV1DataResult""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_response_v1_data_result_any_of_inner.py b/test/test_query_response_v1_data_result_any_of_inner.py new file mode 100644 index 00000000..4b84c3bc --- /dev/null +++ b/test/test_query_response_v1_data_result_any_of_inner.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_response_v1_data_result_any_of_inner import QueryResponseV1DataResultAnyOfInner + + +class TestQueryResponseV1DataResultAnyOfInner(unittest.TestCase): + """QueryResponseV1DataResultAnyOfInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QueryResponseV1DataResultAnyOfInner: + """Test QueryResponseV1DataResultAnyOfInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QueryResponseV1DataResultAnyOfInner` + """ + model = QueryResponseV1DataResultAnyOfInner() + if include_optional: + return QueryResponseV1DataResultAnyOfInner( + ) + else: + return QueryResponseV1DataResultAnyOfInner( + ) + """ + + def testQueryResponseV1DataResultAnyOfInner(self): + """Test QueryResponseV1DataResultAnyOfInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_response_v1_data_result_any_of_inner1.py b/test/test_query_response_v1_data_result_any_of_inner1.py new file mode 100644 index 00000000..e80ca75c --- /dev/null +++ b/test/test_query_response_v1_data_result_any_of_inner1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_response_v1_data_result_any_of_inner1 import QueryResponseV1DataResultAnyOfInner1 + + +class TestQueryResponseV1DataResultAnyOfInner1(unittest.TestCase): + """QueryResponseV1DataResultAnyOfInner1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QueryResponseV1DataResultAnyOfInner1: + """Test QueryResponseV1DataResultAnyOfInner1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QueryResponseV1DataResultAnyOfInner1` + """ + model = QueryResponseV1DataResultAnyOfInner1() + if include_optional: + return QueryResponseV1DataResultAnyOfInner1( + metric = {"instance":"minikube"}, + value = ["1749637701","1"] + ) + else: + return QueryResponseV1DataResultAnyOfInner1( + metric = {"instance":"minikube"}, + value = ["1749637701","1"], + ) + """ + + def testQueryResponseV1DataResultAnyOfInner1(self): + """Test QueryResponseV1DataResultAnyOfInner1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_response_v1_data_result_any_of_inner2.py b/test/test_query_response_v1_data_result_any_of_inner2.py new file mode 100644 index 00000000..a3c346d0 --- /dev/null +++ b/test/test_query_response_v1_data_result_any_of_inner2.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_response_v1_data_result_any_of_inner2 import QueryResponseV1DataResultAnyOfInner2 + + +class TestQueryResponseV1DataResultAnyOfInner2(unittest.TestCase): + """QueryResponseV1DataResultAnyOfInner2 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QueryResponseV1DataResultAnyOfInner2: + """Test QueryResponseV1DataResultAnyOfInner2 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QueryResponseV1DataResultAnyOfInner2` + """ + model = QueryResponseV1DataResultAnyOfInner2() + if include_optional: + return QueryResponseV1DataResultAnyOfInner2( + metric = {"instance":"minikube"}, + values = [ + ["1749636900","0"] + ] + ) + else: + return QueryResponseV1DataResultAnyOfInner2( + metric = {"instance":"minikube"}, + values = [ + ["1749636900","0"] + ], + ) + """ + + def testQueryResponseV1DataResultAnyOfInner2(self): + """Test QueryResponseV1DataResultAnyOfInner2""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_summary.py b/test/test_query_summary.py new file mode 100644 index 00000000..a60f2dd0 --- /dev/null +++ b/test/test_query_summary.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_summary import QuerySummary + + +class TestQuerySummary(unittest.TestCase): + """QuerySummary unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QuerySummary: + """Test QuerySummary + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QuerySummary` + """ + model = QuerySummary() + if include_optional: + return QuerySummary( + available_after = 23, + consumed_after = 100, + total_time = 25 + ) + else: + return QuerySummary( + available_after = 23, + consumed_after = 100, + total_time = 25, + ) + """ + + def testQuerySummary(self): + """Test QuerySummary""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_sysql_post_request.py b/test/test_query_sysql_post_request.py new file mode 100644 index 00000000..2cdf3988 --- /dev/null +++ b/test/test_query_sysql_post_request.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_sysql_post_request import QuerySysqlPostRequest + + +class TestQuerySysqlPostRequest(unittest.TestCase): + """QuerySysqlPostRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QuerySysqlPostRequest: + """Test QuerySysqlPostRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QuerySysqlPostRequest` + """ + model = QuerySysqlPostRequest() + if include_optional: + return QuerySysqlPostRequest( + q = 'MATCH IAMUser AS a WHERE a.customerId = 1234567890 RETURN a.name AS name, a.arn AS arn;', + limit = 100, + offset = 0, + deterministic_order = True + ) + else: + return QuerySysqlPostRequest( + q = 'MATCH IAMUser AS a WHERE a.customerId = 1234567890 RETURN a.name AS name, a.arn AS arn;', + ) + """ + + def testQuerySysqlPostRequest(self): + """Test QuerySysqlPostRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_query_time.py b/test/test_query_time.py new file mode 100644 index 00000000..0519b509 --- /dev/null +++ b/test/test_query_time.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.query_time import QueryTime + + +class TestQueryTime(unittest.TestCase): + """QueryTime unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> QueryTime: + """Test QueryTime + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `QueryTime` + """ + model = QueryTime() + if include_optional: + return QueryTime( + ) + else: + return QueryTime( + ) + """ + + def testQueryTime(self): + """Test QueryTime""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_registry_result.py b/test/test_registry_result.py new file mode 100644 index 00000000..20e35c2d --- /dev/null +++ b/test/test_registry_result.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.registry_result import RegistryResult + + +class TestRegistryResult(unittest.TestCase): + """RegistryResult unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RegistryResult: + """Test RegistryResult + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RegistryResult` + """ + model = RegistryResult() + if include_optional: + return RegistryResult( + result_id = 'scan-1234', + image_id = 'sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6', + vendor = 'dockerv2', + pull_string = 'index.docker.io/nginx:latest', + vuln_total_by_severity = sysdig_client.models.vuln_total_by_severity.VulnTotalBySeverity( + critical = 12345, + high = 12345, + medium = 12345, + low = 12345, + negligible = 12345, ), + created_at = '2024-01-22T08:51:46.016464Z' + ) + else: + return RegistryResult( + ) + """ + + def testRegistryResult(self): + """Test RegistryResult""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_registry_results_response.py b/test/test_registry_results_response.py new file mode 100644 index 00000000..09a534e7 --- /dev/null +++ b/test/test_registry_results_response.py @@ -0,0 +1,69 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.registry_results_response import RegistryResultsResponse + + +class TestRegistryResultsResponse(unittest.TestCase): + """RegistryResultsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RegistryResultsResponse: + """Test RegistryResultsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RegistryResultsResponse` + """ + model = RegistryResultsResponse() + if include_optional: + return RegistryResultsResponse( + page = sysdig_client.models.vulnerability_management_page.VulnerabilityManagementPage( + total = 1, + next = 'MTI0MjM0Cg==', ), + data = [ + sysdig_client.models.registry_result.RegistryResult( + result_id = 'scan-1234', + image_id = 'sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6', + vendor = 'dockerv2', + pull_string = 'index.docker.io/nginx:latest', + vuln_total_by_severity = sysdig_client.models.vuln_total_by_severity.VulnTotalBySeverity( + critical = 12345, + high = 12345, + medium = 12345, + low = 12345, + negligible = 12345, ), + created_at = '2024-01-22T08:51:46.016464Z', ) + ] + ) + else: + return RegistryResultsResponse( + ) + """ + + def testRegistryResultsResponse(self): + """Test RegistryResultsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_reporting_api.py b/test/test_reporting_api.py new file mode 100644 index 00000000..d117fd56 --- /dev/null +++ b/test/test_reporting_api.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.reporting_api import ReportingApi + + +class TestReportingApi(unittest.TestCase): + """ReportingApi unit test stubs""" + + def setUp(self) -> None: + self.api = ReportingApi() + + def tearDown(self) -> None: + pass + + def test_list_jobs_v1(self) -> None: + """Test case for list_jobs_v1 + + List Report Job Runs + """ + pass + + def test_list_schedules_v1(self) -> None: + """Test case for list_schedules_v1 + + List Report Schedules + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_request_body_disabled_metrics_v1.py b/test/test_request_body_disabled_metrics_v1.py new file mode 100644 index 00000000..eb9404f9 --- /dev/null +++ b/test/test_request_body_disabled_metrics_v1.py @@ -0,0 +1,70 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.request_body_disabled_metrics_v1 import RequestBodyDisabledMetricsV1 + + +class TestRequestBodyDisabledMetricsV1(unittest.TestCase): + """RequestBodyDisabledMetricsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RequestBodyDisabledMetricsV1: + """Test RequestBodyDisabledMetricsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RequestBodyDisabledMetricsV1` + """ + model = RequestBodyDisabledMetricsV1() + if include_optional: + return RequestBodyDisabledMetricsV1( + data = [ + sysdig_client.models.disable_jobs_and_metrics_v1.DisableJobsAndMetricsV1( + job_name = 'k8s-pods', + metrics = [ + sysdig_client.models.disable_metric_v1.DisableMetricV1( + metric_name = 'apache_accesses_total', + is_disabled = True, ) + ], ) + ] + ) + else: + return RequestBodyDisabledMetricsV1( + data = [ + sysdig_client.models.disable_jobs_and_metrics_v1.DisableJobsAndMetricsV1( + job_name = 'k8s-pods', + metrics = [ + sysdig_client.models.disable_metric_v1.DisableMetricV1( + metric_name = 'apache_accesses_total', + is_disabled = True, ) + ], ) + ], + ) + """ + + def testRequestBodyDisabledMetricsV1(self): + """Test RequestBodyDisabledMetricsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_responder_type.py b/test/test_responder_type.py new file mode 100644 index 00000000..2630345e --- /dev/null +++ b/test/test_responder_type.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.responder_type import ResponderType + + +class TestResponderType(unittest.TestCase): + """ResponderType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testResponderType(self): + """Test ResponderType""" + # inst = ResponderType() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_response_action.py b/test/test_response_action.py new file mode 100644 index 00000000..25df37ba --- /dev/null +++ b/test/test_response_action.py @@ -0,0 +1,79 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.response_action import ResponseAction + + +class TestResponseAction(unittest.TestCase): + """ResponseAction unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ResponseAction: + """Test ResponseAction + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ResponseAction` + """ + model = ResponseAction() + if include_optional: + return ResponseAction( + type = 'KILL_PROCESS', + parameters = [ + sysdig_client.models.action_parameter_metadata.ActionParameterMetadata( + name = 'container.id', + description = 'A container id', + type = 'integer', + required = True, ) + ], + outputs = [ + sysdig_client.models.action_outputs_metadata.ActionOutputsMetadata( + name = 'quarantined_file_path', + description = 'An absolute path', + type = 'integer', + required = True, ) + ], + description = 'Kill a container', + is_undoable = True + ) + else: + return ResponseAction( + type = 'KILL_PROCESS', + parameters = [ + sysdig_client.models.action_parameter_metadata.ActionParameterMetadata( + name = 'container.id', + description = 'A container id', + type = 'integer', + required = True, ) + ], + description = 'Kill a container', + is_undoable = True, + ) + """ + + def testResponseAction(self): + """Test ResponseAction""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_response_actions_api.py b/test/test_response_actions_api.py new file mode 100644 index 00000000..9f446d42 --- /dev/null +++ b/test/test_response_actions_api.py @@ -0,0 +1,73 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.response_actions_api import ResponseActionsApi + + +class TestResponseActionsApi(unittest.TestCase): + """ResponseActionsApi unit test stubs""" + + def setUp(self) -> None: + self.api = ResponseActionsApi() + + def tearDown(self) -> None: + pass + + def test_get_action_execution_file_acquire_v1(self) -> None: + """Test case for get_action_execution_file_acquire_v1 + + Get Acquired File + """ + pass + + def test_get_action_execution_v1(self) -> None: + """Test case for get_action_execution_v1 + + Get Action Execution + """ + pass + + def test_get_action_executionsv1(self) -> None: + """Test case for get_action_executionsv1 + + Returns the list of Response Actions executions. You can filter them with the available query parameters. + """ + pass + + def test_get_actions_v1(self) -> None: + """Test case for get_actions_v1 + + Get All Response Actions + """ + pass + + def test_submit_action_executionv1(self) -> None: + """Test case for submit_action_executionv1 + + Submit the execution of an action + """ + pass + + def test_undo_action_execution_v1(self) -> None: + """Test case for undo_action_execution_v1 + + Undoes an Action Execution + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_response_list_disabled_metrics_and_error_v1.py b/test/test_response_list_disabled_metrics_and_error_v1.py new file mode 100644 index 00000000..f20afabb --- /dev/null +++ b/test/test_response_list_disabled_metrics_and_error_v1.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.response_list_disabled_metrics_and_error_v1 import ResponseListDisabledMetricsAndErrorV1 + + +class TestResponseListDisabledMetricsAndErrorV1(unittest.TestCase): + """ResponseListDisabledMetricsAndErrorV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ResponseListDisabledMetricsAndErrorV1: + """Test ResponseListDisabledMetricsAndErrorV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ResponseListDisabledMetricsAndErrorV1` + """ + model = ResponseListDisabledMetricsAndErrorV1() + if include_optional: + return ResponseListDisabledMetricsAndErrorV1( + data = [ + sysdig_client.models.list_job_and_disabled_metrics_v1.ListJobAndDisabledMetricsV1( + job_name = 'k8s-pods', + metrics = [ + sysdig_client.models.metric_v1.MetricV1( + metric_name = 'apache_accesses_total', + modified_date = '2017-07-21T17:32:28Z', + user_id = 1234, + user_name = 'John Smith', ) + ], ) + ], + errors = [ + sysdig_client.models.metric_error_v1.MetricErrorV1( + metric_name = 'apache_accesses_total', + job_name = 'k8s-pods', + message = 'This is not a valid metric name.', ) + ] + ) + else: + return ResponseListDisabledMetricsAndErrorV1( + data = [ + sysdig_client.models.list_job_and_disabled_metrics_v1.ListJobAndDisabledMetricsV1( + job_name = 'k8s-pods', + metrics = [ + sysdig_client.models.metric_v1.MetricV1( + metric_name = 'apache_accesses_total', + modified_date = '2017-07-21T17:32:28Z', + user_id = 1234, + user_name = 'John Smith', ) + ], ) + ], + errors = [ + sysdig_client.models.metric_error_v1.MetricErrorV1( + metric_name = 'apache_accesses_total', + job_name = 'k8s-pods', + message = 'This is not a valid metric name.', ) + ], + ) + """ + + def testResponseListDisabledMetricsAndErrorV1(self): + """Test ResponseListDisabledMetricsAndErrorV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_response_list_disabled_metrics_v1.py b/test/test_response_list_disabled_metrics_v1.py new file mode 100644 index 00000000..f10a7e35 --- /dev/null +++ b/test/test_response_list_disabled_metrics_v1.py @@ -0,0 +1,80 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.response_list_disabled_metrics_v1 import ResponseListDisabledMetricsV1 + + +class TestResponseListDisabledMetricsV1(unittest.TestCase): + """ResponseListDisabledMetricsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ResponseListDisabledMetricsV1: + """Test ResponseListDisabledMetricsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ResponseListDisabledMetricsV1` + """ + model = ResponseListDisabledMetricsV1() + if include_optional: + return ResponseListDisabledMetricsV1( + data = [ + sysdig_client.models.list_job_and_disabled_metrics_v1.ListJobAndDisabledMetricsV1( + job_name = 'k8s-pods', + metrics = [ + sysdig_client.models.metric_v1.MetricV1( + metric_name = 'apache_accesses_total', + modified_date = '2017-07-21T17:32:28Z', + user_id = 1234, + user_name = 'John Smith', ) + ], ) + ], + errors = [ + sysdig_client.models.metric_error_v1.MetricErrorV1( + metric_name = 'apache_accesses_total', + job_name = 'k8s-pods', + message = 'This is not a valid metric name.', ) + ] + ) + else: + return ResponseListDisabledMetricsV1( + data = [ + sysdig_client.models.list_job_and_disabled_metrics_v1.ListJobAndDisabledMetricsV1( + job_name = 'k8s-pods', + metrics = [ + sysdig_client.models.metric_v1.MetricV1( + metric_name = 'apache_accesses_total', + modified_date = '2017-07-21T17:32:28Z', + user_id = 1234, + user_name = 'John Smith', ) + ], ) + ], + ) + """ + + def testResponseListDisabledMetricsV1(self): + """Test ResponseListDisabledMetricsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_risk_acceptance_definition.py b/test/test_risk_acceptance_definition.py new file mode 100644 index 00000000..3411d9b2 --- /dev/null +++ b/test/test_risk_acceptance_definition.py @@ -0,0 +1,78 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.risk_acceptance_definition import RiskAcceptanceDefinition + + +class TestRiskAcceptanceDefinition(unittest.TestCase): + """RiskAcceptanceDefinition unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RiskAcceptanceDefinition: + """Test RiskAcceptanceDefinition + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RiskAcceptanceDefinition` + """ + model = RiskAcceptanceDefinition() + if include_optional: + return RiskAcceptanceDefinition( + id = '550e8400-e29b', + entity_type = 'imageName', + entity_value = 'nginx:latest', + context = [ + sysdig_client.models.context.Context( + type = 'imageName', + value = 'nginx:latest', ) + ], + status = 'active', + reason = 'RiskMitigated', + description = 'description', + expiration_date = 'Wed Jun 30 18:00:00 CST 2021', + created_at = '2024-01-22T08:51:46.016464Z', + updated_at = '2024-01-22T08:51:46.016464Z' + ) + else: + return RiskAcceptanceDefinition( + id = '550e8400-e29b', + entity_type = 'imageName', + entity_value = 'nginx:latest', + context = [ + sysdig_client.models.context.Context( + type = 'imageName', + value = 'nginx:latest', ) + ], + status = 'active', + expiration_date = 'Wed Jun 30 18:00:00 CST 2021', + created_at = '2024-01-22T08:51:46.016464Z', + updated_at = '2024-01-22T08:51:46.016464Z', + ) + """ + + def testRiskAcceptanceDefinition(self): + """Test RiskAcceptanceDefinition""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_risk_accepted_response.py b/test/test_risk_accepted_response.py new file mode 100644 index 00000000..e60710e8 --- /dev/null +++ b/test/test_risk_accepted_response.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.risk_accepted_response import RiskAcceptedResponse + + +class TestRiskAcceptedResponse(unittest.TestCase): + """RiskAcceptedResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RiskAcceptedResponse: + """Test RiskAcceptedResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RiskAcceptedResponse` + """ + model = RiskAcceptedResponse() + if include_optional: + return RiskAcceptedResponse( + id = '17af8bade67c9a208e632df001fcea2c', + expiration_date = 'Mon Feb 26 18:00:00 CST 2024', + created_at = '2024-01-22T08:51:46.016464Z', + updated_at = '2024-02-22T08:51:46.016464Z', + status = 'active', + created_by = 'user@sysdig.com', + updated_by = 'user@sysdig.com', + entity_value = 'CVE-1234-56789', + reason = 'RiskTransferred', + description = 'vulnerability cannot be removed manually', + stages = [runtime, pipeline, registry], + entity_type = 'imageName', + context = None + ) + else: + return RiskAcceptedResponse( + id = '17af8bade67c9a208e632df001fcea2c', + status = 'active', + entity_value = 'CVE-1234-56789', + reason = 'RiskTransferred', + description = 'vulnerability cannot be removed manually', + entity_type = 'imageName', + context = None, + ) + """ + + def testRiskAcceptedResponse(self): + """Test RiskAcceptedResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_risk_accepted_response_all_of_context.py b/test/test_risk_accepted_response_all_of_context.py new file mode 100644 index 00000000..9a1aedc7 --- /dev/null +++ b/test/test_risk_accepted_response_all_of_context.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.risk_accepted_response_all_of_context import RiskAcceptedResponseAllOfContext + + +class TestRiskAcceptedResponseAllOfContext(unittest.TestCase): + """RiskAcceptedResponseAllOfContext unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RiskAcceptedResponseAllOfContext: + """Test RiskAcceptedResponseAllOfContext + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RiskAcceptedResponseAllOfContext` + """ + model = RiskAcceptedResponseAllOfContext() + if include_optional: + return RiskAcceptedResponseAllOfContext( + ) + else: + return RiskAcceptedResponseAllOfContext( + ) + """ + + def testRiskAcceptedResponseAllOfContext(self): + """Test RiskAcceptedResponseAllOfContext""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_role_request_v1.py b/test/test_role_request_v1.py new file mode 100644 index 00000000..974d211a --- /dev/null +++ b/test/test_role_request_v1.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.role_request_v1 import RoleRequestV1 + + +class TestRoleRequestV1(unittest.TestCase): + """RoleRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RoleRequestV1: + """Test RoleRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RoleRequestV1` + """ + model = RoleRequestV1() + if include_optional: + return RoleRequestV1( + description = 'Enables access to Dashboards section', + monitor_permissions = [ + 'alerts.read' + ], + secure_permissions = [ + 'scanning.read' + ], + name = 'Dashboard Viewer' + ) + else: + return RoleRequestV1( + name = 'Dashboard Viewer', + ) + """ + + def testRoleRequestV1(self): + """Test RoleRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_role_response_v1.py b/test/test_role_response_v1.py new file mode 100644 index 00000000..657f0e35 --- /dev/null +++ b/test/test_role_response_v1.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.role_response_v1 import RoleResponseV1 + + +class TestRoleResponseV1(unittest.TestCase): + """RoleResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RoleResponseV1: + """Test RoleResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RoleResponseV1` + """ + model = RoleResponseV1() + if include_optional: + return RoleResponseV1( + id = 1, + description = 'Enables access to Dashboards section', + monitor_permissions = [ + 'alerts.read' + ], + secure_permissions = [ + 'scanning.read' + ], + name = 'Dashboard Viewer' + ) + else: + return RoleResponseV1( + ) + """ + + def testRoleResponseV1(self): + """Test RoleResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_roles_api.py b/test/test_roles_api.py new file mode 100644 index 00000000..46fe7bcd --- /dev/null +++ b/test/test_roles_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.roles_api import RolesApi + + +class TestRolesApi(unittest.TestCase): + """RolesApi unit test stubs""" + + def setUp(self) -> None: + self.api = RolesApi() + + def tearDown(self) -> None: + pass + + def test_create_role_v1(self) -> None: + """Test case for create_role_v1 + + Create Role + """ + pass + + def test_delete_role_by_id_v1(self) -> None: + """Test case for delete_role_by_id_v1 + + Delete Role + """ + pass + + def test_get_role_by_id_v1(self) -> None: + """Test case for get_role_by_id_v1 + + Get Role + """ + pass + + def test_get_roles_v1(self) -> None: + """Test case for get_roles_v1 + + List Roles + """ + pass + + def test_update_role_by_id_v1(self) -> None: + """Test case for update_role_by_id_v1 + + Update Role + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_rule.py b/test/test_rule.py new file mode 100644 index 00000000..1fc4f930 --- /dev/null +++ b/test/test_rule.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.rule import Rule + + +class TestRule(unittest.TestCase): + """Rule unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Rule: + """Test Rule + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Rule` + """ + model = Rule() + if include_optional: + return Rule( + rule_id = '1234A', + rule_type = 'vulnDenyList', + evaluation_result = 'passed', + predicates = [ + sysdig_client.models.predicate.Predicate( + type = 'vulnIsFixable', + extra = sysdig_client.models.extra.extra(), ) + ], + failure_type = 'pkgVulnFailure', + description = 'rule description', + failures = [ + null + ] + ) + else: + return Rule( + rule_type = 'vulnDenyList', + failure_type = 'pkgVulnFailure', + description = 'rule description', + ) + """ + + def testRule(self): + """Test Rule""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_rule_failures_inner.py b/test/test_rule_failures_inner.py new file mode 100644 index 00000000..5a0fbb36 --- /dev/null +++ b/test/test_rule_failures_inner.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.rule_failures_inner import RuleFailuresInner + + +class TestRuleFailuresInner(unittest.TestCase): + """RuleFailuresInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RuleFailuresInner: + """Test RuleFailuresInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RuleFailuresInner` + """ + model = RuleFailuresInner() + if include_optional: + return RuleFailuresInner( + description = 'description', + remediation = 'update image', + arguments = {version=1.0}, + package_ref = '2772f8a6c73fa17', + vulnerability_ref = '71af37c6a8f2772', + risk_accept_refs = [ + 'e6b4b0d3255bfef' + ] + ) + else: + return RuleFailuresInner( + description = 'description', + remediation = 'update image', + arguments = {version=1.0}, + ) + """ + + def testRuleFailuresInner(self): + """Test RuleFailuresInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_rules_response_v1.py b/test/test_rules_response_v1.py new file mode 100644 index 00000000..71d86956 --- /dev/null +++ b/test/test_rules_response_v1.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.rules_response_v1 import RulesResponseV1 + + +class TestRulesResponseV1(unittest.TestCase): + """RulesResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RulesResponseV1: + """Test RulesResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RulesResponseV1` + """ + model = RulesResponseV1() + if include_optional: + return RulesResponseV1( + status = 'success', + data = sysdig_client.models.rules_response_v1_data.RulesResponseV1_data( + groups = [ + sysdig_client.models.rules_response_v1_data_groups_inner.RulesResponseV1_data_groups_inner( + name = 'HTTP Alerts', + interval = '30s', + rules = [ + sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner.RulesResponseV1_data_groups_inner_rules_inner( + type = 'alerting', + name = 'HighCPUUsage', + query = 'avg by(instance) (rate(cpu_usage[5m])) > 0.9', + duration = '5m', + labels = {"severity":"critical"}, + annotations = {"description":"CPU usage is above 90% for more than 5 minutes."}, + alerts = [ + sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner.RulesResponseV1_data_groups_inner_rules_inner_alerts_inner( + state = 'firing', + active_at = '2023-10-05T14:30Z', + value = '1e+00', ) + ], ) + ], ) + ], ), + warnings = [], + infos = [] + ) + else: + return RulesResponseV1( + ) + """ + + def testRulesResponseV1(self): + """Test RulesResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_rules_response_v1_data.py b/test/test_rules_response_v1_data.py new file mode 100644 index 00000000..1ca9b5d4 --- /dev/null +++ b/test/test_rules_response_v1_data.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.rules_response_v1_data import RulesResponseV1Data + + +class TestRulesResponseV1Data(unittest.TestCase): + """RulesResponseV1Data unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RulesResponseV1Data: + """Test RulesResponseV1Data + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RulesResponseV1Data` + """ + model = RulesResponseV1Data() + if include_optional: + return RulesResponseV1Data( + groups = [ + sysdig_client.models.rules_response_v1_data_groups_inner.RulesResponseV1_data_groups_inner( + name = 'HTTP Alerts', + interval = '30s', + rules = [ + sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner.RulesResponseV1_data_groups_inner_rules_inner( + type = 'alerting', + name = 'HighCPUUsage', + query = 'avg by(instance) (rate(cpu_usage[5m])) > 0.9', + duration = '5m', + labels = {"severity":"critical"}, + annotations = {"description":"CPU usage is above 90% for more than 5 minutes."}, + alerts = [ + sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner.RulesResponseV1_data_groups_inner_rules_inner_alerts_inner( + state = 'firing', + active_at = '2023-10-05T14:30Z', + value = '1e+00', ) + ], ) + ], ) + ] + ) + else: + return RulesResponseV1Data( + ) + """ + + def testRulesResponseV1Data(self): + """Test RulesResponseV1Data""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_rules_response_v1_data_groups_inner.py b/test/test_rules_response_v1_data_groups_inner.py new file mode 100644 index 00000000..24aa6ead --- /dev/null +++ b/test/test_rules_response_v1_data_groups_inner.py @@ -0,0 +1,86 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.rules_response_v1_data_groups_inner import RulesResponseV1DataGroupsInner + + +class TestRulesResponseV1DataGroupsInner(unittest.TestCase): + """RulesResponseV1DataGroupsInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RulesResponseV1DataGroupsInner: + """Test RulesResponseV1DataGroupsInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RulesResponseV1DataGroupsInner` + """ + model = RulesResponseV1DataGroupsInner() + if include_optional: + return RulesResponseV1DataGroupsInner( + name = 'HTTP Alerts', + interval = '30s', + rules = [ + sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner.RulesResponseV1_data_groups_inner_rules_inner( + type = 'alerting', + name = 'HighCPUUsage', + query = 'avg by(instance) (rate(cpu_usage[5m])) > 0.9', + duration = '5m', + labels = {"severity":"critical"}, + annotations = {"description":"CPU usage is above 90% for more than 5 minutes."}, + alerts = [ + sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner.RulesResponseV1_data_groups_inner_rules_inner_alerts_inner( + state = 'firing', + active_at = '2023-10-05T14:30Z', + value = '1e+00', ) + ], ) + ] + ) + else: + return RulesResponseV1DataGroupsInner( + name = 'HTTP Alerts', + interval = '30s', + rules = [ + sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner.RulesResponseV1_data_groups_inner_rules_inner( + type = 'alerting', + name = 'HighCPUUsage', + query = 'avg by(instance) (rate(cpu_usage[5m])) > 0.9', + duration = '5m', + labels = {"severity":"critical"}, + annotations = {"description":"CPU usage is above 90% for more than 5 minutes."}, + alerts = [ + sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner.RulesResponseV1_data_groups_inner_rules_inner_alerts_inner( + state = 'firing', + active_at = '2023-10-05T14:30Z', + value = '1e+00', ) + ], ) + ], + ) + """ + + def testRulesResponseV1DataGroupsInner(self): + """Test RulesResponseV1DataGroupsInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_rules_response_v1_data_groups_inner_rules_inner.py b/test/test_rules_response_v1_data_groups_inner_rules_inner.py new file mode 100644 index 00000000..bfa6d721 --- /dev/null +++ b/test/test_rules_response_v1_data_groups_inner_rules_inner.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner import RulesResponseV1DataGroupsInnerRulesInner + + +class TestRulesResponseV1DataGroupsInnerRulesInner(unittest.TestCase): + """RulesResponseV1DataGroupsInnerRulesInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RulesResponseV1DataGroupsInnerRulesInner: + """Test RulesResponseV1DataGroupsInnerRulesInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RulesResponseV1DataGroupsInnerRulesInner` + """ + model = RulesResponseV1DataGroupsInnerRulesInner() + if include_optional: + return RulesResponseV1DataGroupsInnerRulesInner( + type = 'alerting', + name = 'HighCPUUsage', + query = 'avg by(instance) (rate(cpu_usage[5m])) > 0.9', + duration = '5m', + labels = {"severity":"critical"}, + annotations = {"description":"CPU usage is above 90% for more than 5 minutes."}, + alerts = [ + sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner.RulesResponseV1_data_groups_inner_rules_inner_alerts_inner( + state = 'firing', + active_at = '2023-10-05T14:30Z', + value = '1e+00', ) + ] + ) + else: + return RulesResponseV1DataGroupsInnerRulesInner( + type = 'alerting', + name = 'HighCPUUsage', + query = 'avg by(instance) (rate(cpu_usage[5m])) > 0.9', + ) + """ + + def testRulesResponseV1DataGroupsInnerRulesInner(self): + """Test RulesResponseV1DataGroupsInnerRulesInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_rules_response_v1_data_groups_inner_rules_inner_alerts_inner.py b/test/test_rules_response_v1_data_groups_inner_rules_inner_alerts_inner.py new file mode 100644 index 00000000..cc59db6a --- /dev/null +++ b/test/test_rules_response_v1_data_groups_inner_rules_inner_alerts_inner.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.rules_response_v1_data_groups_inner_rules_inner_alerts_inner import ( + RulesResponseV1DataGroupsInnerRulesInnerAlertsInner, +) + + +class TestRulesResponseV1DataGroupsInnerRulesInnerAlertsInner(unittest.TestCase): + """RulesResponseV1DataGroupsInnerRulesInnerAlertsInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RulesResponseV1DataGroupsInnerRulesInnerAlertsInner: + """Test RulesResponseV1DataGroupsInnerRulesInnerAlertsInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RulesResponseV1DataGroupsInnerRulesInnerAlertsInner` + """ + model = RulesResponseV1DataGroupsInnerRulesInnerAlertsInner() + if include_optional: + return RulesResponseV1DataGroupsInnerRulesInnerAlertsInner( + state = 'firing', + active_at = '2023-10-05T14:30Z', + value = '1e+00' + ) + else: + return RulesResponseV1DataGroupsInnerRulesInnerAlertsInner( + state = 'firing', + active_at = '2023-10-05T14:30Z', + value = '1e+00', + ) + """ + + def testRulesResponseV1DataGroupsInnerRulesInnerAlertsInner(self): + """Test RulesResponseV1DataGroupsInnerRulesInnerAlertsInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_runtime_result.py b/test/test_runtime_result.py new file mode 100644 index 00000000..8903fc94 --- /dev/null +++ b/test/test_runtime_result.py @@ -0,0 +1,71 @@ +# coding: utf-8 + +""" +Sysdig Secure Vulnerability Management Runtimeview Public API + +This API allows reading runtime vulnerability data. + +The version of the OpenAPI document: 1.0.3 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.runtime_result import RuntimeResult + + +class TestRuntimeResult(unittest.TestCase): + """RuntimeResult unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RuntimeResult: + """Test RuntimeResult + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RuntimeResult` + """ + model = RuntimeResult() + if include_optional: + return RuntimeResult( + scope = {"asset.type":"workload","kubernetes.cluster.name":"prod-cluster-00","kubernetes.namespace.name":"foo","kubernetes.workload.name":"bar","kubernetes.workload.type":"deployment"}, + result_id = 'scan-1234', + resource_id = 'sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6', + sbom_id = 'sbom-1234', + main_asset_name = 'nginx:latest', + running_vuln_total_by_severity = sysdig_client.models.vuln_total_by_severity.VulnTotalBySeverity( + critical = 12345, + high = 12345, + medium = 12345, + low = 12345, + negligible = 12345, ), + vuln_total_by_severity = sysdig_client.models.vuln_total_by_severity.VulnTotalBySeverity( + critical = 12345, + high = 12345, + medium = 12345, + low = 12345, + negligible = 12345, ), + policy_evaluation_result = 'passed', + is_risk_spotlight_enabled = True + ) + else: + return RuntimeResult( + ) + """ + + def testRuntimeResult(self): + """Test RuntimeResult""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_runtime_results_response.py b/test/test_runtime_results_response.py new file mode 100644 index 00000000..928e4533 --- /dev/null +++ b/test/test_runtime_results_response.py @@ -0,0 +1,77 @@ +# coding: utf-8 + +""" +Sysdig Secure Vulnerability Management Runtimeview Public API + +This API allows reading runtime vulnerability data. + +The version of the OpenAPI document: 1.0.3 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.runtime_results_response import RuntimeResultsResponse + + +class TestRuntimeResultsResponse(unittest.TestCase): + """RuntimeResultsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RuntimeResultsResponse: + """Test RuntimeResultsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RuntimeResultsResponse` + """ + model = RuntimeResultsResponse() + if include_optional: + return RuntimeResultsResponse( + page = sysdig_client.models.vulnerability_management_page.VulnerabilityManagementPage( + total = 1, + next = 'MTI0MjM0Cg==', ), + data = [ + sysdig_client.models.runtime_result.RuntimeResult( + scope = {"asset.type":"workload","kubernetes.cluster.name":"prod-cluster-00","kubernetes.namespace.name":"foo","kubernetes.workload.name":"bar","kubernetes.workload.type":"deployment"}, + result_id = 'scan-1234', + resource_id = 'sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6', + sbom_id = 'sbom-1234', + main_asset_name = 'nginx:latest', + running_vuln_total_by_severity = sysdig_client.models.vuln_total_by_severity.VulnTotalBySeverity( + critical = 12345, + high = 12345, + medium = 12345, + low = 12345, + negligible = 12345, ), + vuln_total_by_severity = sysdig_client.models.vuln_total_by_severity.VulnTotalBySeverity( + critical = 12345, + high = 12345, + medium = 12345, + low = 12345, + negligible = 12345, ), + policy_evaluation_result = 'passed', + is_risk_spotlight_enabled = True, ) + ] + ) + else: + return RuntimeResultsResponse( + ) + """ + + def testRuntimeResultsResponse(self): + """Test RuntimeResultsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_saml_base_v1.py b/test/test_saml_base_v1.py new file mode 100644 index 00000000..1a2dad64 --- /dev/null +++ b/test/test_saml_base_v1.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.saml_base_v1 import SamlBaseV1 + + +class TestSamlBaseV1(unittest.TestCase): + """SamlBaseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SamlBaseV1: + """Test SamlBaseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SamlBaseV1` + """ + model = SamlBaseV1() + if include_optional: + return SamlBaseV1( + metadata_url = 'https://accounts.example.com/metadata', + metadata_xml = ' +', + email_parameter = 'email', + is_signature_validation_enabled = True, + is_signed_assertion_enabled = True, + is_destination_verification_enabled = True, + is_encryption_support_enabled = True + ) + else: + return SamlBaseV1( + ) + """ + + def testSamlBaseV1(self): + """Test SamlBaseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_saml_create_request_v1.py b/test/test_saml_create_request_v1.py new file mode 100644 index 00000000..a7faa85e --- /dev/null +++ b/test/test_saml_create_request_v1.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.saml_create_request_v1 import SamlCreateRequestV1 + + +class TestSamlCreateRequestV1(unittest.TestCase): + """SamlCreateRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SamlCreateRequestV1: + """Test SamlCreateRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SamlCreateRequestV1` + """ + model = SamlCreateRequestV1() + if include_optional: + return SamlCreateRequestV1( + metadata_url = 'https://accounts.example.com/metadata', + metadata_xml = ' +', + email_parameter = 'email', + is_signature_validation_enabled = True, + is_signed_assertion_enabled = True, + is_destination_verification_enabled = True, + is_encryption_support_enabled = True + ) + else: + return SamlCreateRequestV1( + email_parameter = 'email', + ) + """ + + def testSamlCreateRequestV1(self): + """Test SamlCreateRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_saml_response_v1.py b/test/test_saml_response_v1.py new file mode 100644 index 00000000..f639f300 --- /dev/null +++ b/test/test_saml_response_v1.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.saml_response_v1 import SamlResponseV1 + + +class TestSamlResponseV1(unittest.TestCase): + """SamlResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SamlResponseV1: + """Test SamlResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SamlResponseV1` + """ + model = SamlResponseV1() + if include_optional: + return SamlResponseV1( + metadata_url = 'https://accounts.example.com/metadata', + metadata_xml = ' +', + email_parameter = 'email', + is_signature_validation_enabled = True, + is_signed_assertion_enabled = True, + is_destination_verification_enabled = True, + is_encryption_support_enabled = True + ) + else: + return SamlResponseV1( + ) + """ + + def testSamlResponseV1(self): + """Test SamlResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_saml_update_request_v1.py b/test/test_saml_update_request_v1.py new file mode 100644 index 00000000..8557c079 --- /dev/null +++ b/test/test_saml_update_request_v1.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.saml_update_request_v1 import SamlUpdateRequestV1 + + +class TestSamlUpdateRequestV1(unittest.TestCase): + """SamlUpdateRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SamlUpdateRequestV1: + """Test SamlUpdateRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SamlUpdateRequestV1` + """ + model = SamlUpdateRequestV1() + if include_optional: + return SamlUpdateRequestV1( + metadata_url = 'https://accounts.example.com/metadata', + metadata_xml = ' +', + email_parameter = 'email', + is_signature_validation_enabled = True, + is_signed_assertion_enabled = True, + is_destination_verification_enabled = True, + is_encryption_support_enabled = True + ) + else: + return SamlUpdateRequestV1( + email_parameter = 'email', + is_signature_validation_enabled = True, + is_signed_assertion_enabled = True, + is_destination_verification_enabled = True, + is_encryption_support_enabled = True, + ) + """ + + def testSamlUpdateRequestV1(self): + """Test SamlUpdateRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_save_capture_storage_configuration_request_v1.py b/test/test_save_capture_storage_configuration_request_v1.py new file mode 100644 index 00000000..4d8fa778 --- /dev/null +++ b/test/test_save_capture_storage_configuration_request_v1.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.save_capture_storage_configuration_request_v1 import SaveCaptureStorageConfigurationRequestV1 + + +class TestSaveCaptureStorageConfigurationRequestV1(unittest.TestCase): + """SaveCaptureStorageConfigurationRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SaveCaptureStorageConfigurationRequestV1: + """Test SaveCaptureStorageConfigurationRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SaveCaptureStorageConfigurationRequestV1` + """ + model = SaveCaptureStorageConfigurationRequestV1() + if include_optional: + return SaveCaptureStorageConfigurationRequestV1( + is_enabled = False, + is_encryption_with_provided_key_enabled = False, + encryption_key = '23kA/KCxPktKXLijIIt91uB+sJ652w/ES9hZ3+eWadM=', + buckets = [ + sysdig_client.models.bucket_configuration_v1.Bucket Configuration V1( + name = 'my-bucket', + folder = 'my-folder', + description = 'My bucket description', + provider_key_id = 'my-provider-key-id', + endpoint = 'https://my-bucket.s3.amazonaws.com', + region = 'us-east-1', + path_style_access = False, ) + ] + ) + else: + return SaveCaptureStorageConfigurationRequestV1( + is_enabled = False, + ) + """ + + def testSaveCaptureStorageConfigurationRequestV1(self): + """Test SaveCaptureStorageConfigurationRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_save_team_user_request_v1.py b/test/test_save_team_user_request_v1.py new file mode 100644 index 00000000..5658e713 --- /dev/null +++ b/test/test_save_team_user_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.save_team_user_request_v1 import SaveTeamUserRequestV1 + + +class TestSaveTeamUserRequestV1(unittest.TestCase): + """SaveTeamUserRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SaveTeamUserRequestV1: + """Test SaveTeamUserRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SaveTeamUserRequestV1` + """ + model = SaveTeamUserRequestV1() + if include_optional: + return SaveTeamUserRequestV1( + standard_team_role = 'ROLE_TEAM_READ', + custom_team_role_id = 1 + ) + else: + return SaveTeamUserRequestV1( + ) + """ + + def testSaveTeamUserRequestV1(self): + """Test SaveTeamUserRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sbom_api.py b/test/test_sbom_api.py new file mode 100644 index 00000000..656f76ce --- /dev/null +++ b/test/test_sbom_api.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.sbom_api import SBOMApi + + +class TestSBOMApi(unittest.TestCase): + """SBOMApi unit test stubs""" + + def setUp(self) -> None: + self.api = SBOMApi() + + def tearDown(self) -> None: + pass + + def test_get_sbomv1beta1(self) -> None: + """Test case for get_sbomv1beta1 + + Get SBOM + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sbom_component.py b/test/test_sbom_component.py new file mode 100644 index 00000000..15dfafe0 --- /dev/null +++ b/test/test_sbom_component.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sbom_component import SbomComponent + + +class TestSbomComponent(unittest.TestCase): + """SbomComponent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SbomComponent: + """Test SbomComponent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SbomComponent` + """ + model = SbomComponent() + if include_optional: + return SbomComponent( + type = 'library', + name = 'tomcat-catalina', + bom_ref = '5581fa94-9052-4e55-8b28-750f16e183be', + version = '9.0.14', + group = 'com.acme', + purl = 'pkg:maven/com.acme/tomcat-catalina@9.0.14?packaging=jar' + ) + else: + return SbomComponent( + type = 'library', + name = 'tomcat-catalina', + ) + """ + + def testSbomComponent(self): + """Test SbomComponent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sbom_result_response.py b/test/test_sbom_result_response.py new file mode 100644 index 00000000..73ff3d8c --- /dev/null +++ b/test/test_sbom_result_response.py @@ -0,0 +1,95 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sbom_result_response import SbomResultResponse + + +class TestSbomResultResponse(unittest.TestCase): + """SbomResultResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SbomResultResponse: + """Test SbomResultResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SbomResultResponse` + """ + model = SbomResultResponse() + if include_optional: + return SbomResultResponse( + bom_format = 'CycloneDX', + spec_version = '1.5', + serial_number = 'urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79', + version = 1, + metadata = sysdig_client.models.bom_metadata.BOM Metadata( + timestamp = '2018-03-20T09:12:28Z', + lifecycle = 'post-build', + tools = sysdig_client.models.creation_tools.Creation Tools(), + component = sysdig_client.models.sbom_component_schema.SBOM component schema( + type = 'library', + name = 'tomcat-catalina', + bom_ref = '5581fa94-9052-4e55-8b28-750f16e183be', + version = '9.0.14', + group = 'com.acme', + purl = 'pkg:maven/com.acme/tomcat-catalina@9.0.14?packaging=jar', ), ), + components = [ + sysdig_client.models.sbom_component_schema.SBOM component schema( + type = 'library', + name = 'tomcat-catalina', + bom_ref = '5581fa94-9052-4e55-8b28-750f16e183be', + version = '9.0.14', + group = 'com.acme', + purl = 'pkg:maven/com.acme/tomcat-catalina@9.0.14?packaging=jar', ) + ], + dependencies = [ + sysdig_client.models.dependency.Dependency( + ref = '5581fa94-9052-4e55-8b28-750f16e183be', + depends_on = [ + '5581fa94-9052-4e55-8b28-750f16e183be' + ], ) + ], + compositions = [ + sysdig_client.models.compositions_inner.Compositions_inner( + aggregate = 'complete', + assemblies = [ + '5581fa94-9052-4e55-8b28-750f16e183be' + ], + dependencies = [ + '5581fa94-9052-4e55-8b28-750f16e183be' + ], ) + ] + ) + else: + return SbomResultResponse( + bom_format = 'CycloneDX', + spec_version = '1.5', + ) + """ + + def testSbomResultResponse(self): + """Test SbomResultResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_scan_result_response.py b/test/test_scan_result_response.py new file mode 100644 index 00000000..60fc3c83 --- /dev/null +++ b/test/test_scan_result_response.py @@ -0,0 +1,99 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.scan_result_response import ScanResultResponse + + +class TestScanResultResponse(unittest.TestCase): + """ScanResultResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ScanResultResponse: + """Test ScanResultResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ScanResultResponse` + """ + model = ScanResultResponse() + if include_optional: + return ScanResultResponse( + asset_type = 'containerImage', + stage = 'pipeline', + metadata = None, + packages = {"2772f8a6c73fa17":{"type":"os","name":"openssl","isRunning":true,"isRemoved":true,"version":"1.2.3","license":"MIT","path":"/usr/local/bin/openssl","suggestedFix":"1.2.3","layerRef":"f95aa9ae66563e7e808b","vulnerabilitiesRefs":["71af37c6a8f2772"]}}, + vulnerabilities = {"71af37c6a8f2772":{"name":"CVE-2021-1234","severity":"high","cvssScore":{"version":"3.0","score":1,"vector":"AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"},"disclosureDate":"2021-01-02","solutionDate":"2021-01-02","exploitable":true,"exploit":{"publicationDate":"2024-01-22T08:51:46.00Z","links":["https://sysdig-example.com/exploits/12345"]},"fixVersion":"1.2.3","mainProvider":"vulndb","packageRef":"2772f8a6c73fa17","riskAcceptRefs":["e6b4b0d3255bfef"],"providersMetadata":{"nvd":{}},"cisaKev":{"publishDate":"2023-12-06","dueDate":"2023-10-31","knownRansomwareCampaignUse":"false"}}}, + layers = {"f95aa9ae66563e7e808b":{"digest":"sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08","size":50,"command":"COPY docker-entrypoint.sh","baseImagesRef":["a3ee5e6b4b0d3255bf"]}}, + base_images = {"a3ee5e6b4b0d3255bf":{"pullStrings":["alpine:latest"]}}, + policies = sysdig_client.models.bundle.Bundle( + global_evaluation = 'passed', + evaluations = [ + sysdig_client.models.policy_evaluation.Policy Evaluation( + name = 'policy-0', + identifier = '550e8400-e29b', + description = 'description', + bundles = [ + sysdig_client.models.bundle.Bundle( + name = 'Severe vulnerabilities with a Fix', + identifier = 'severe_vulnerabilities_with_a_fix', + type = 'predefined', + rules = [ + sysdig_client.models.rule.Rule( + rule_id = '1234A', + rule_type = 'vulnDenyList', + evaluation_result = 'passed', + predicates = [ + sysdig_client.models.predicate.Predicate( + type = 'vulnIsFixable', + extra = sysdig_client.models.extra.extra(), ) + ], + failure_type = 'pkgVulnFailure', + description = 'rule description', + failures = [ + null + ], ) + ], ) + ], + evaluation = 'passed', + created_at = '2024-01-22T08:51:46.016464Z', + updated_at = '2024-01-22T08:51:46.016464Z', ) + ], ), + risk_accepts = {"e6b4b0d3255bfef":{"id":"550e8400-e29b","entityType":"imageName","entityValue":"nginx:latest","context":[{"type":"imageName","value":"nginx:latest"}],"status":"active","reason":"RiskMitigated","description":"description","expirationDate":"2021-07-01","createdAt":"2024-01-22T08:51:46.016464Z","updatedAt":"2024-01-22T08:51:46.016464Z"}}, + producer = sysdig_client.models.producer.Producer( + produced_at = '2024-01-22T08:51:46Z', ) + ) + else: + return ScanResultResponse( + asset_type = 'containerImage', + stage = 'pipeline', + metadata = None, + packages = {"2772f8a6c73fa17":{"type":"os","name":"openssl","isRunning":true,"isRemoved":true,"version":"1.2.3","license":"MIT","path":"/usr/local/bin/openssl","suggestedFix":"1.2.3","layerRef":"f95aa9ae66563e7e808b","vulnerabilitiesRefs":["71af37c6a8f2772"]}}, + ) + """ + + def testScanResultResponse(self): + """Test ScanResultResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_scan_result_response_metadata.py b/test/test_scan_result_response_metadata.py new file mode 100644 index 00000000..4a6c4a44 --- /dev/null +++ b/test/test_scan_result_response_metadata.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.scan_result_response_metadata import ScanResultResponseMetadata + + +class TestScanResultResponseMetadata(unittest.TestCase): + """ScanResultResponseMetadata unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ScanResultResponseMetadata: + """Test ScanResultResponseMetadata + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ScanResultResponseMetadata` + """ + model = ScanResultResponseMetadata() + if include_optional: + return ScanResultResponseMetadata( + pull_string = 'nginx:latest', + image_id = 'sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182', + digest = 'sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182', + base_os = 'debian', + size = 10240, + os = 'debian', + architecture = 'x86_64', + labels = {key=value}, + author = 'sysdig', + created_at = '2024-01-22T08:51:46.016464Z', + host_id = 'fa71009b1b1b4b1b9b1b1b1b1b1b1b1b', + host_name = 'ip-xxx-xx-x-x.ec2.internal' + ) + else: + return ScanResultResponseMetadata( + pull_string = 'nginx:latest', + image_id = 'sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182', + base_os = 'debian', + size = 10240, + os = 'debian', + created_at = '2024-01-22T08:51:46.016464Z', + host_id = 'fa71009b1b1b4b1b9b1b1b1b1b1b1b1b', + host_name = 'ip-xxx-xx-x-x.ec2.internal', + ) + """ + + def testScanResultResponseMetadata(self): + """Test ScanResultResponseMetadata""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_schedule_response.py b/test/test_schedule_response.py new file mode 100644 index 00000000..fa7b6af1 --- /dev/null +++ b/test/test_schedule_response.py @@ -0,0 +1,98 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.schedule_response import ScheduleResponse + + +class TestScheduleResponse(unittest.TestCase): + """ScheduleResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ScheduleResponse: + """Test ScheduleResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ScheduleResponse` + """ + model = ScheduleResponse() + if include_optional: + return ScheduleResponse( + id = '2pAtvxUMOXjoZlA1WJkkoCL6SeS', + user_id = 2678526, + team_id = 2074112, + customer_id = 121517, + name = 'test schedule password 1', + description = '', + report_id = 26, + report_name = 'Compliance Readiness Report', + is_report_template = True, + report_format = 'pdf', + zones = [ + 239 + ], + policies = [ + 52 + ], + timezone = 'America/Chicago', + schedule = '00 30 06 * * *', + enabled = True, + notification_channels = [ + null + ], + iac_task_id = 647423, + password_enabled = True, + compression = 'zip', + created_by = 'user@sysdig.com', + updated_by = 'user@sysdig.com', + created_on = '2024-11-21T20:29:01.415528Z', + modified_on = '2024-11-22T04:40:17.308300Z', + last_scheduled_on = '2024-12-10T06:30:05.472079Z', + last_started_on = '2024-12-10T06:30:05.472079Z', + last_completed_on = '2024-12-10T06:30:36.194531Z' + ) + else: + return ScheduleResponse( + id = '2pAtvxUMOXjoZlA1WJkkoCL6SeS', + user_id = 2678526, + team_id = 2074112, + customer_id = 121517, + report_id = 26, + is_report_template = True, + report_format = 'pdf', + zones = [ + 239 + ], + schedule = '00 30 06 * * *', + enabled = True, + created_by = 'user@sysdig.com', + created_on = '2024-11-21T20:29:01.415528Z', + ) + """ + + def testScheduleResponse(self): + """Test ScheduleResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_scope_type_v1.py b/test/test_scope_type_v1.py new file mode 100644 index 00000000..df8ca251 --- /dev/null +++ b/test/test_scope_type_v1.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.scope_type_v1 import ScopeTypeV1 + + +class TestScopeTypeV1(unittest.TestCase): + """ScopeTypeV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testScopeTypeV1(self): + """Test ScopeTypeV1""" + # inst = ScopeTypeV1() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_scope_v1.py b/test/test_scope_v1.py new file mode 100644 index 00000000..91f3b05b --- /dev/null +++ b/test/test_scope_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.scope_v1 import ScopeV1 + + +class TestScopeV1(unittest.TestCase): + """ScopeV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ScopeV1: + """Test ScopeV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ScopeV1` + """ + model = ScopeV1() + if include_optional: + return ScopeV1( + type = 'PROMETHEUS_REMOTE_WRITE', + expression = 'kubernetes.cluster.name in ("test-env")' + ) + else: + return ScopeV1( + type = 'PROMETHEUS_REMOTE_WRITE', + expression = 'kubernetes.cluster.name in ("test-env")', + ) + """ + + def testScopeV1(self): + """Test ScopeV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_secure_events_api.py b/test/test_secure_events_api.py new file mode 100644 index 00000000..9f0b62b6 --- /dev/null +++ b/test/test_secure_events_api.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.secure_events_api import SecureEventsApi + + +class TestSecureEventsApi(unittest.TestCase): + """SecureEventsApi unit test stubs""" + + def setUp(self) -> None: + self.api = SecureEventsApi() + + def tearDown(self) -> None: + pass + + def test_get_event_v1(self) -> None: + """Test case for get_event_v1 + + Get event + """ + pass + + def test_get_events_supported_filters_v1(self) -> None: + """Test case for get_events_supported_filters_v1 + + Get available filters + """ + pass + + def test_get_events_v1(self) -> None: + """Test case for get_events_v1 + + List events + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sequence_inner.py b/test/test_sequence_inner.py new file mode 100644 index 00000000..c2a80b1f --- /dev/null +++ b/test/test_sequence_inner.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sequence_inner import SequenceInner + + +class TestSequenceInner(unittest.TestCase): + """SequenceInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SequenceInner: + """Test SequenceInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SequenceInner` + """ + model = SequenceInner() + if include_optional: + return SequenceInner( + event_id = '9aca10ca-481a-4ab7-b8fa-929c1ebf4c18', + event_name = 'CreateUser', + event_time = '2024-08-11T23:48:40Z', + ingestion_id = '41157131027', + region = 'us-east-1', + source = 'aws', + source_ip_address = '1.1.1.1', + sub_ingestion_id = 'us-east-1' + ) + else: + return SequenceInner( + event_id = '9aca10ca-481a-4ab7-b8fa-929c1ebf4c18', + event_name = 'CreateUser', + event_time = '2024-08-11T23:48:40Z', + ingestion_id = '41157131027', + region = 'us-east-1', + source = 'aws', + source_ip_address = '1.1.1.1', + sub_ingestion_id = 'us-east-1', + ) + """ + + def testSequenceInner(self): + """Test SequenceInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_series_response_v1.py b/test/test_series_response_v1.py new file mode 100644 index 00000000..f2276e99 --- /dev/null +++ b/test/test_series_response_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.series_response_v1 import SeriesResponseV1 + + +class TestSeriesResponseV1(unittest.TestCase): + """SeriesResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SeriesResponseV1: + """Test SeriesResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SeriesResponseV1` + """ + model = SeriesResponseV1() + if include_optional: + return SeriesResponseV1( + status = 'success', + data = [{"__name__":"up","instance":"localhost:9090","job":"prometheus"},{"__name__":"process_start_time_seconds","instance":"localhost:9090","job":"prometheus"}], + warnings = [], + infos = [] + ) + else: + return SeriesResponseV1( + ) + """ + + def testSeriesResponseV1(self): + """Test SeriesResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_service_account_response_v1.py b/test/test_service_account_response_v1.py new file mode 100644 index 00000000..c0b3578e --- /dev/null +++ b/test/test_service_account_response_v1.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.service_account_response_v1 import ServiceAccountResponseV1 + + +class TestServiceAccountResponseV1(unittest.TestCase): + """ServiceAccountResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ServiceAccountResponseV1: + """Test ServiceAccountResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ServiceAccountResponseV1` + """ + model = ServiceAccountResponseV1() + if include_optional: + return ServiceAccountResponseV1( + id = 1, + name = 'CI/CD service api key', + date_created = '2024-08-23T17:32:28Z', + last_updated = '2024-04-11T17:32:28Z', + last_used = '2024-06-15T17:32:28Z', + expiration_date = '2024-06-15T17:32:28Z', + team_id = 32, + team_role = 'ROLE_TEAM_STANDARD', + system_roles = [ + 'ROLE_SERVICE_ACCOUNT' + ] + ) + else: + return ServiceAccountResponseV1( + ) + """ + + def testServiceAccountResponseV1(self): + """Test ServiceAccountResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_service_account_with_key_response_v1.py b/test/test_service_account_with_key_response_v1.py new file mode 100644 index 00000000..d2f89aab --- /dev/null +++ b/test/test_service_account_with_key_response_v1.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.service_account_with_key_response_v1 import ServiceAccountWithKeyResponseV1 + + +class TestServiceAccountWithKeyResponseV1(unittest.TestCase): + """ServiceAccountWithKeyResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ServiceAccountWithKeyResponseV1: + """Test ServiceAccountWithKeyResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ServiceAccountWithKeyResponseV1` + """ + model = ServiceAccountWithKeyResponseV1() + if include_optional: + return ServiceAccountWithKeyResponseV1( + id = 1, + name = 'CI/CD service api key', + date_created = '2024-08-23T17:32:28Z', + last_updated = '2024-04-11T17:32:28Z', + last_used = '2024-06-15T17:32:28Z', + expiration_date = '2024-06-15T17:32:28Z', + team_id = 32, + team_role = 'ROLE_TEAM_STANDARD', + system_roles = [ + 'ROLE_SERVICE_ACCOUNT' + ], + api_key = '123ab45c-d67e-89fg-0hij-1k23456l7890-n1MO' + ) + else: + return ServiceAccountWithKeyResponseV1( + ) + """ + + def testServiceAccountWithKeyResponseV1(self): + """Test ServiceAccountWithKeyResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_service_accounts_api.py b/test/test_service_accounts_api.py new file mode 100644 index 00000000..f3edbea4 --- /dev/null +++ b/test/test_service_accounts_api.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.service_accounts_api import ServiceAccountsApi + + +class TestServiceAccountsApi(unittest.TestCase): + """ServiceAccountsApi unit test stubs""" + + def setUp(self) -> None: + self.api = ServiceAccountsApi() + + def tearDown(self) -> None: + pass + + def test_create_global_service_account_v1(self) -> None: + """Test case for create_global_service_account_v1 + + Create a Global Service Account + """ + pass + + def test_create_team_service_account_v1(self) -> None: + """Test case for create_team_service_account_v1 + + Create a Team Service Account + """ + pass + + def test_delete_global_service_account_by_id_v1(self) -> None: + """Test case for delete_global_service_account_by_id_v1 + + Delete a Global Service Account + """ + pass + + def test_delete_team_service_account_by_id_v1(self) -> None: + """Test case for delete_team_service_account_by_id_v1 + + Delete a Team Service Account + """ + pass + + def test_get_global_service_account_by_id_v1(self) -> None: + """Test case for get_global_service_account_by_id_v1 + + Get a Global Service Account + """ + pass + + def test_get_global_service_accounts_v1(self) -> None: + """Test case for get_global_service_accounts_v1 + + List Global Service Accounts + """ + pass + + def test_get_team_service_account_by_id_v1(self) -> None: + """Test case for get_team_service_account_by_id_v1 + + Get a Team Service Account + """ + pass + + def test_get_team_service_accounts_v1(self) -> None: + """Test case for get_team_service_accounts_v1 + + List Team Service Accounts + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_service_accounts_notification_settings_api.py b/test/test_service_accounts_notification_settings_api.py new file mode 100644 index 00000000..0b6313fb --- /dev/null +++ b/test/test_service_accounts_notification_settings_api.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.service_accounts_notification_settings_api import ServiceAccountsNotificationSettingsApi + + +class TestServiceAccountsNotificationSettingsApi(unittest.TestCase): + """ServiceAccountsNotificationSettingsApi unit test stubs""" + + def setUp(self) -> None: + self.api = ServiceAccountsNotificationSettingsApi() + + def tearDown(self) -> None: + pass + + def test_create_global_service_accounts_notification_settings_v1(self) -> None: + """Test case for create_global_service_accounts_notification_settings_v1 + + Create Global Service Accounts Notification Settings + """ + pass + + def test_create_service_accounts_notification_settings_v1(self) -> None: + """Test case for create_service_accounts_notification_settings_v1 + + Create Service Accounts Notification Settings + """ + pass + + def test_delete_global_service_accounts_notification_settings_v1(self) -> None: + """Test case for delete_global_service_accounts_notification_settings_v1 + + Delete Global Service Accounts Notification Settings + """ + pass + + def test_delete_service_accounts_notification_settings_v1(self) -> None: + """Test case for delete_service_accounts_notification_settings_v1 + + Delete Service Accounts Notification Settings + """ + pass + + def test_get_global_service_accounts_notification_settings_v1(self) -> None: + """Test case for get_global_service_accounts_notification_settings_v1 + + Get Global Service Accounts Notification Settings + """ + pass + + def test_get_service_accounts_notification_settings_v1(self) -> None: + """Test case for get_service_accounts_notification_settings_v1 + + Get Service Accounts Notification Settings + """ + pass + + def test_update_global_service_accounts_notification_settings_v1(self) -> None: + """Test case for update_global_service_accounts_notification_settings_v1 + + Update Global Service Accounts Notification Settings + """ + pass + + def test_update_service_accounts_notification_settings_v1(self) -> None: + """Test case for update_service_accounts_notification_settings_v1 + + Update Service Accounts Notification Settings + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_service_accounts_notification_settings_response_v1.py b/test/test_service_accounts_notification_settings_response_v1.py new file mode 100644 index 00000000..2ce11395 --- /dev/null +++ b/test/test_service_accounts_notification_settings_response_v1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.service_accounts_notification_settings_response_v1 import ServiceAccountsNotificationSettingsResponseV1 + + +class TestServiceAccountsNotificationSettingsResponseV1(unittest.TestCase): + """ServiceAccountsNotificationSettingsResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ServiceAccountsNotificationSettingsResponseV1: + """Test ServiceAccountsNotificationSettingsResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ServiceAccountsNotificationSettingsResponseV1` + """ + model = ServiceAccountsNotificationSettingsResponseV1() + if include_optional: + return ServiceAccountsNotificationSettingsResponseV1( + is_enabled = True, + notification_channel_ids = [ + null + ], + days_before_expiry = [ + 3 + ] + ) + else: + return ServiceAccountsNotificationSettingsResponseV1( + ) + """ + + def testServiceAccountsNotificationSettingsResponseV1(self): + """Test ServiceAccountsNotificationSettingsResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_service_accounts_notification_settins_base.py b/test/test_service_accounts_notification_settins_base.py new file mode 100644 index 00000000..fdc17918 --- /dev/null +++ b/test/test_service_accounts_notification_settins_base.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.service_accounts_notification_settins_base import ServiceAccountsNotificationSettinsBase + + +class TestServiceAccountsNotificationSettinsBase(unittest.TestCase): + """ServiceAccountsNotificationSettinsBase unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ServiceAccountsNotificationSettinsBase: + """Test ServiceAccountsNotificationSettinsBase + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ServiceAccountsNotificationSettinsBase` + """ + model = ServiceAccountsNotificationSettinsBase() + if include_optional: + return ServiceAccountsNotificationSettinsBase( + is_enabled = True, + notification_channel_ids = [ + null + ], + days_before_expiry = [ + 3 + ] + ) + else: + return ServiceAccountsNotificationSettinsBase( + ) + """ + + def testServiceAccountsNotificationSettinsBase(self): + """Test ServiceAccountsNotificationSettinsBase""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_services.py b/test/test_services.py new file mode 100644 index 00000000..94948808 --- /dev/null +++ b/test/test_services.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.services import Services + + +class TestServices(unittest.TestCase): + """Services unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Services: + """Test Services + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Services` + """ + model = Services() + if include_optional: + return Services( + certificate_id = 12345, + service_type = 'EVENTS_FORWARDER', + registered_at = '1970-01-01T00:00Z', + service_id = '12345' + ) + else: + return Services( + certificate_id = 12345, + service_type = 'EVENTS_FORWARDER', + registered_at = '1970-01-01T00:00Z', + service_id = '12345', + ) + """ + + def testServices(self): + """Test Services""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_services_response.py b/test/test_services_response.py new file mode 100644 index 00000000..b4975e90 --- /dev/null +++ b/test/test_services_response.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.services_response import ServicesResponse + + +class TestServicesResponse(unittest.TestCase): + """ServicesResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ServicesResponse: + """Test ServicesResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ServicesResponse` + """ + model = ServicesResponse() + if include_optional: + return ServicesResponse( + data = [ + sysdig_client.models.services.Services( + certificate_id = 12345, + service_type = 'EVENTS_FORWARDER', + registered_at = '1970-01-01T00:00Z', + service_id = '12345', ) + ] + ) + else: + return ServicesResponse( + data = [ + sysdig_client.models.services.Services( + certificate_id = 12345, + service_type = 'EVENTS_FORWARDER', + registered_at = '1970-01-01T00:00Z', + service_id = '12345', ) + ], + ) + """ + + def testServicesResponse(self): + """Test ServicesResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_slack_base_notification_channel_options_v1.py b/test/test_slack_base_notification_channel_options_v1.py new file mode 100644 index 00000000..c21cd534 --- /dev/null +++ b/test/test_slack_base_notification_channel_options_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.slack_base_notification_channel_options_v1 import SlackBaseNotificationChannelOptionsV1 + + +class TestSlackBaseNotificationChannelOptionsV1(unittest.TestCase): + """SlackBaseNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SlackBaseNotificationChannelOptionsV1: + """Test SlackBaseNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SlackBaseNotificationChannelOptionsV1` + """ + model = SlackBaseNotificationChannelOptionsV1() + if include_optional: + return SlackBaseNotificationChannelOptionsV1( + channel = '\@some.user', + url = 'https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX' + ) + else: + return SlackBaseNotificationChannelOptionsV1( + url = 'https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX', + ) + """ + + def testSlackBaseNotificationChannelOptionsV1(self): + """Test SlackBaseNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_slack_create_notification_channel_options_v1.py b/test/test_slack_create_notification_channel_options_v1.py new file mode 100644 index 00000000..ea3cf138 --- /dev/null +++ b/test/test_slack_create_notification_channel_options_v1.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.slack_create_notification_channel_options_v1 import SlackCreateNotificationChannelOptionsV1 + + +class TestSlackCreateNotificationChannelOptionsV1(unittest.TestCase): + """SlackCreateNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SlackCreateNotificationChannelOptionsV1: + """Test SlackCreateNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SlackCreateNotificationChannelOptionsV1` + """ + model = SlackCreateNotificationChannelOptionsV1() + if include_optional: + return SlackCreateNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + channel = '\@some.user', + url = 'https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX', + is_private_channel = False, + private_channel_url = 'https://app.slack.com/client/TXXXXXXXX/CXXXXXXXXXX' + ) + else: + return SlackCreateNotificationChannelOptionsV1( + url = 'https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX', + ) + """ + + def testSlackCreateNotificationChannelOptionsV1(self): + """Test SlackCreateNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_slack_notification_channel_response_v1.py b/test/test_slack_notification_channel_response_v1.py new file mode 100644 index 00000000..0eff8617 --- /dev/null +++ b/test/test_slack_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.slack_notification_channel_response_v1 import SlackNotificationChannelResponseV1 + + +class TestSlackNotificationChannelResponseV1(unittest.TestCase): + """SlackNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SlackNotificationChannelResponseV1: + """Test SlackNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SlackNotificationChannelResponseV1` + """ + model = SlackNotificationChannelResponseV1() + if include_optional: + return SlackNotificationChannelResponseV1( + options = None + ) + else: + return SlackNotificationChannelResponseV1( + options = None, + ) + """ + + def testSlackNotificationChannelResponseV1(self): + """Test SlackNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_slack_read_notification_channel_options_v1.py b/test/test_slack_read_notification_channel_options_v1.py new file mode 100644 index 00000000..25ac5e81 --- /dev/null +++ b/test/test_slack_read_notification_channel_options_v1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.slack_read_notification_channel_options_v1 import SlackReadNotificationChannelOptionsV1 + + +class TestSlackReadNotificationChannelOptionsV1(unittest.TestCase): + """SlackReadNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SlackReadNotificationChannelOptionsV1: + """Test SlackReadNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SlackReadNotificationChannelOptionsV1` + """ + model = SlackReadNotificationChannelOptionsV1() + if include_optional: + return SlackReadNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + channel = '\@some.user', + url = 'https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX', + is_private_channel = False, + private_channel_url = 'https://app.slack.com/client/TXXXXXXXX/CXXXXXXXXXX', + channel_creator_user_id = 1234 + ) + else: + return SlackReadNotificationChannelOptionsV1( + url = 'https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX', + ) + """ + + def testSlackReadNotificationChannelOptionsV1(self): + """Test SlackReadNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_slack_update_notification_channel_options_v1.py b/test/test_slack_update_notification_channel_options_v1.py new file mode 100644 index 00000000..9d824e2e --- /dev/null +++ b/test/test_slack_update_notification_channel_options_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.slack_update_notification_channel_options_v1 import SlackUpdateNotificationChannelOptionsV1 + + +class TestSlackUpdateNotificationChannelOptionsV1(unittest.TestCase): + """SlackUpdateNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SlackUpdateNotificationChannelOptionsV1: + """Test SlackUpdateNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SlackUpdateNotificationChannelOptionsV1` + """ + model = SlackUpdateNotificationChannelOptionsV1() + if include_optional: + return SlackUpdateNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + channel = '\@some.user', + url = 'https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX' + ) + else: + return SlackUpdateNotificationChannelOptionsV1( + url = 'https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX', + ) + """ + + def testSlackUpdateNotificationChannelOptionsV1(self): + """Test SlackUpdateNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sns_notification_channel_options_v1.py b/test/test_sns_notification_channel_options_v1.py new file mode 100644 index 00000000..8b2f708f --- /dev/null +++ b/test/test_sns_notification_channel_options_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sns_notification_channel_options_v1 import SnsNotificationChannelOptionsV1 + + +class TestSnsNotificationChannelOptionsV1(unittest.TestCase): + """SnsNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SnsNotificationChannelOptionsV1: + """Test SnsNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SnsNotificationChannelOptionsV1` + """ + model = SnsNotificationChannelOptionsV1() + if include_optional: + return SnsNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + sns_topic_arns = [ + 'arn:aws:sns:us-east-1:123456789012:mytopic-ABCDEFGHIJ01.' + ] + ) + else: + return SnsNotificationChannelOptionsV1( + ) + """ + + def testSnsNotificationChannelOptionsV1(self): + """Test SnsNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sns_notification_channel_response_v1.py b/test/test_sns_notification_channel_response_v1.py new file mode 100644 index 00000000..0ad534e0 --- /dev/null +++ b/test/test_sns_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sns_notification_channel_response_v1 import SnsNotificationChannelResponseV1 + + +class TestSnsNotificationChannelResponseV1(unittest.TestCase): + """SnsNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SnsNotificationChannelResponseV1: + """Test SnsNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SnsNotificationChannelResponseV1` + """ + model = SnsNotificationChannelResponseV1() + if include_optional: + return SnsNotificationChannelResponseV1( + options = None + ) + else: + return SnsNotificationChannelResponseV1( + options = None, + ) + """ + + def testSnsNotificationChannelResponseV1(self): + """Test SnsNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_source.py b/test/test_source.py new file mode 100644 index 00000000..e688f4df --- /dev/null +++ b/test/test_source.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.source import Source + + +class TestSource(unittest.TestCase): + """Source unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testSource(self): + """Test Source""" + # inst = Source() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_source_details.py b/test/test_source_details.py new file mode 100644 index 00000000..a8b56dad --- /dev/null +++ b/test/test_source_details.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.source_details import SourceDetails + + +class TestSourceDetails(unittest.TestCase): + """SourceDetails unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SourceDetails: + """Test SourceDetails + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SourceDetails` + """ + model = SourceDetails() + if include_optional: + return SourceDetails( + type = 'cloud', + sub_type = 'host' + ) + else: + return SourceDetails( + type = 'cloud', + ) + """ + + def testSourceDetails(self): + """Test SourceDetails""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_splunk_create_connection_info.py b/test/test_splunk_create_connection_info.py new file mode 100644 index 00000000..f3cf3150 --- /dev/null +++ b/test/test_splunk_create_connection_info.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.splunk_create_connection_info import SplunkCreateConnectionInfo + + +class TestSplunkCreateConnectionInfo(unittest.TestCase): + """SplunkCreateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SplunkCreateConnectionInfo: + """Test SplunkCreateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SplunkCreateConnectionInfo` + """ + model = SplunkCreateConnectionInfo() + if include_optional: + return SplunkCreateConnectionInfo( + endpoint = 'https://splunk.mydomain.com:443/services/collector/event', + source_type = 'cisco_syslog', + index = 'main', + is_insecure = False, + certificate_id = 1, + token = 'eyJraWQiOiJzcGx1bmsuc2VjcmV0IiwiYWxnIjoiSFM1MTIiLCJ2ZXIiOiJ2MSIsInR0eXAiOiJzdGF0aWMifQ.eyJpc3MiOiJhZG1pbiBmcm9tIHNvMSIsInN1YiI6ImFkbWluIiwiYXVkIjoiVG9rZW50b3duIiwiaWRwIjoic3BsdW5rIiwianRpIjoiY2EwOGE2ODQyZDNlYzIxYjRkMTg1NDk3NTRlOGU4ZDc3YTM5MmQ3ZTE3ZGUyOGNmZGM3MWI3ODAwNWExNmU3OCIsImlhdCI6MTU1MTk5OTM0NiwiZXhwIjowLCJuYnIiOjE1NTE5OTkzNDZ9.RrZxe89qchfEtrEnG1PjTmJzO_JTtPX8xqSiSunYGylupG114KujO3-E88TtM-Tf51qtVpJydR3JSJpPfaf17w' + ) + else: + return SplunkCreateConnectionInfo( + endpoint = 'https://splunk.mydomain.com:443/services/collector/event', + token = 'eyJraWQiOiJzcGx1bmsuc2VjcmV0IiwiYWxnIjoiSFM1MTIiLCJ2ZXIiOiJ2MSIsInR0eXAiOiJzdGF0aWMifQ.eyJpc3MiOiJhZG1pbiBmcm9tIHNvMSIsInN1YiI6ImFkbWluIiwiYXVkIjoiVG9rZW50b3duIiwiaWRwIjoic3BsdW5rIiwianRpIjoiY2EwOGE2ODQyZDNlYzIxYjRkMTg1NDk3NTRlOGU4ZDc3YTM5MmQ3ZTE3ZGUyOGNmZGM3MWI3ODAwNWExNmU3OCIsImlhdCI6MTU1MTk5OTM0NiwiZXhwIjowLCJuYnIiOjE1NTE5OTkzNDZ9.RrZxe89qchfEtrEnG1PjTmJzO_JTtPX8xqSiSunYGylupG114KujO3-E88TtM-Tf51qtVpJydR3JSJpPfaf17w', + ) + """ + + def testSplunkCreateConnectionInfo(self): + """Test SplunkCreateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_splunk_update_connection_info.py b/test/test_splunk_update_connection_info.py new file mode 100644 index 00000000..a07b18b2 --- /dev/null +++ b/test/test_splunk_update_connection_info.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.splunk_update_connection_info import SplunkUpdateConnectionInfo + + +class TestSplunkUpdateConnectionInfo(unittest.TestCase): + """SplunkUpdateConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SplunkUpdateConnectionInfo: + """Test SplunkUpdateConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SplunkUpdateConnectionInfo` + """ + model = SplunkUpdateConnectionInfo() + if include_optional: + return SplunkUpdateConnectionInfo( + endpoint = 'https://splunk.mydomain.com:443/services/collector/event', + source_type = 'cisco_syslog', + index = 'main', + is_insecure = False, + certificate_id = 1, + token = 'eyJraWQiOiJzcGx1bmsuc2VjcmV0IiwiYWxnIjoiSFM1MTIiLCJ2ZXIiOiJ2MSIsInR0eXAiOiJzdGF0aWMifQ.eyJpc3MiOiJhZG1pbiBmcm9tIHNvMSIsInN1YiI6ImFkbWluIiwiYXVkIjoiVG9rZW50b3duIiwiaWRwIjoic3BsdW5rIiwianRpIjoiY2EwOGE2ODQyZDNlYzIxYjRkMTg1NDk3NTRlOGU4ZDc3YTM5MmQ3ZTE3ZGUyOGNmZGM3MWI3ODAwNWExNmU3OCIsImlhdCI6MTU1MTk5OTM0NiwiZXhwIjowLCJuYnIiOjE1NTE5OTkzNDZ9.RrZxe89qchfEtrEnG1PjTmJzO_JTtPX8xqSiSunYGylupG114KujO3-E88TtM-Tf51qtVpJydR3JSJpPfaf17w' + ) + else: + return SplunkUpdateConnectionInfo( + endpoint = 'https://splunk.mydomain.com:443/services/collector/event', + ) + """ + + def testSplunkUpdateConnectionInfo(self): + """Test SplunkUpdateConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sso_settings_api.py b/test/test_sso_settings_api.py new file mode 100644 index 00000000..01ca47e1 --- /dev/null +++ b/test/test_sso_settings_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.sso_settings_api import SSOSettingsApi + + +class TestSSOSettingsApi(unittest.TestCase): + """SSOSettingsApi unit test stubs""" + + def setUp(self) -> None: + self.api = SSOSettingsApi() + + def tearDown(self) -> None: + pass + + def test_create_sso_settings_v1(self) -> None: + """Test case for create_sso_settings_v1 + + Create SSO Settings + """ + pass + + def test_delete_sso_settings_by_id_v1(self) -> None: + """Test case for delete_sso_settings_by_id_v1 + + Delete SSO Settings + """ + pass + + def test_get_sso_settings_by_id_v1(self) -> None: + """Test case for get_sso_settings_by_id_v1 + + Get SSO Settings + """ + pass + + def test_get_sso_settings_v1(self) -> None: + """Test case for get_sso_settings_v1 + + List SSO Settings + """ + pass + + def test_update_sso_settings_by_id_v1(self) -> None: + """Test case for update_sso_settings_by_id_v1 + + Update SSO Settings + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sso_settings_base_schema_v1.py b/test/test_sso_settings_base_schema_v1.py new file mode 100644 index 00000000..a8c35e7d --- /dev/null +++ b/test/test_sso_settings_base_schema_v1.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sso_settings_base_schema_v1 import SsoSettingsBaseSchemaV1 + + +class TestSsoSettingsBaseSchemaV1(unittest.TestCase): + """SsoSettingsBaseSchemaV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SsoSettingsBaseSchemaV1: + """Test SsoSettingsBaseSchemaV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SsoSettingsBaseSchemaV1` + """ + model = SsoSettingsBaseSchemaV1() + if include_optional: + return SsoSettingsBaseSchemaV1( + product = 'secure', + is_active = True, + create_user_on_login = True, + is_password_login_enabled = True, + is_single_logout_enabled = True, + is_group_mapping_enabled = True, + group_mapping_attribute_name = 'groups' + ) + else: + return SsoSettingsBaseSchemaV1( + ) + """ + + def testSsoSettingsBaseSchemaV1(self): + """Test SsoSettingsBaseSchemaV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sso_settings_create_request_base_v1.py b/test/test_sso_settings_create_request_base_v1.py new file mode 100644 index 00000000..ec7f33d0 --- /dev/null +++ b/test/test_sso_settings_create_request_base_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sso_settings_create_request_base_v1 import SsoSettingsCreateRequestBaseV1 + + +class TestSsoSettingsCreateRequestBaseV1(unittest.TestCase): + """SsoSettingsCreateRequestBaseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SsoSettingsCreateRequestBaseV1: + """Test SsoSettingsCreateRequestBaseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SsoSettingsCreateRequestBaseV1` + """ + model = SsoSettingsCreateRequestBaseV1() + if include_optional: + return SsoSettingsCreateRequestBaseV1( + type = 'SAML' + ) + else: + return SsoSettingsCreateRequestBaseV1( + type = 'SAML', + ) + """ + + def testSsoSettingsCreateRequestBaseV1(self): + """Test SsoSettingsCreateRequestBaseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sso_settings_response_base_v1.py b/test/test_sso_settings_response_base_v1.py new file mode 100644 index 00000000..3b983335 --- /dev/null +++ b/test/test_sso_settings_response_base_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sso_settings_response_base_v1 import SsoSettingsResponseBaseV1 + + +class TestSsoSettingsResponseBaseV1(unittest.TestCase): + """SsoSettingsResponseBaseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SsoSettingsResponseBaseV1: + """Test SsoSettingsResponseBaseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SsoSettingsResponseBaseV1` + """ + model = SsoSettingsResponseBaseV1() + if include_optional: + return SsoSettingsResponseBaseV1( + type = 'SAML' + ) + else: + return SsoSettingsResponseBaseV1( + type = 'SAML', + ) + """ + + def testSsoSettingsResponseBaseV1(self): + """Test SsoSettingsResponseBaseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sso_settings_response_v1.py b/test/test_sso_settings_response_v1.py new file mode 100644 index 00000000..d89f6714 --- /dev/null +++ b/test/test_sso_settings_response_v1.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sso_settings_response_v1 import SsoSettingsResponseV1 + + +class TestSsoSettingsResponseV1(unittest.TestCase): + """SsoSettingsResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SsoSettingsResponseV1: + """Test SsoSettingsResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SsoSettingsResponseV1` + """ + model = SsoSettingsResponseV1() + if include_optional: + return SsoSettingsResponseV1( + product = 'secure', + is_active = True, + create_user_on_login = True, + is_password_login_enabled = True, + is_single_logout_enabled = True, + is_group_mapping_enabled = True, + group_mapping_attribute_name = 'groups', + id = 1, + config = sysdig_client.models.sso_settings_write_base_response_v1.SSO Settings Write Base Response V1( + type = 'SAML', ), + date_created = '2017-07-21T17:32:28Z', + last_updated = '2017-07-21T17:32:28Z', + version = 1 + ) + else: + return SsoSettingsResponseV1( + ) + """ + + def testSsoSettingsResponseV1(self): + """Test SsoSettingsResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sso_settings_update_request_base_v1.py b/test/test_sso_settings_update_request_base_v1.py new file mode 100644 index 00000000..d73e1ca8 --- /dev/null +++ b/test/test_sso_settings_update_request_base_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sso_settings_update_request_base_v1 import SsoSettingsUpdateRequestBaseV1 + + +class TestSsoSettingsUpdateRequestBaseV1(unittest.TestCase): + """SsoSettingsUpdateRequestBaseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SsoSettingsUpdateRequestBaseV1: + """Test SsoSettingsUpdateRequestBaseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SsoSettingsUpdateRequestBaseV1` + """ + model = SsoSettingsUpdateRequestBaseV1() + if include_optional: + return SsoSettingsUpdateRequestBaseV1( + type = 'SAML' + ) + else: + return SsoSettingsUpdateRequestBaseV1( + type = 'SAML', + ) + """ + + def testSsoSettingsUpdateRequestBaseV1(self): + """Test SsoSettingsUpdateRequestBaseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sso_type_v1.py b/test/test_sso_type_v1.py new file mode 100644 index 00000000..a60ffcb3 --- /dev/null +++ b/test/test_sso_type_v1.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.sso_type_v1 import SsoTypeV1 + + +class TestSsoTypeV1(unittest.TestCase): + """SsoTypeV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testSsoTypeV1(self): + """Test SsoTypeV1""" + # inst = SsoTypeV1() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_stage.py b/test/test_stage.py new file mode 100644 index 00000000..7cc3f14a --- /dev/null +++ b/test/test_stage.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.stage import Stage + + +class TestStage(unittest.TestCase): + """Stage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Stage: + """Test Stage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Stage` + """ + model = Stage() + if include_optional: + return Stage( + name = 'runtime', + configuration = [ + sysdig_client.models.stage_configuration.stage configuration( + scope = 'kubernetes.cluster.name = "my-cluster" and kubernetes.namespace.name = "my-namespace"', ) + ] + ) + else: + return Stage( + name = 'runtime', + ) + """ + + def testStage(self): + """Test Stage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_stage_configuration.py b/test/test_stage_configuration.py new file mode 100644 index 00000000..e9acdefb --- /dev/null +++ b/test/test_stage_configuration.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.stage_configuration import StageConfiguration + + +class TestStageConfiguration(unittest.TestCase): + """StageConfiguration unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> StageConfiguration: + """Test StageConfiguration + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `StageConfiguration` + """ + model = StageConfiguration() + if include_optional: + return StageConfiguration( + scope = 'kubernetes.cluster.name = "my-cluster" and kubernetes.namespace.name = "my-namespace"' + ) + else: + return StageConfiguration( + ) + """ + + def testStageConfiguration(self): + """Test StageConfiguration""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_stateful_detections_content.py b/test/test_stateful_detections_content.py new file mode 100644 index 00000000..8895ecd3 --- /dev/null +++ b/test/test_stateful_detections_content.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.stateful_detections_content import StatefulDetectionsContent + + +class TestStatefulDetectionsContent(unittest.TestCase): + """StatefulDetectionsContent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> StatefulDetectionsContent: + """Test StatefulDetectionsContent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `StatefulDetectionsContent` + """ + model = StatefulDetectionsContent() + if include_optional: + return StatefulDetectionsContent( + type = 'workloadRuntimeDetection', + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + rule_tags = [ + 'AWS_IAM' + ], + policy_id = 2, + policy_origin = 'Sysdig', + policy_notification_channel_ids = [ + 123 + ], + output = '', + stats = [ + sysdig_client.models.stats_inner.Stats_inner( + api = 'DescribeInternetGateways', + count = 1, ) + ], + sequence = [ + sysdig_client.models.sequence_inner.Sequence_inner( + event_id = '9aca10ca-481a-4ab7-b8fa-929c1ebf4c18', + event_name = 'CreateUser', + event_time = '2024-08-11T23:48:40Z', + ingestion_id = '41157131027', + region = 'us-east-1', + source = 'aws', + source_ip_address = '1.1.1.1', + sub_ingestion_id = 'us-east-1', ) + ], + fields = None + ) + else: + return StatefulDetectionsContent( + type = 'workloadRuntimeDetection', + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + rule_tags = [ + 'AWS_IAM' + ], + policy_id = 2, + policy_origin = 'Sysdig', + policy_notification_channel_ids = [ + 123 + ], + output = '', + fields = None, + ) + """ + + def testStatefulDetectionsContent(self): + """Test StatefulDetectionsContent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_stateful_detections_content_all_of_fields.py b/test/test_stateful_detections_content_all_of_fields.py new file mode 100644 index 00000000..1cc67ce4 --- /dev/null +++ b/test/test_stateful_detections_content_all_of_fields.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.stateful_detections_content_all_of_fields import StatefulDetectionsContentAllOfFields + + +class TestStatefulDetectionsContentAllOfFields(unittest.TestCase): + """StatefulDetectionsContentAllOfFields unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> StatefulDetectionsContentAllOfFields: + """Test StatefulDetectionsContentAllOfFields + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `StatefulDetectionsContentAllOfFields` + """ + model = StatefulDetectionsContentAllOfFields() + if include_optional: + return StatefulDetectionsContentAllOfFields( + ) + else: + return StatefulDetectionsContentAllOfFields( + ) + """ + + def testStatefulDetectionsContentAllOfFields(self): + """Test StatefulDetectionsContentAllOfFields""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_stats_inner.py b/test/test_stats_inner.py new file mode 100644 index 00000000..4189dee7 --- /dev/null +++ b/test/test_stats_inner.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.stats_inner import StatsInner + + +class TestStatsInner(unittest.TestCase): + """StatsInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> StatsInner: + """Test StatsInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `StatsInner` + """ + model = StatsInner() + if include_optional: + return StatsInner( + api = 'DescribeInternetGateways', + count = 1 + ) + else: + return StatsInner( + ) + """ + + def testStatsInner(self): + """Test StatsInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_submit_action_execution_request.py b/test/test_submit_action_execution_request.py new file mode 100644 index 00000000..c7a01414 --- /dev/null +++ b/test/test_submit_action_execution_request.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.submit_action_execution_request import SubmitActionExecutionRequest + + +class TestSubmitActionExecutionRequest(unittest.TestCase): + """SubmitActionExecutionRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SubmitActionExecutionRequest: + """Test SubmitActionExecutionRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SubmitActionExecutionRequest` + """ + model = SubmitActionExecutionRequest() + if include_optional: + return SubmitActionExecutionRequest( + action_type = 'KILL_PROCESS', + caller_id = 'Mary-Response', + parameters = { + 'key' : null + } + ) + else: + return SubmitActionExecutionRequest( + action_type = 'KILL_PROCESS', + parameters = { + 'key' : null + }, + ) + """ + + def testSubmitActionExecutionRequest(self): + """Test SubmitActionExecutionRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_submit_undo_action_execution_request.py b/test/test_submit_undo_action_execution_request.py new file mode 100644 index 00000000..cf8696ad --- /dev/null +++ b/test/test_submit_undo_action_execution_request.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.submit_undo_action_execution_request import SubmitUndoActionExecutionRequest + + +class TestSubmitUndoActionExecutionRequest(unittest.TestCase): + """SubmitUndoActionExecutionRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SubmitUndoActionExecutionRequest: + """Test SubmitUndoActionExecutionRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SubmitUndoActionExecutionRequest` + """ + model = SubmitUndoActionExecutionRequest() + if include_optional: + return SubmitUndoActionExecutionRequest( + caller_id = 'Mary-Response' + ) + else: + return SubmitUndoActionExecutionRequest( + ) + """ + + def testSubmitUndoActionExecutionRequest(self): + """Test SubmitUndoActionExecutionRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_supported_filter.py b/test/test_supported_filter.py new file mode 100644 index 00000000..52106f99 --- /dev/null +++ b/test/test_supported_filter.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.supported_filter import SupportedFilter + + +class TestSupportedFilter(unittest.TestCase): + """SupportedFilter unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SupportedFilter: + """Test SupportedFilter + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SupportedFilter` + """ + model = SupportedFilter() + if include_optional: + return SupportedFilter( + id = 'container.image.id', + type = 'string', + operands = [ + '=' + ] + ) + else: + return SupportedFilter( + id = 'container.image.id', + type = 'string', + ) + """ + + def testSupportedFilter(self): + """Test SupportedFilter""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_supported_filter_type.py b/test/test_supported_filter_type.py new file mode 100644 index 00000000..1bb69503 --- /dev/null +++ b/test/test_supported_filter_type.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.supported_filter_type import SupportedFilterType + + +class TestSupportedFilterType(unittest.TestCase): + """SupportedFilterType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testSupportedFilterType(self): + """Test SupportedFilterType""" + # inst = SupportedFilterType() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_supported_filters_response.py b/test/test_supported_filters_response.py new file mode 100644 index 00000000..02972b5a --- /dev/null +++ b/test/test_supported_filters_response.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.supported_filters_response import SupportedFiltersResponse + + +class TestSupportedFiltersResponse(unittest.TestCase): + """SupportedFiltersResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SupportedFiltersResponse: + """Test SupportedFiltersResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `SupportedFiltersResponse` + """ + model = SupportedFiltersResponse() + if include_optional: + return SupportedFiltersResponse( + data = [ + sysdig_client.models.supported_filter.SupportedFilter( + id = 'container.image.id', + type = 'string', + operands = [ + '=' + ], ) + ] + ) + else: + return SupportedFiltersResponse( + data = [ + sysdig_client.models.supported_filter.SupportedFilter( + id = 'container.image.id', + type = 'string', + operands = [ + '=' + ], ) + ], + ) + """ + + def testSupportedFiltersResponse(self): + """Test SupportedFiltersResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_sys_ql_api.py b/test/test_sys_ql_api.py new file mode 100644 index 00000000..8f908aec --- /dev/null +++ b/test/test_sys_ql_api.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.sys_ql_api import SysQLApi + + +class TestSysQLApi(unittest.TestCase): + """SysQLApi unit test stubs""" + + def setUp(self) -> None: + self.api = SysQLApi() + + def tearDown(self) -> None: + pass + + def test_get_sysql_schema(self) -> None: + """Test case for get_sysql_schema + + Get SysQL Schema + """ + pass + + def test_query_sysql_get(self) -> None: + """Test case for query_sysql_get + + Execute SysQL query via GET + """ + pass + + def test_query_sysql_post(self) -> None: + """Test case for query_sysql_post + + Execute SysQL query via POST + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_team_email_notification_channel_options_v1.py b/test/test_team_email_notification_channel_options_v1.py new file mode 100644 index 00000000..ed35a03b --- /dev/null +++ b/test/test_team_email_notification_channel_options_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.team_email_notification_channel_options_v1 import TeamEmailNotificationChannelOptionsV1 + + +class TestTeamEmailNotificationChannelOptionsV1(unittest.TestCase): + """TeamEmailNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TeamEmailNotificationChannelOptionsV1: + """Test TeamEmailNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TeamEmailNotificationChannelOptionsV1` + """ + model = TeamEmailNotificationChannelOptionsV1() + if include_optional: + return TeamEmailNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + team_id = 13, + is_include_admin_users = False + ) + else: + return TeamEmailNotificationChannelOptionsV1( + ) + """ + + def testTeamEmailNotificationChannelOptionsV1(self): + """Test TeamEmailNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_team_email_notification_channel_response_v1.py b/test/test_team_email_notification_channel_response_v1.py new file mode 100644 index 00000000..d7d30e98 --- /dev/null +++ b/test/test_team_email_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.team_email_notification_channel_response_v1 import TeamEmailNotificationChannelResponseV1 + + +class TestTeamEmailNotificationChannelResponseV1(unittest.TestCase): + """TeamEmailNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TeamEmailNotificationChannelResponseV1: + """Test TeamEmailNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TeamEmailNotificationChannelResponseV1` + """ + model = TeamEmailNotificationChannelResponseV1() + if include_optional: + return TeamEmailNotificationChannelResponseV1( + options = None + ) + else: + return TeamEmailNotificationChannelResponseV1( + options = None, + ) + """ + + def testTeamEmailNotificationChannelResponseV1(self): + """Test TeamEmailNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_team_map_v1.py b/test/test_team_map_v1.py new file mode 100644 index 00000000..010f11bc --- /dev/null +++ b/test/test_team_map_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.team_map_v1 import TeamMapV1 + + +class TestTeamMapV1(unittest.TestCase): + """TeamMapV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TeamMapV1: + """Test TeamMapV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TeamMapV1` + """ + model = TeamMapV1() + if include_optional: + return TeamMapV1( + is_for_all_teams = False, + team_ids = [154,187] + ) + else: + return TeamMapV1( + ) + """ + + def testTeamMapV1(self): + """Test TeamMapV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_team_response_v1.py b/test/test_team_response_v1.py new file mode 100644 index 00000000..71f3564c --- /dev/null +++ b/test/test_team_response_v1.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.team_response_v1 import TeamResponseV1 + + +class TestTeamResponseV1(unittest.TestCase): + """TeamResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TeamResponseV1: + """Test TeamResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TeamResponseV1` + """ + model = TeamResponseV1() + if include_optional: + return TeamResponseV1( + id = 1, + name = 'Scanning operations', + description = 'This team has access to scanning results', + is_immutable_team = False, + is_default_team = False, + standard_team_role = 'ROLE_TEAM_READ', + custom_team_role_id = 1, + product = 'secure', + ui_settings = sysdig_client.models.ui_settings.UiSettings( + entry_point = sysdig_client.models.entry_point.Entry Point( + module = 'Alerts', + selection = '2231245', ), + theme = '#112233', ), + is_all_zones = False, + zone_ids = [ + 1 + ], + scopes = [ + sysdig_client.models.scope.Scope( + type = 'PROMETHEUS_REMOTE_WRITE', + expression = 'kubernetes.cluster.name in ("test-env")', ) + ], + additional_team_permissions = sysdig_client.models.additional_team_permissions.Additional Team Permissions( + has_sysdig_captures = False, + has_infrastructure_events = False, + has_aws_data = False, + has_rapid_response = False, + has_agent_cli = False, + has_beacon_metrics = False, ), + date_created = '2017-07-21T17:32:28Z', + last_updated = '2017-07-21T17:32:28Z', + version = 1 + ) + else: + return TeamResponseV1( + ) + """ + + def testTeamResponseV1(self): + """Test TeamResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_team_role_v1.py b/test/test_team_role_v1.py new file mode 100644 index 00000000..515edf83 --- /dev/null +++ b/test/test_team_role_v1.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.team_role_v1 import TeamRoleV1 + + +class TestTeamRoleV1(unittest.TestCase): + """TeamRoleV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testTeamRoleV1(self): + """Test TeamRoleV1""" + # inst = TeamRoleV1() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_team_user_response_v1.py b/test/test_team_user_response_v1.py new file mode 100644 index 00000000..ec97730c --- /dev/null +++ b/test/test_team_user_response_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.team_user_response_v1 import TeamUserResponseV1 + + +class TestTeamUserResponseV1(unittest.TestCase): + """TeamUserResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TeamUserResponseV1: + """Test TeamUserResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TeamUserResponseV1` + """ + model = TeamUserResponseV1() + if include_optional: + return TeamUserResponseV1( + team_id = 1, + user_id = 1, + standard_team_role = 'ROLE_TEAM_READ', + custom_team_role_id = 1 + ) + else: + return TeamUserResponseV1( + ) + """ + + def testTeamUserResponseV1(self): + """Test TeamUserResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_teams_api.py b/test/test_teams_api.py new file mode 100644 index 00000000..2c4bd3f0 --- /dev/null +++ b/test/test_teams_api.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.teams_api import TeamsApi + + +class TestTeamsApi(unittest.TestCase): + """TeamsApi unit test stubs""" + + def setUp(self) -> None: + self.api = TeamsApi() + + def tearDown(self) -> None: + pass + + def test_create_team_v1(self) -> None: + """Test case for create_team_v1 + + Create Team + """ + pass + + def test_delete_team_by_id_v1(self) -> None: + """Test case for delete_team_by_id_v1 + + Delete Team + """ + pass + + def test_delete_team_user_by_id_v1(self) -> None: + """Test case for delete_team_user_by_id_v1 + + Delete Membership + """ + pass + + def test_get_team_by_id_v1(self) -> None: + """Test case for get_team_by_id_v1 + + Get Team + """ + pass + + def test_get_team_user_by_id_v1(self) -> None: + """Test case for get_team_user_by_id_v1 + + Get Membership + """ + pass + + def test_get_team_users_v1(self) -> None: + """Test case for get_team_users_v1 + + List Memberships + """ + pass + + def test_get_teams_v1(self) -> None: + """Test case for get_teams_v1 + + List Teams + """ + pass + + def test_save_team_user_v1(self) -> None: + """Test case for save_team_user_v1 + + Save Membership + """ + pass + + def test_update_team_by_id_v1(self) -> None: + """Test case for update_team_by_id_v1 + + Update Team + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_time_frame.py b/test/test_time_frame.py new file mode 100644 index 00000000..de0c4be8 --- /dev/null +++ b/test/test_time_frame.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.time_frame import TimeFrame + + +class TestTimeFrame(unittest.TestCase): + """TimeFrame unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TimeFrame: + """Test TimeFrame + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TimeFrame` + """ + model = TimeFrame() + if include_optional: + return TimeFrame( + var_from = 1, + to = 1 + ) + else: + return TimeFrame( + ) + """ + + def testTimeFrame(self): + """Test TimeFrame""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_types.py b/test/test_types.py new file mode 100644 index 00000000..02fa2163 --- /dev/null +++ b/test/test_types.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.types import Types + + +class TestTypes(unittest.TestCase): + """Types unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testTypes(self): + """Test Types""" + # inst = Types() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_ui_settings_v1.py b/test/test_ui_settings_v1.py new file mode 100644 index 00000000..4182b91b --- /dev/null +++ b/test/test_ui_settings_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.ui_settings_v1 import UiSettingsV1 + + +class TestUiSettingsV1(unittest.TestCase): + """UiSettingsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UiSettingsV1: + """Test UiSettingsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UiSettingsV1` + """ + model = UiSettingsV1() + if include_optional: + return UiSettingsV1( + entry_point = sysdig_client.models.entry_point.Entry Point( + module = 'Alerts', + selection = '2231245', ), + theme = '#112233' + ) + else: + return UiSettingsV1( + ) + """ + + def testUiSettingsV1(self): + """Test UiSettingsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_unit_pricing_v1.py b/test/test_unit_pricing_v1.py new file mode 100644 index 00000000..90f907c9 --- /dev/null +++ b/test/test_unit_pricing_v1.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.unit_pricing_v1 import UnitPricingV1 + + +class TestUnitPricingV1(unittest.TestCase): + """UnitPricingV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UnitPricingV1: + """Test UnitPricingV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UnitPricingV1` + """ + model = UnitPricingV1() + if include_optional: + return UnitPricingV1( + cpu = 0.031611, + ram = 0.004237, + storage = 0.00005479452, + spot_cpu = 1.337, + spot_ram = 1.337 + ) + else: + return UnitPricingV1( + cpu = 0.031611, + ram = 0.004237, + storage = 0.00005479452, + ) + """ + + def testUnitPricingV1(self): + """Test UnitPricingV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_access_key_request_v1.py b/test/test_update_access_key_request_v1.py new file mode 100644 index 00000000..482fe565 --- /dev/null +++ b/test/test_update_access_key_request_v1.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_access_key_request_v1 import UpdateAccessKeyRequestV1 + + +class TestUpdateAccessKeyRequestV1(unittest.TestCase): + """UpdateAccessKeyRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateAccessKeyRequestV1: + """Test UpdateAccessKeyRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateAccessKeyRequestV1` + """ + model = UpdateAccessKeyRequestV1() + if include_optional: + return UpdateAccessKeyRequestV1( + agent_limit = 100, + agent_reservation = 5, + team_id = 13, + is_enabled = True, + metadata = { + 'key' : 'metaKey1:metaValue1' + } + ) + else: + return UpdateAccessKeyRequestV1( + is_enabled = True, + ) + """ + + def testUpdateAccessKeyRequestV1(self): + """Test UpdateAccessKeyRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_amazon_sqs_integration_request.py b/test/test_update_amazon_sqs_integration_request.py new file mode 100644 index 00000000..99d27d43 --- /dev/null +++ b/test/test_update_amazon_sqs_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_amazon_sqs_integration_request import UpdateAmazonSqsIntegrationRequest + + +class TestUpdateAmazonSqsIntegrationRequest(unittest.TestCase): + """UpdateAmazonSqsIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateAmazonSqsIntegrationRequest: + """Test UpdateAmazonSqsIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateAmazonSqsIntegrationRequest` + """ + model = UpdateAmazonSqsIntegrationRequest() + if include_optional: + return UpdateAmazonSqsIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateAmazonSqsIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateAmazonSqsIntegrationRequest(self): + """Test UpdateAmazonSqsIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_chronicle_integration_conn_info.py b/test/test_update_chronicle_integration_conn_info.py new file mode 100644 index 00000000..f3f547dc --- /dev/null +++ b/test/test_update_chronicle_integration_conn_info.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_chronicle_integration_conn_info import UpdateChronicleIntegrationConnInfo + + +class TestUpdateChronicleIntegrationConnInfo(unittest.TestCase): + """UpdateChronicleIntegrationConnInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateChronicleIntegrationConnInfo: + """Test UpdateChronicleIntegrationConnInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateChronicleIntegrationConnInfo` + """ + model = UpdateChronicleIntegrationConnInfo() + if include_optional: + return UpdateChronicleIntegrationConnInfo( + region = 'us', + api_key = 'jeequiedahtaiSh2uM0chigheekaego8' + ) + else: + return UpdateChronicleIntegrationConnInfo( + ) + """ + + def testUpdateChronicleIntegrationConnInfo(self): + """Test UpdateChronicleIntegrationConnInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_chronicle_integration_conn_info_v2.py b/test/test_update_chronicle_integration_conn_info_v2.py new file mode 100644 index 00000000..dfb835a7 --- /dev/null +++ b/test/test_update_chronicle_integration_conn_info_v2.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_chronicle_integration_conn_info_v2 import UpdateChronicleIntegrationConnInfoV2 + + +class TestUpdateChronicleIntegrationConnInfoV2(unittest.TestCase): + """UpdateChronicleIntegrationConnInfoV2 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateChronicleIntegrationConnInfoV2: + """Test UpdateChronicleIntegrationConnInfoV2 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateChronicleIntegrationConnInfoV2` + """ + model = UpdateChronicleIntegrationConnInfoV2() + if include_optional: + return UpdateChronicleIntegrationConnInfoV2( + region = 'us', + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + credentials_o_auth2 = '{ "type": "service_account", "project_id": "malachite", "client_id": "1234567", }' + ) + else: + return UpdateChronicleIntegrationConnInfoV2( + chronicle_customer_id = '12345678-1234-1234-1234-123456789012', + namespace = 'test', + ) + """ + + def testUpdateChronicleIntegrationConnInfoV2(self): + """Test UpdateChronicleIntegrationConnInfoV2""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_chronicle_integration_request.py b/test/test_update_chronicle_integration_request.py new file mode 100644 index 00000000..15b98a93 --- /dev/null +++ b/test/test_update_chronicle_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_chronicle_integration_request import UpdateChronicleIntegrationRequest + + +class TestUpdateChronicleIntegrationRequest(unittest.TestCase): + """UpdateChronicleIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateChronicleIntegrationRequest: + """Test UpdateChronicleIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateChronicleIntegrationRequest` + """ + model = UpdateChronicleIntegrationRequest() + if include_optional: + return UpdateChronicleIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateChronicleIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateChronicleIntegrationRequest(self): + """Test UpdateChronicleIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_custom_webhook_notification_channel_request_v1.py b/test/test_update_custom_webhook_notification_channel_request_v1.py new file mode 100644 index 00000000..bf2f7024 --- /dev/null +++ b/test/test_update_custom_webhook_notification_channel_request_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_custom_webhook_notification_channel_request_v1 import ( + UpdateCustomWebhookNotificationChannelRequestV1, +) + + +class TestUpdateCustomWebhookNotificationChannelRequestV1(unittest.TestCase): + """UpdateCustomWebhookNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateCustomWebhookNotificationChannelRequestV1: + """Test UpdateCustomWebhookNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateCustomWebhookNotificationChannelRequestV1` + """ + model = UpdateCustomWebhookNotificationChannelRequestV1() + if include_optional: + return UpdateCustomWebhookNotificationChannelRequestV1( + options = None + ) + else: + return UpdateCustomWebhookNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateCustomWebhookNotificationChannelRequestV1(self): + """Test UpdateCustomWebhookNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_elasticsearch_integration_request.py b/test/test_update_elasticsearch_integration_request.py new file mode 100644 index 00000000..c03e0d5a --- /dev/null +++ b/test/test_update_elasticsearch_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_elasticsearch_integration_request import UpdateElasticsearchIntegrationRequest + + +class TestUpdateElasticsearchIntegrationRequest(unittest.TestCase): + """UpdateElasticsearchIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateElasticsearchIntegrationRequest: + """Test UpdateElasticsearchIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateElasticsearchIntegrationRequest` + """ + model = UpdateElasticsearchIntegrationRequest() + if include_optional: + return UpdateElasticsearchIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateElasticsearchIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateElasticsearchIntegrationRequest(self): + """Test UpdateElasticsearchIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_elasticsearch_integration_request_all_of_connection_info.py b/test/test_update_elasticsearch_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..e8938978 --- /dev/null +++ b/test/test_update_elasticsearch_integration_request_all_of_connection_info.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_elasticsearch_integration_request_all_of_connection_info import ( + UpdateElasticsearchIntegrationRequestAllOfConnectionInfo, +) + + +class TestUpdateElasticsearchIntegrationRequestAllOfConnectionInfo(unittest.TestCase): + """UpdateElasticsearchIntegrationRequestAllOfConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateElasticsearchIntegrationRequestAllOfConnectionInfo: + """Test UpdateElasticsearchIntegrationRequestAllOfConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateElasticsearchIntegrationRequestAllOfConnectionInfo` + """ + model = UpdateElasticsearchIntegrationRequestAllOfConnectionInfo() + if include_optional: + return UpdateElasticsearchIntegrationRequestAllOfConnectionInfo( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + is_insecure = False, + auth = 'BASIC_AUTH', + format = 'KV_PAIRS', + secret = 'Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK' + ) + else: + return UpdateElasticsearchIntegrationRequestAllOfConnectionInfo( + endpoint = 'https://elastic.mydomain.com', + index = 'main', + ) + """ + + def testUpdateElasticsearchIntegrationRequestAllOfConnectionInfo(self): + """Test UpdateElasticsearchIntegrationRequestAllOfConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_email_notification_channel_request_v1.py b/test/test_update_email_notification_channel_request_v1.py new file mode 100644 index 00000000..92aaaec5 --- /dev/null +++ b/test/test_update_email_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_email_notification_channel_request_v1 import UpdateEmailNotificationChannelRequestV1 + + +class TestUpdateEmailNotificationChannelRequestV1(unittest.TestCase): + """UpdateEmailNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateEmailNotificationChannelRequestV1: + """Test UpdateEmailNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateEmailNotificationChannelRequestV1` + """ + model = UpdateEmailNotificationChannelRequestV1() + if include_optional: + return UpdateEmailNotificationChannelRequestV1( + options = None + ) + else: + return UpdateEmailNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateEmailNotificationChannelRequestV1(self): + """Test UpdateEmailNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_gchat_notification_channel_request_v1.py b/test/test_update_gchat_notification_channel_request_v1.py new file mode 100644 index 00000000..1986d4bf --- /dev/null +++ b/test/test_update_gchat_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_gchat_notification_channel_request_v1 import UpdateGchatNotificationChannelRequestV1 + + +class TestUpdateGchatNotificationChannelRequestV1(unittest.TestCase): + """UpdateGchatNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateGchatNotificationChannelRequestV1: + """Test UpdateGchatNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateGchatNotificationChannelRequestV1` + """ + model = UpdateGchatNotificationChannelRequestV1() + if include_optional: + return UpdateGchatNotificationChannelRequestV1( + options = None + ) + else: + return UpdateGchatNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateGchatNotificationChannelRequestV1(self): + """Test UpdateGchatNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_google_pub_sub_integration_request.py b/test/test_update_google_pub_sub_integration_request.py new file mode 100644 index 00000000..b6a5ba56 --- /dev/null +++ b/test/test_update_google_pub_sub_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_google_pub_sub_integration_request import UpdateGooglePubSubIntegrationRequest + + +class TestUpdateGooglePubSubIntegrationRequest(unittest.TestCase): + """UpdateGooglePubSubIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateGooglePubSubIntegrationRequest: + """Test UpdateGooglePubSubIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateGooglePubSubIntegrationRequest` + """ + model = UpdateGooglePubSubIntegrationRequest() + if include_optional: + return UpdateGooglePubSubIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateGooglePubSubIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateGooglePubSubIntegrationRequest(self): + """Test UpdateGooglePubSubIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_google_scc_integration_request.py b/test/test_update_google_scc_integration_request.py new file mode 100644 index 00000000..3354023f --- /dev/null +++ b/test/test_update_google_scc_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_google_scc_integration_request import UpdateGoogleSccIntegrationRequest + + +class TestUpdateGoogleSccIntegrationRequest(unittest.TestCase): + """UpdateGoogleSccIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateGoogleSccIntegrationRequest: + """Test UpdateGoogleSccIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateGoogleSccIntegrationRequest` + """ + model = UpdateGoogleSccIntegrationRequest() + if include_optional: + return UpdateGoogleSccIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateGoogleSccIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateGoogleSccIntegrationRequest(self): + """Test UpdateGoogleSccIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_group_mapping_request_v1.py b/test/test_update_group_mapping_request_v1.py new file mode 100644 index 00000000..09834cdb --- /dev/null +++ b/test/test_update_group_mapping_request_v1.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_group_mapping_request_v1 import UpdateGroupMappingRequestV1 + + +class TestUpdateGroupMappingRequestV1(unittest.TestCase): + """UpdateGroupMappingRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateGroupMappingRequestV1: + """Test UpdateGroupMappingRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateGroupMappingRequestV1` + """ + model = UpdateGroupMappingRequestV1() + if include_optional: + return UpdateGroupMappingRequestV1( + group_name = 'Admins_Mapped_Group', + standard_team_role = 'ROLE_TEAM_READ', + custom_team_role_id = 1, + is_admin = False, + team_map = sysdig_client.models.team_map.Team Map( + is_for_all_teams = False, + team_ids = [154,187], ), + weight = 2 + ) + else: + return UpdateGroupMappingRequestV1( + group_name = 'Admins_Mapped_Group', + is_admin = False, + team_map = sysdig_client.models.team_map.Team Map( + is_for_all_teams = False, + team_ids = [154,187], ), + weight = 2, + ) + """ + + def testUpdateGroupMappingRequestV1(self): + """Test UpdateGroupMappingRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_ibm_event_notifications_notification_channel_request_v1.py b/test/test_update_ibm_event_notifications_notification_channel_request_v1.py new file mode 100644 index 00000000..ffb66e34 --- /dev/null +++ b/test/test_update_ibm_event_notifications_notification_channel_request_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_ibm_event_notifications_notification_channel_request_v1 import ( + UpdateIbmEventNotificationsNotificationChannelRequestV1, +) + + +class TestUpdateIbmEventNotificationsNotificationChannelRequestV1(unittest.TestCase): + """UpdateIbmEventNotificationsNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateIbmEventNotificationsNotificationChannelRequestV1: + """Test UpdateIbmEventNotificationsNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateIbmEventNotificationsNotificationChannelRequestV1` + """ + model = UpdateIbmEventNotificationsNotificationChannelRequestV1() + if include_optional: + return UpdateIbmEventNotificationsNotificationChannelRequestV1( + options = None + ) + else: + return UpdateIbmEventNotificationsNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateIbmEventNotificationsNotificationChannelRequestV1(self): + """Test UpdateIbmEventNotificationsNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_inhibition_rule_request_v1.py b/test/test_update_inhibition_rule_request_v1.py new file mode 100644 index 00000000..a08de65f --- /dev/null +++ b/test/test_update_inhibition_rule_request_v1.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_inhibition_rule_request_v1 import UpdateInhibitionRuleRequestV1 + + +class TestUpdateInhibitionRuleRequestV1(unittest.TestCase): + """UpdateInhibitionRuleRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateInhibitionRuleRequestV1: + """Test UpdateInhibitionRuleRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateInhibitionRuleRequestV1` + """ + model = UpdateInhibitionRuleRequestV1() + if include_optional: + return UpdateInhibitionRuleRequestV1( + is_enabled = False, + name = 'this is an example name', + description = 'this is an example description', + source_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + target_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + equal = [ + 'myLabel' + ], + version = 1 + ) + else: + return UpdateInhibitionRuleRequestV1( + source_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + target_matchers = [ + sysdig_client.models.label_matcher_v1.Label matcher v1( + label_name = 'myLabel', + operator = 'EQUALS', + value = 'regexExample[s]?', ) + ], + version = 1, + ) + """ + + def testUpdateInhibitionRuleRequestV1(self): + """Test UpdateInhibitionRuleRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_integration_request.py b/test/test_update_integration_request.py new file mode 100644 index 00000000..c5ade235 --- /dev/null +++ b/test/test_update_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_integration_request import UpdateIntegrationRequest + + +class TestUpdateIntegrationRequest(unittest.TestCase): + """UpdateIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateIntegrationRequest: + """Test UpdateIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateIntegrationRequest` + """ + model = UpdateIntegrationRequest() + if include_optional: + return UpdateIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateIntegrationRequest(self): + """Test UpdateIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_integration_request_v1.py b/test/test_update_integration_request_v1.py new file mode 100644 index 00000000..6fb4845d --- /dev/null +++ b/test/test_update_integration_request_v1.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_integration_request_v1 import UpdateIntegrationRequestV1 + + +class TestUpdateIntegrationRequestV1(unittest.TestCase): + """UpdateIntegrationRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateIntegrationRequestV1: + """Test UpdateIntegrationRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateIntegrationRequestV1` + """ + model = UpdateIntegrationRequestV1() + if include_optional: + return UpdateIntegrationRequestV1( + name = 'name', + is_enabled = False, + is_all_teams = False, + team_ids = [ + 1 + ], + jira_url = 'https://atlassian-url.com', + jira_email = 'jira.user@email.com', + jira_access_token = 'jira-access-token', + jira_assignee = '5b10ac8d82e05b22cc7d4ef5', + jira_labels = [ + 'label' + ], + parent_issue_type_id = 1, + child_issue_type_id = 1 + ) + else: + return UpdateIntegrationRequestV1( + name = 'name', + is_enabled = False, + is_all_teams = False, + team_ids = [ + 1 + ], + jira_url = 'https://atlassian-url.com', + jira_email = 'jira.user@email.com', + jira_access_token = 'jira-access-token', + jira_assignee = '5b10ac8d82e05b22cc7d4ef5', + jira_labels = [ + 'label' + ], + parent_issue_type_id = 1, + child_issue_type_id = 1, + ) + """ + + def testUpdateIntegrationRequestV1(self): + """Test UpdateIntegrationRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_ip_filter_v1.py b/test/test_update_ip_filter_v1.py new file mode 100644 index 00000000..3f624d2f --- /dev/null +++ b/test/test_update_ip_filter_v1.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_ip_filter_v1 import UpdateIpFilterV1 + + +class TestUpdateIpFilterV1(unittest.TestCase): + """UpdateIpFilterV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateIpFilterV1: + """Test UpdateIpFilterV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateIpFilterV1` + """ + model = UpdateIpFilterV1() + if include_optional: + return UpdateIpFilterV1( + ip_range = '192.168.0.0/24', + note = 'London Office', + is_enabled = True + ) + else: + return UpdateIpFilterV1( + ip_range = '192.168.0.0/24', + note = 'London Office', + is_enabled = True, + ) + """ + + def testUpdateIpFilterV1(self): + """Test UpdateIpFilterV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_issue_type_request_v1.py b/test/test_update_issue_type_request_v1.py new file mode 100644 index 00000000..100efeea --- /dev/null +++ b/test/test_update_issue_type_request_v1.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_issue_type_request_v1 import UpdateIssueTypeRequestV1 + + +class TestUpdateIssueTypeRequestV1(unittest.TestCase): + """UpdateIssueTypeRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateIssueTypeRequestV1: + """Test UpdateIssueTypeRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateIssueTypeRequestV1` + """ + model = UpdateIssueTypeRequestV1() + if include_optional: + return UpdateIssueTypeRequestV1( + jira_open_status_id = '1000', + jira_in_progress_status_id = '1001', + jira_closed_status_id = '1002', + custom_field_ids = [ + 'custom-field-id' + ] + ) + else: + return UpdateIssueTypeRequestV1( + jira_open_status_id = '1000', + jira_in_progress_status_id = '1001', + jira_closed_status_id = '1002', + custom_field_ids = [ + 'custom-field-id' + ], + ) + """ + + def testUpdateIssueTypeRequestV1(self): + """Test UpdateIssueTypeRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_kafka_integration_request.py b/test/test_update_kafka_integration_request.py new file mode 100644 index 00000000..b867b615 --- /dev/null +++ b/test/test_update_kafka_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_kafka_integration_request import UpdateKafkaIntegrationRequest + + +class TestUpdateKafkaIntegrationRequest(unittest.TestCase): + """UpdateKafkaIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateKafkaIntegrationRequest: + """Test UpdateKafkaIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateKafkaIntegrationRequest` + """ + model = UpdateKafkaIntegrationRequest() + if include_optional: + return UpdateKafkaIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateKafkaIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateKafkaIntegrationRequest(self): + """Test UpdateKafkaIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_kafka_integration_request_all_of_connection_info.py b/test/test_update_kafka_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..86706ebb --- /dev/null +++ b/test/test_update_kafka_integration_request_all_of_connection_info.py @@ -0,0 +1,77 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_kafka_integration_request_all_of_connection_info import ( + UpdateKafkaIntegrationRequestAllOfConnectionInfo, +) + + +class TestUpdateKafkaIntegrationRequestAllOfConnectionInfo(unittest.TestCase): + """UpdateKafkaIntegrationRequestAllOfConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateKafkaIntegrationRequestAllOfConnectionInfo: + """Test UpdateKafkaIntegrationRequestAllOfConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateKafkaIntegrationRequestAllOfConnectionInfo` + """ + model = UpdateKafkaIntegrationRequestAllOfConnectionInfo() + if include_optional: + return UpdateKafkaIntegrationRequestAllOfConnectionInfo( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + balancer = 'murmur2', + compression = 'gzip', + is_tls_enabled = True, + is_insecure = False, + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log', + keytab = 'BQIAAAA3AAEAClNZU0RJRy5DT00ABnN5c2RpZwAAAAFlhdTkAQAXABCIRvfq7o+xF60Gvdgwt1hsAAAAAQ==' + ) + else: + return UpdateKafkaIntegrationRequestAllOfConnectionInfo( + brokers = [ + 'kafka.mydomain.com:9091' + ], + topic = 'mytopic', + auth = 'gssapi', + principal = 'myprincipal', + realm = 'myrealm', + service = 'myservice', + krb5 = '[libdefaults] default_realm = SYSDIG.COM default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc dns_lookup_kdc = true dns_lookup_realm = false [realms] SYSDIG.COM = { kdc = kerberos.sysdig.com kdc = kerberos-1.sysdig.com kdc = kerberos-2.sysdig.com:750 admin_server = kerberos.sysdig.com master_kdc = kerberos.sysdig.com default_domain = sysdig.com } [domain_realm] .sysdig.com = SYSDIG.COM sysdig.com = SYSDIG.COM [logging] kdc = SYSLOG:INFO admin_server = FILE=/var/kadm5.log', + ) + """ + + def testUpdateKafkaIntegrationRequestAllOfConnectionInfo(self): + """Test UpdateKafkaIntegrationRequestAllOfConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_mcm_integration_request.py b/test/test_update_mcm_integration_request.py new file mode 100644 index 00000000..5d441098 --- /dev/null +++ b/test/test_update_mcm_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_mcm_integration_request import UpdateMcmIntegrationRequest + + +class TestUpdateMcmIntegrationRequest(unittest.TestCase): + """UpdateMcmIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateMcmIntegrationRequest: + """Test UpdateMcmIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateMcmIntegrationRequest` + """ + model = UpdateMcmIntegrationRequest() + if include_optional: + return UpdateMcmIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateMcmIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateMcmIntegrationRequest(self): + """Test UpdateMcmIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_microsoft_sentinel_integration_request.py b/test/test_update_microsoft_sentinel_integration_request.py new file mode 100644 index 00000000..58467fd6 --- /dev/null +++ b/test/test_update_microsoft_sentinel_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_microsoft_sentinel_integration_request import UpdateMicrosoftSentinelIntegrationRequest + + +class TestUpdateMicrosoftSentinelIntegrationRequest(unittest.TestCase): + """UpdateMicrosoftSentinelIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateMicrosoftSentinelIntegrationRequest: + """Test UpdateMicrosoftSentinelIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateMicrosoftSentinelIntegrationRequest` + """ + model = UpdateMicrosoftSentinelIntegrationRequest() + if include_optional: + return UpdateMicrosoftSentinelIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateMicrosoftSentinelIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateMicrosoftSentinelIntegrationRequest(self): + """Test UpdateMicrosoftSentinelIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_ms_teams_notification_channel_request_v1.py b/test/test_update_ms_teams_notification_channel_request_v1.py new file mode 100644 index 00000000..90616fff --- /dev/null +++ b/test/test_update_ms_teams_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_ms_teams_notification_channel_request_v1 import UpdateMsTeamsNotificationChannelRequestV1 + + +class TestUpdateMsTeamsNotificationChannelRequestV1(unittest.TestCase): + """UpdateMsTeamsNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateMsTeamsNotificationChannelRequestV1: + """Test UpdateMsTeamsNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateMsTeamsNotificationChannelRequestV1` + """ + model = UpdateMsTeamsNotificationChannelRequestV1() + if include_optional: + return UpdateMsTeamsNotificationChannelRequestV1( + options = None + ) + else: + return UpdateMsTeamsNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateMsTeamsNotificationChannelRequestV1(self): + """Test UpdateMsTeamsNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_notification_channel_request_v1.py b/test/test_update_notification_channel_request_v1.py new file mode 100644 index 00000000..d64a8843 --- /dev/null +++ b/test/test_update_notification_channel_request_v1.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_notification_channel_request_v1 import UpdateNotificationChannelRequestV1 + + +class TestUpdateNotificationChannelRequestV1(unittest.TestCase): + """UpdateNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateNotificationChannelRequestV1: + """Test UpdateNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateNotificationChannelRequestV1` + """ + model = UpdateNotificationChannelRequestV1() + if include_optional: + return UpdateNotificationChannelRequestV1( + team_id = 13, + is_enabled = False, + name = 'Sample Notification Channel Name', + has_test_notification_enabled = False, + type = 'EMAIL', + version = 1 + ) + else: + return UpdateNotificationChannelRequestV1( + name = 'Sample Notification Channel Name', + type = 'EMAIL', + ) + """ + + def testUpdateNotificationChannelRequestV1(self): + """Test UpdateNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_opsgenie_notification_channel_request_v1.py b/test/test_update_opsgenie_notification_channel_request_v1.py new file mode 100644 index 00000000..73d64294 --- /dev/null +++ b/test/test_update_opsgenie_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_opsgenie_notification_channel_request_v1 import UpdateOpsgenieNotificationChannelRequestV1 + + +class TestUpdateOpsgenieNotificationChannelRequestV1(unittest.TestCase): + """UpdateOpsgenieNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateOpsgenieNotificationChannelRequestV1: + """Test UpdateOpsgenieNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateOpsgenieNotificationChannelRequestV1` + """ + model = UpdateOpsgenieNotificationChannelRequestV1() + if include_optional: + return UpdateOpsgenieNotificationChannelRequestV1( + options = None + ) + else: + return UpdateOpsgenieNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateOpsgenieNotificationChannelRequestV1(self): + """Test UpdateOpsgenieNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_pager_duty_notification_channel_request_v1.py b/test/test_update_pager_duty_notification_channel_request_v1.py new file mode 100644 index 00000000..77ca7da8 --- /dev/null +++ b/test/test_update_pager_duty_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_pager_duty_notification_channel_request_v1 import UpdatePagerDutyNotificationChannelRequestV1 + + +class TestUpdatePagerDutyNotificationChannelRequestV1(unittest.TestCase): + """UpdatePagerDutyNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdatePagerDutyNotificationChannelRequestV1: + """Test UpdatePagerDutyNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdatePagerDutyNotificationChannelRequestV1` + """ + model = UpdatePagerDutyNotificationChannelRequestV1() + if include_optional: + return UpdatePagerDutyNotificationChannelRequestV1( + options = None + ) + else: + return UpdatePagerDutyNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdatePagerDutyNotificationChannelRequestV1(self): + """Test UpdatePagerDutyNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_pricing_request_v1.py b/test/test_update_pricing_request_v1.py new file mode 100644 index 00000000..2a3152bd --- /dev/null +++ b/test/test_update_pricing_request_v1.py @@ -0,0 +1,73 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_pricing_request_v1 import UpdatePricingRequestV1 + + +class TestUpdatePricingRequestV1(unittest.TestCase): + """UpdatePricingRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdatePricingRequestV1: + """Test UpdatePricingRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdatePricingRequestV1` + """ + model = UpdatePricingRequestV1() + if include_optional: + return UpdatePricingRequestV1( + type = 'CLUSTER', + cluster_name = 'My pricing', + name = 'My pricing', + unit_pricing = sysdig_client.models.unit_pricing_v1.Unit Pricing V1( + cpu = 0.031611, + ram = 0.004237, + storage = 0.00005479452, + spot_cpu = 1.337, + spot_ram = 1.337, ), + spot_label = 'cost-advisor-spot-node', + spot_label_value = 'true', + version = 1 + ) + else: + return UpdatePricingRequestV1( + type = 'CLUSTER', + name = 'My pricing', + unit_pricing = sysdig_client.models.unit_pricing_v1.Unit Pricing V1( + cpu = 0.031611, + ram = 0.004237, + storage = 0.00005479452, + spot_cpu = 1.337, + spot_ram = 1.337, ), + version = 1, + ) + """ + + def testUpdatePricingRequestV1(self): + """Test UpdatePricingRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_prometheus_alert_manager_notification_channel_request_v1.py b/test/test_update_prometheus_alert_manager_notification_channel_request_v1.py new file mode 100644 index 00000000..1eb80726 --- /dev/null +++ b/test/test_update_prometheus_alert_manager_notification_channel_request_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_prometheus_alert_manager_notification_channel_request_v1 import ( + UpdatePrometheusAlertManagerNotificationChannelRequestV1, +) + + +class TestUpdatePrometheusAlertManagerNotificationChannelRequestV1(unittest.TestCase): + """UpdatePrometheusAlertManagerNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdatePrometheusAlertManagerNotificationChannelRequestV1: + """Test UpdatePrometheusAlertManagerNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdatePrometheusAlertManagerNotificationChannelRequestV1` + """ + model = UpdatePrometheusAlertManagerNotificationChannelRequestV1() + if include_optional: + return UpdatePrometheusAlertManagerNotificationChannelRequestV1( + options = None + ) + else: + return UpdatePrometheusAlertManagerNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdatePrometheusAlertManagerNotificationChannelRequestV1(self): + """Test UpdatePrometheusAlertManagerNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_qradar_integration_request.py b/test/test_update_qradar_integration_request.py new file mode 100644 index 00000000..01fc4a19 --- /dev/null +++ b/test/test_update_qradar_integration_request.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_qradar_integration_request import UpdateQradarIntegrationRequest + + +class TestUpdateQradarIntegrationRequest(unittest.TestCase): + """UpdateQradarIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateQradarIntegrationRequest: + """Test UpdateQradarIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateQradarIntegrationRequest` + """ + model = UpdateQradarIntegrationRequest() + if include_optional: + return UpdateQradarIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = sysdig_client.models.ibm_q_radar.IBM QRadar( + address = 'qradar.mydomain.com', + port = 514, + is_insecure = False, + is_tls = True, ) + ) + else: + return UpdateQradarIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = sysdig_client.models.ibm_q_radar.IBM QRadar( + address = 'qradar.mydomain.com', + port = 514, + is_insecure = False, + is_tls = True, ), + ) + """ + + def testUpdateQradarIntegrationRequest(self): + """Test UpdateQradarIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_risk_accepted.py b/test/test_update_risk_accepted.py new file mode 100644 index 00000000..d757a072 --- /dev/null +++ b/test/test_update_risk_accepted.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_risk_accepted import UpdateRiskAccepted + + +class TestUpdateRiskAccepted(unittest.TestCase): + """UpdateRiskAccepted unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateRiskAccepted: + """Test UpdateRiskAccepted + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateRiskAccepted` + """ + model = UpdateRiskAccepted() + if include_optional: + return UpdateRiskAccepted( + expiration_date = '2024-02-27', + reason = 'RiskTransferred', + description = 'vulnerability cannot be removed manually' + ) + else: + return UpdateRiskAccepted( + ) + """ + + def testUpdateRiskAccepted(self): + """Test UpdateRiskAccepted""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_service_accounts_notification_settings_request_v1.py b/test/test_update_service_accounts_notification_settings_request_v1.py new file mode 100644 index 00000000..ba6940e8 --- /dev/null +++ b/test/test_update_service_accounts_notification_settings_request_v1.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_service_accounts_notification_settings_request_v1 import ( + UpdateServiceAccountsNotificationSettingsRequestV1, +) + + +class TestUpdateServiceAccountsNotificationSettingsRequestV1(unittest.TestCase): + """UpdateServiceAccountsNotificationSettingsRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateServiceAccountsNotificationSettingsRequestV1: + """Test UpdateServiceAccountsNotificationSettingsRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateServiceAccountsNotificationSettingsRequestV1` + """ + model = UpdateServiceAccountsNotificationSettingsRequestV1() + if include_optional: + return UpdateServiceAccountsNotificationSettingsRequestV1( + is_enabled = True, + notification_channel_ids = [ + null + ], + days_before_expiry = [ + 3 + ] + ) + else: + return UpdateServiceAccountsNotificationSettingsRequestV1( + is_enabled = True, + notification_channel_ids = [ + null + ], + days_before_expiry = [ + 3 + ], + ) + """ + + def testUpdateServiceAccountsNotificationSettingsRequestV1(self): + """Test UpdateServiceAccountsNotificationSettingsRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_slack_notification_channel_request_v1.py b/test/test_update_slack_notification_channel_request_v1.py new file mode 100644 index 00000000..03c4e5dd --- /dev/null +++ b/test/test_update_slack_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_slack_notification_channel_request_v1 import UpdateSlackNotificationChannelRequestV1 + + +class TestUpdateSlackNotificationChannelRequestV1(unittest.TestCase): + """UpdateSlackNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateSlackNotificationChannelRequestV1: + """Test UpdateSlackNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateSlackNotificationChannelRequestV1` + """ + model = UpdateSlackNotificationChannelRequestV1() + if include_optional: + return UpdateSlackNotificationChannelRequestV1( + options = None + ) + else: + return UpdateSlackNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateSlackNotificationChannelRequestV1(self): + """Test UpdateSlackNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_sns_notification_channel_request_v1.py b/test/test_update_sns_notification_channel_request_v1.py new file mode 100644 index 00000000..474b80cf --- /dev/null +++ b/test/test_update_sns_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_sns_notification_channel_request_v1 import UpdateSnsNotificationChannelRequestV1 + + +class TestUpdateSnsNotificationChannelRequestV1(unittest.TestCase): + """UpdateSnsNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateSnsNotificationChannelRequestV1: + """Test UpdateSnsNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateSnsNotificationChannelRequestV1` + """ + model = UpdateSnsNotificationChannelRequestV1() + if include_optional: + return UpdateSnsNotificationChannelRequestV1( + options = None + ) + else: + return UpdateSnsNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateSnsNotificationChannelRequestV1(self): + """Test UpdateSnsNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_splunk_integration_request.py b/test/test_update_splunk_integration_request.py new file mode 100644 index 00000000..0cfd237d --- /dev/null +++ b/test/test_update_splunk_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_splunk_integration_request import UpdateSplunkIntegrationRequest + + +class TestUpdateSplunkIntegrationRequest(unittest.TestCase): + """UpdateSplunkIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateSplunkIntegrationRequest: + """Test UpdateSplunkIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateSplunkIntegrationRequest` + """ + model = UpdateSplunkIntegrationRequest() + if include_optional: + return UpdateSplunkIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateSplunkIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateSplunkIntegrationRequest(self): + """Test UpdateSplunkIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_sso_settings_request_v1.py b/test/test_update_sso_settings_request_v1.py new file mode 100644 index 00000000..cb134b97 --- /dev/null +++ b/test/test_update_sso_settings_request_v1.py @@ -0,0 +1,71 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_sso_settings_request_v1 import UpdateSsoSettingsRequestV1 + + +class TestUpdateSsoSettingsRequestV1(unittest.TestCase): + """UpdateSsoSettingsRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateSsoSettingsRequestV1: + """Test UpdateSsoSettingsRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateSsoSettingsRequestV1` + """ + model = UpdateSsoSettingsRequestV1() + if include_optional: + return UpdateSsoSettingsRequestV1( + product = 'secure', + is_active = True, + create_user_on_login = True, + is_password_login_enabled = True, + is_single_logout_enabled = True, + is_group_mapping_enabled = True, + group_mapping_attribute_name = 'groups', + version = 1, + config = sysdig_client.models.sso_settings_update_request_base_v1.SSO Settings Update Request Base V1( + type = 'SAML', ) + ) + else: + return UpdateSsoSettingsRequestV1( + product = 'secure', + is_active = True, + create_user_on_login = True, + is_password_login_enabled = True, + is_single_logout_enabled = True, + is_group_mapping_enabled = True, + version = 1, + config = sysdig_client.models.sso_settings_update_request_base_v1.SSO Settings Update Request Base V1( + type = 'SAML', ), + ) + """ + + def testUpdateSsoSettingsRequestV1(self): + """Test UpdateSsoSettingsRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_syslog_integration_request.py b/test/test_update_syslog_integration_request.py new file mode 100644 index 00000000..d434a96b --- /dev/null +++ b/test/test_update_syslog_integration_request.py @@ -0,0 +1,74 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_syslog_integration_request import UpdateSyslogIntegrationRequest + + +class TestUpdateSyslogIntegrationRequest(unittest.TestCase): + """UpdateSyslogIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateSyslogIntegrationRequest: + """Test UpdateSyslogIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateSyslogIntegrationRequest` + """ + model = UpdateSyslogIntegrationRequest() + if include_optional: + return UpdateSyslogIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = sysdig_client.models.syslog.Syslog( + address = 'syslog.mydomain.com', + port = 514, + message_format = 'RFC_5424', + type = 'tcp', + is_insecure = False, + formatter = 'JSON', + certificate_id = 1, ) + ) + else: + return UpdateSyslogIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = sysdig_client.models.syslog.Syslog( + address = 'syslog.mydomain.com', + port = 514, + message_format = 'RFC_5424', + type = 'tcp', + is_insecure = False, + formatter = 'JSON', + certificate_id = 1, ), + ) + """ + + def testUpdateSyslogIntegrationRequest(self): + """Test UpdateSyslogIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_team_email_notification_channel_request_v1.py b/test/test_update_team_email_notification_channel_request_v1.py new file mode 100644 index 00000000..420c17f5 --- /dev/null +++ b/test/test_update_team_email_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_team_email_notification_channel_request_v1 import UpdateTeamEmailNotificationChannelRequestV1 + + +class TestUpdateTeamEmailNotificationChannelRequestV1(unittest.TestCase): + """UpdateTeamEmailNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateTeamEmailNotificationChannelRequestV1: + """Test UpdateTeamEmailNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateTeamEmailNotificationChannelRequestV1` + """ + model = UpdateTeamEmailNotificationChannelRequestV1() + if include_optional: + return UpdateTeamEmailNotificationChannelRequestV1( + options = None + ) + else: + return UpdateTeamEmailNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateTeamEmailNotificationChannelRequestV1(self): + """Test UpdateTeamEmailNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_team_request_v1.py b/test/test_update_team_request_v1.py new file mode 100644 index 00000000..b24723c5 --- /dev/null +++ b/test/test_update_team_request_v1.py @@ -0,0 +1,99 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_team_request_v1 import UpdateTeamRequestV1 + + +class TestUpdateTeamRequestV1(unittest.TestCase): + """UpdateTeamRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateTeamRequestV1: + """Test UpdateTeamRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateTeamRequestV1` + """ + model = UpdateTeamRequestV1() + if include_optional: + return UpdateTeamRequestV1( + version = 1, + name = 'User Team', + description = 'User Team description', + is_default_team = False, + standard_team_role = 'ROLE_TEAM_READ', + custom_team_role_id = 1, + ui_settings = sysdig_client.models.ui_settings.UiSettings( + entry_point = sysdig_client.models.entry_point.Entry Point( + module = 'Alerts', + selection = '2231245', ), + theme = '#112233', ), + is_all_zones = False, + zone_ids = [ + 1 + ], + scopes = [ + sysdig_client.models.scope.Scope( + type = 'PROMETHEUS_REMOTE_WRITE', + expression = 'kubernetes.cluster.name in ("test-env")', ) + ], + additional_team_permissions = sysdig_client.models.additional_team_permissions.Additional Team Permissions( + has_sysdig_captures = False, + has_infrastructure_events = False, + has_aws_data = False, + has_rapid_response = False, + has_agent_cli = False, + has_beacon_metrics = False, ) + ) + else: + return UpdateTeamRequestV1( + version = 1, + name = 'User Team', + is_default_team = False, + ui_settings = sysdig_client.models.ui_settings.UiSettings( + entry_point = sysdig_client.models.entry_point.Entry Point( + module = 'Alerts', + selection = '2231245', ), + theme = '#112233', ), + scopes = [ + sysdig_client.models.scope.Scope( + type = 'PROMETHEUS_REMOTE_WRITE', + expression = 'kubernetes.cluster.name in ("test-env")', ) + ], + additional_team_permissions = sysdig_client.models.additional_team_permissions.Additional Team Permissions( + has_sysdig_captures = False, + has_infrastructure_events = False, + has_aws_data = False, + has_rapid_response = False, + has_agent_cli = False, + has_beacon_metrics = False, ), + ) + """ + + def testUpdateTeamRequestV1(self): + """Test UpdateTeamRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_user_deactivation_configuration_request_v1.py b/test/test_update_user_deactivation_configuration_request_v1.py new file mode 100644 index 00000000..05e8d598 --- /dev/null +++ b/test/test_update_user_deactivation_configuration_request_v1.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_user_deactivation_configuration_request_v1 import UpdateUserDeactivationConfigurationRequestV1 + + +class TestUpdateUserDeactivationConfigurationRequestV1(unittest.TestCase): + """UpdateUserDeactivationConfigurationRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateUserDeactivationConfigurationRequestV1: + """Test UpdateUserDeactivationConfigurationRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateUserDeactivationConfigurationRequestV1` + """ + model = UpdateUserDeactivationConfigurationRequestV1() + if include_optional: + return UpdateUserDeactivationConfigurationRequestV1( + is_enabled = False, + number_days_before_deactivation = 90 + ) + else: + return UpdateUserDeactivationConfigurationRequestV1( + is_enabled = False, + number_days_before_deactivation = 90, + ) + """ + + def testUpdateUserDeactivationConfigurationRequestV1(self): + """Test UpdateUserDeactivationConfigurationRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_user_request_v1.py b/test/test_update_user_request_v1.py new file mode 100644 index 00000000..b17cd307 --- /dev/null +++ b/test/test_update_user_request_v1.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_user_request_v1 import UpdateUserRequestV1 + + +class TestUpdateUserRequestV1(unittest.TestCase): + """UpdateUserRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateUserRequestV1: + """Test UpdateUserRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateUserRequestV1` + """ + model = UpdateUserRequestV1() + if include_optional: + return UpdateUserRequestV1( + first_name = 'john', + last_name = 'doe', + is_admin = False, + version = 1 + ) + else: + return UpdateUserRequestV1( + version = 1, + ) + """ + + def testUpdateUserRequestV1(self): + """Test UpdateUserRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_victor_ops_notification_channel_request_v1.py b/test/test_update_victor_ops_notification_channel_request_v1.py new file mode 100644 index 00000000..5092bc60 --- /dev/null +++ b/test/test_update_victor_ops_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_victor_ops_notification_channel_request_v1 import UpdateVictorOpsNotificationChannelRequestV1 + + +class TestUpdateVictorOpsNotificationChannelRequestV1(unittest.TestCase): + """UpdateVictorOpsNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateVictorOpsNotificationChannelRequestV1: + """Test UpdateVictorOpsNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateVictorOpsNotificationChannelRequestV1` + """ + model = UpdateVictorOpsNotificationChannelRequestV1() + if include_optional: + return UpdateVictorOpsNotificationChannelRequestV1( + options = None + ) + else: + return UpdateVictorOpsNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateVictorOpsNotificationChannelRequestV1(self): + """Test UpdateVictorOpsNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_webhook_integration_request.py b/test/test_update_webhook_integration_request.py new file mode 100644 index 00000000..73f6c8d3 --- /dev/null +++ b/test/test_update_webhook_integration_request.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_webhook_integration_request import UpdateWebhookIntegrationRequest + + +class TestUpdateWebhookIntegrationRequest(unittest.TestCase): + """UpdateWebhookIntegrationRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateWebhookIntegrationRequest: + """Test UpdateWebhookIntegrationRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateWebhookIntegrationRequest` + """ + model = UpdateWebhookIntegrationRequest() + if include_optional: + return UpdateWebhookIntegrationRequest( + name = 'name', + is_enabled = True, + type = 'SYSLOG', + channels = [SECURE_EVENTS_POLICIES, ACTIVITY_AUDIT], + connection_info = None + ) + else: + return UpdateWebhookIntegrationRequest( + name = 'name', + type = 'SYSLOG', + connection_info = None, + ) + """ + + def testUpdateWebhookIntegrationRequest(self): + """Test UpdateWebhookIntegrationRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_webhook_integration_request_all_of_connection_info.py b/test/test_update_webhook_integration_request_all_of_connection_info.py new file mode 100644 index 00000000..ad8eef52 --- /dev/null +++ b/test/test_update_webhook_integration_request_all_of_connection_info.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_webhook_integration_request_all_of_connection_info import ( + UpdateWebhookIntegrationRequestAllOfConnectionInfo, +) + + +class TestUpdateWebhookIntegrationRequestAllOfConnectionInfo(unittest.TestCase): + """UpdateWebhookIntegrationRequestAllOfConnectionInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateWebhookIntegrationRequestAllOfConnectionInfo: + """Test UpdateWebhookIntegrationRequestAllOfConnectionInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateWebhookIntegrationRequestAllOfConnectionInfo` + """ + model = UpdateWebhookIntegrationRequestAllOfConnectionInfo() + if include_optional: + return UpdateWebhookIntegrationRequestAllOfConnectionInfo( + endpoint = 'https://endpoint.mydomain.com', + is_insecure = False, + headers = [ + sysdig_client.models.key_value_object_representation.Key-value object representation( + key = 'mykey', + value = 'myvalue', ) + ], + output = 'json', + timestamp_format = 'nanoseconds', + auth = 'BASIC_AUTH', + certificate_id = 1, + secret = 'eiMaimiYohrahbaeS6iaNgo8iu' + ) + else: + return UpdateWebhookIntegrationRequestAllOfConnectionInfo( + endpoint = 'https://endpoint.mydomain.com', + ) + """ + + def testUpdateWebhookIntegrationRequestAllOfConnectionInfo(self): + """Test UpdateWebhookIntegrationRequestAllOfConnectionInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_update_webhook_notification_channel_request_v1.py b/test/test_update_webhook_notification_channel_request_v1.py new file mode 100644 index 00000000..3b9aa2f6 --- /dev/null +++ b/test/test_update_webhook_notification_channel_request_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.update_webhook_notification_channel_request_v1 import UpdateWebhookNotificationChannelRequestV1 + + +class TestUpdateWebhookNotificationChannelRequestV1(unittest.TestCase): + """UpdateWebhookNotificationChannelRequestV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateWebhookNotificationChannelRequestV1: + """Test UpdateWebhookNotificationChannelRequestV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateWebhookNotificationChannelRequestV1` + """ + model = UpdateWebhookNotificationChannelRequestV1() + if include_optional: + return UpdateWebhookNotificationChannelRequestV1( + options = None + ) + else: + return UpdateWebhookNotificationChannelRequestV1( + options = None, + ) + """ + + def testUpdateWebhookNotificationChannelRequestV1(self): + """Test UpdateWebhookNotificationChannelRequestV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_user.py b/test/test_user.py new file mode 100644 index 00000000..663ce707 --- /dev/null +++ b/test/test_user.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.user import User + + +class TestUser(unittest.TestCase): + """User unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> User: + """Test User + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `User` + """ + model = User() + if include_optional: + return User( + username = 'kubernetes-admin', + groups = ["system:masters","system:authenticated"] + ) + else: + return User( + ) + """ + + def testUser(self): + """Test User""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_user_deactivation_api.py b/test/test_user_deactivation_api.py new file mode 100644 index 00000000..51190bad --- /dev/null +++ b/test/test_user_deactivation_api.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.user_deactivation_api import UserDeactivationApi + + +class TestUserDeactivationApi(unittest.TestCase): + """UserDeactivationApi unit test stubs""" + + def setUp(self) -> None: + self.api = UserDeactivationApi() + + def tearDown(self) -> None: + pass + + def test_get_user_deactivation_configuration_v1(self) -> None: + """Test case for get_user_deactivation_configuration_v1 + + Get User Deactivation Configuration + """ + pass + + def test_update_user_deactivation_configuration_by_id_v1(self) -> None: + """Test case for update_user_deactivation_configuration_by_id_v1 + + Update or Create User Deactivation Configuration + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_user_deactivation_configuration_response_v1.py b/test/test_user_deactivation_configuration_response_v1.py new file mode 100644 index 00000000..1415a4cd --- /dev/null +++ b/test/test_user_deactivation_configuration_response_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.user_deactivation_configuration_response_v1 import UserDeactivationConfigurationResponseV1 + + +class TestUserDeactivationConfigurationResponseV1(unittest.TestCase): + """UserDeactivationConfigurationResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UserDeactivationConfigurationResponseV1: + """Test UserDeactivationConfigurationResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UserDeactivationConfigurationResponseV1` + """ + model = UserDeactivationConfigurationResponseV1() + if include_optional: + return UserDeactivationConfigurationResponseV1( + customer_id = 1, + is_enabled = False, + number_days_before_deactivation = 90 + ) + else: + return UserDeactivationConfigurationResponseV1( + ) + """ + + def testUserDeactivationConfigurationResponseV1(self): + """Test UserDeactivationConfigurationResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_user_response_v1.py b/test/test_user_response_v1.py new file mode 100644 index 00000000..2fcf10a0 --- /dev/null +++ b/test/test_user_response_v1.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.user_response_v1 import UserResponseV1 + + +class TestUserResponseV1(unittest.TestCase): + """UserResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UserResponseV1: + """Test UserResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UserResponseV1` + """ + model = UserResponseV1() + if include_optional: + return UserResponseV1( + id = 1, + email = 'john.doe@nomail.cc', + first_name = 'john', + last_name = 'doe', + is_admin = False, + activation_status = 'confirmed', + date_created = '2017-07-21T17:32:28Z', + last_updated = '2017-07-21T17:32:28Z', + version = 1 + ) + else: + return UserResponseV1( + ) + """ + + def testUserResponseV1(self): + """Test UserResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_users_api.py b/test/test_users_api.py new file mode 100644 index 00000000..9cfab6c6 --- /dev/null +++ b/test/test_users_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.users_api import UsersApi + + +class TestUsersApi(unittest.TestCase): + """UsersApi unit test stubs""" + + def setUp(self) -> None: + self.api = UsersApi() + + def tearDown(self) -> None: + pass + + def test_create_user_v1(self) -> None: + """Test case for create_user_v1 + + Create User + """ + pass + + def test_delete_user_by_id_v1(self) -> None: + """Test case for delete_user_by_id_v1 + + Delete User + """ + pass + + def test_get_user_by_id_v1(self) -> None: + """Test case for get_user_by_id_v1 + + Get User + """ + pass + + def test_get_users_v1(self) -> None: + """Test case for get_users_v1 + + List Users + """ + pass + + def test_update_user_v1(self) -> None: + """Test case for update_user_v1 + + Update User + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_victor_ops_notification_channel_options_v1.py b/test/test_victor_ops_notification_channel_options_v1.py new file mode 100644 index 00000000..b3e69a25 --- /dev/null +++ b/test/test_victor_ops_notification_channel_options_v1.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.victor_ops_notification_channel_options_v1 import VictorOpsNotificationChannelOptionsV1 + + +class TestVictorOpsNotificationChannelOptionsV1(unittest.TestCase): + """VictorOpsNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VictorOpsNotificationChannelOptionsV1: + """Test VictorOpsNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VictorOpsNotificationChannelOptionsV1` + """ + model = VictorOpsNotificationChannelOptionsV1() + if include_optional: + return VictorOpsNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + api_key = 'my-api-key', + routing_key = 'my-routing-key' + ) + else: + return VictorOpsNotificationChannelOptionsV1( + ) + """ + + def testVictorOpsNotificationChannelOptionsV1(self): + """Test VictorOpsNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_victor_ops_notification_channel_response_v1.py b/test/test_victor_ops_notification_channel_response_v1.py new file mode 100644 index 00000000..c4e25f8f --- /dev/null +++ b/test/test_victor_ops_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.victor_ops_notification_channel_response_v1 import VictorOpsNotificationChannelResponseV1 + + +class TestVictorOpsNotificationChannelResponseV1(unittest.TestCase): + """VictorOpsNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VictorOpsNotificationChannelResponseV1: + """Test VictorOpsNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VictorOpsNotificationChannelResponseV1` + """ + model = VictorOpsNotificationChannelResponseV1() + if include_optional: + return VictorOpsNotificationChannelResponseV1( + options = None + ) + else: + return VictorOpsNotificationChannelResponseV1( + options = None, + ) + """ + + def testVictorOpsNotificationChannelResponseV1(self): + """Test VictorOpsNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_age.py b/test/test_vuln_age.py new file mode 100644 index 00000000..12280292 --- /dev/null +++ b/test/test_vuln_age.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_age import VulnAge + + +class TestVulnAge(unittest.TestCase): + """VulnAge unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnAge: + """Test VulnAge + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnAge` + """ + model = VulnAge() + if include_optional: + return VulnAge( + type = 'vulnAge', + extra = sysdig_client.models.vuln_age_extra.VulnAge_extra( + age = 30, ) + ) + else: + return VulnAge( + type = 'vulnAge', + extra = sysdig_client.models.vuln_age_extra.VulnAge_extra( + age = 30, ), + ) + """ + + def testVulnAge(self): + """Test VulnAge""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_age_extra.py b/test/test_vuln_age_extra.py new file mode 100644 index 00000000..658828e3 --- /dev/null +++ b/test/test_vuln_age_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_age_extra import VulnAgeExtra + + +class TestVulnAgeExtra(unittest.TestCase): + """VulnAgeExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnAgeExtra: + """Test VulnAgeExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnAgeExtra` + """ + model = VulnAgeExtra() + if include_optional: + return VulnAgeExtra( + age = 30 + ) + else: + return VulnAgeExtra( + ) + """ + + def testVulnAgeExtra(self): + """Test VulnAgeExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_cvss.py b/test/test_vuln_cvss.py new file mode 100644 index 00000000..5c3b0572 --- /dev/null +++ b/test/test_vuln_cvss.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_cvss import VulnCvss + + +class TestVulnCvss(unittest.TestCase): + """VulnCvss unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnCvss: + """Test VulnCvss + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnCvss` + """ + model = VulnCvss() + if include_optional: + return VulnCvss( + type = 'vulnCVSS', + extra = sysdig_client.models.vuln_cvss_extra.VulnCvss_extra( + value = 4, ) + ) + else: + return VulnCvss( + type = 'vulnCVSS', + extra = sysdig_client.models.vuln_cvss_extra.VulnCvss_extra( + value = 4, ), + ) + """ + + def testVulnCvss(self): + """Test VulnCvss""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_cvss_equals.py b/test/test_vuln_cvss_equals.py new file mode 100644 index 00000000..295865e1 --- /dev/null +++ b/test/test_vuln_cvss_equals.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_cvss_equals import VulnCvssEquals + + +class TestVulnCvssEquals(unittest.TestCase): + """VulnCvssEquals unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnCvssEquals: + """Test VulnCvssEquals + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnCvssEquals` + """ + model = VulnCvssEquals() + if include_optional: + return VulnCvssEquals( + type = 'vulnCVSSEquals', + extra = sysdig_client.models.vuln_cvss_equals_extra.VulnCvssEquals_extra( + value = 4, ) + ) + else: + return VulnCvssEquals( + type = 'vulnCVSSEquals', + extra = sysdig_client.models.vuln_cvss_equals_extra.VulnCvssEquals_extra( + value = 4, ), + ) + """ + + def testVulnCvssEquals(self): + """Test VulnCvssEquals""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_cvss_equals_extra.py b/test/test_vuln_cvss_equals_extra.py new file mode 100644 index 00000000..d75f1f17 --- /dev/null +++ b/test/test_vuln_cvss_equals_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_cvss_equals_extra import VulnCvssEqualsExtra + + +class TestVulnCvssEqualsExtra(unittest.TestCase): + """VulnCvssEqualsExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnCvssEqualsExtra: + """Test VulnCvssEqualsExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnCvssEqualsExtra` + """ + model = VulnCvssEqualsExtra() + if include_optional: + return VulnCvssEqualsExtra( + value = 4 + ) + else: + return VulnCvssEqualsExtra( + ) + """ + + def testVulnCvssEqualsExtra(self): + """Test VulnCvssEqualsExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_cvss_extra.py b/test/test_vuln_cvss_extra.py new file mode 100644 index 00000000..2d3ba9ae --- /dev/null +++ b/test/test_vuln_cvss_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_cvss_extra import VulnCvssExtra + + +class TestVulnCvssExtra(unittest.TestCase): + """VulnCvssExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnCvssExtra: + """Test VulnCvssExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnCvssExtra` + """ + model = VulnCvssExtra() + if include_optional: + return VulnCvssExtra( + value = 4 + ) + else: + return VulnCvssExtra( + ) + """ + + def testVulnCvssExtra(self): + """Test VulnCvssExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_disclosure_range.py b/test/test_vuln_disclosure_range.py new file mode 100644 index 00000000..8d1b0f05 --- /dev/null +++ b/test/test_vuln_disclosure_range.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_disclosure_range import VulnDisclosureRange + + +class TestVulnDisclosureRange(unittest.TestCase): + """VulnDisclosureRange unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnDisclosureRange: + """Test VulnDisclosureRange + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnDisclosureRange` + """ + model = VulnDisclosureRange() + if include_optional: + return VulnDisclosureRange( + type = 'vulnDisclosureRange', + extra = sysdig_client.models.vuln_disclosure_range_extra.VulnDisclosureRange_extra( + start_date = 'Mon Feb 26 18:00:00 CST 2024', + end_date = 'Tue May 21 18:00:00 CST 2024', ) + ) + else: + return VulnDisclosureRange( + type = 'vulnDisclosureRange', + extra = sysdig_client.models.vuln_disclosure_range_extra.VulnDisclosureRange_extra( + start_date = 'Mon Feb 26 18:00:00 CST 2024', + end_date = 'Tue May 21 18:00:00 CST 2024', ), + ) + """ + + def testVulnDisclosureRange(self): + """Test VulnDisclosureRange""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_disclosure_range_extra.py b/test/test_vuln_disclosure_range_extra.py new file mode 100644 index 00000000..24c3bf53 --- /dev/null +++ b/test/test_vuln_disclosure_range_extra.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_disclosure_range_extra import VulnDisclosureRangeExtra + + +class TestVulnDisclosureRangeExtra(unittest.TestCase): + """VulnDisclosureRangeExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnDisclosureRangeExtra: + """Test VulnDisclosureRangeExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnDisclosureRangeExtra` + """ + model = VulnDisclosureRangeExtra() + if include_optional: + return VulnDisclosureRangeExtra( + start_date = 'Mon Feb 26 18:00:00 CST 2024', + end_date = 'Tue May 21 18:00:00 CST 2024' + ) + else: + return VulnDisclosureRangeExtra( + ) + """ + + def testVulnDisclosureRangeExtra(self): + """Test VulnDisclosureRangeExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_epss_percentile_gte.py b/test/test_vuln_epss_percentile_gte.py new file mode 100644 index 00000000..42926c8a --- /dev/null +++ b/test/test_vuln_epss_percentile_gte.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_epss_percentile_gte import VulnEpssPercentileGte + + +class TestVulnEpssPercentileGte(unittest.TestCase): + """VulnEpssPercentileGte unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnEpssPercentileGte: + """Test VulnEpssPercentileGte + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnEpssPercentileGte` + """ + model = VulnEpssPercentileGte() + if include_optional: + return VulnEpssPercentileGte( + type = 'vulnEpssPercentileGte', + extra = sysdig_client.models.vuln_epss_percentile_gte_extra.VulnEpssPercentileGte_extra( + percentile = 30, ) + ) + else: + return VulnEpssPercentileGte( + type = 'vulnEpssPercentileGte', + extra = sysdig_client.models.vuln_epss_percentile_gte_extra.VulnEpssPercentileGte_extra( + percentile = 30, ), + ) + """ + + def testVulnEpssPercentileGte(self): + """Test VulnEpssPercentileGte""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_epss_percentile_gte_extra.py b/test/test_vuln_epss_percentile_gte_extra.py new file mode 100644 index 00000000..b2faea06 --- /dev/null +++ b/test/test_vuln_epss_percentile_gte_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_epss_percentile_gte_extra import VulnEpssPercentileGteExtra + + +class TestVulnEpssPercentileGteExtra(unittest.TestCase): + """VulnEpssPercentileGteExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnEpssPercentileGteExtra: + """Test VulnEpssPercentileGteExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnEpssPercentileGteExtra` + """ + model = VulnEpssPercentileGteExtra() + if include_optional: + return VulnEpssPercentileGteExtra( + percentile = 30 + ) + else: + return VulnEpssPercentileGteExtra( + ) + """ + + def testVulnEpssPercentileGteExtra(self): + """Test VulnEpssPercentileGteExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_epss_score_gte.py b/test/test_vuln_epss_score_gte.py new file mode 100644 index 00000000..8fd3779c --- /dev/null +++ b/test/test_vuln_epss_score_gte.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_epss_score_gte import VulnEpssScoreGte + + +class TestVulnEpssScoreGte(unittest.TestCase): + """VulnEpssScoreGte unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnEpssScoreGte: + """Test VulnEpssScoreGte + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnEpssScoreGte` + """ + model = VulnEpssScoreGte() + if include_optional: + return VulnEpssScoreGte( + type = 'vulnEpssScoreGte', + extra = sysdig_client.models.vuln_epss_score_gte_extra.VulnEpssScoreGte_extra( + score = 30, ) + ) + else: + return VulnEpssScoreGte( + type = 'vulnEpssScoreGte', + extra = sysdig_client.models.vuln_epss_score_gte_extra.VulnEpssScoreGte_extra( + score = 30, ), + ) + """ + + def testVulnEpssScoreGte(self): + """Test VulnEpssScoreGte""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_epss_score_gte_extra.py b/test/test_vuln_epss_score_gte_extra.py new file mode 100644 index 00000000..e7c60bbc --- /dev/null +++ b/test/test_vuln_epss_score_gte_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_epss_score_gte_extra import VulnEpssScoreGteExtra + + +class TestVulnEpssScoreGteExtra(unittest.TestCase): + """VulnEpssScoreGteExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnEpssScoreGteExtra: + """Test VulnEpssScoreGteExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnEpssScoreGteExtra` + """ + model = VulnEpssScoreGteExtra() + if include_optional: + return VulnEpssScoreGteExtra( + score = 30 + ) + else: + return VulnEpssScoreGteExtra( + ) + """ + + def testVulnEpssScoreGteExtra(self): + """Test VulnEpssScoreGteExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_exploitable.py b/test/test_vuln_exploitable.py new file mode 100644 index 00000000..21b02356 --- /dev/null +++ b/test/test_vuln_exploitable.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_exploitable import VulnExploitable + + +class TestVulnExploitable(unittest.TestCase): + """VulnExploitable unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnExploitable: + """Test VulnExploitable + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnExploitable` + """ + model = VulnExploitable() + if include_optional: + return VulnExploitable( + type = 'vulnExploitable' + ) + else: + return VulnExploitable( + type = 'vulnExploitable', + ) + """ + + def testVulnExploitable(self): + """Test VulnExploitable""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_exploitable_no_admin.py b/test/test_vuln_exploitable_no_admin.py new file mode 100644 index 00000000..577fb21a --- /dev/null +++ b/test/test_vuln_exploitable_no_admin.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_exploitable_no_admin import VulnExploitableNoAdmin + + +class TestVulnExploitableNoAdmin(unittest.TestCase): + """VulnExploitableNoAdmin unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnExploitableNoAdmin: + """Test VulnExploitableNoAdmin + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnExploitableNoAdmin` + """ + model = VulnExploitableNoAdmin() + if include_optional: + return VulnExploitableNoAdmin( + type = 'vulnExploitableNoAdmin' + ) + else: + return VulnExploitableNoAdmin( + type = 'vulnExploitableNoAdmin', + ) + """ + + def testVulnExploitableNoAdmin(self): + """Test VulnExploitableNoAdmin""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_exploitable_no_user.py b/test/test_vuln_exploitable_no_user.py new file mode 100644 index 00000000..253b45b2 --- /dev/null +++ b/test/test_vuln_exploitable_no_user.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_exploitable_no_user import VulnExploitableNoUser + + +class TestVulnExploitableNoUser(unittest.TestCase): + """VulnExploitableNoUser unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnExploitableNoUser: + """Test VulnExploitableNoUser + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnExploitableNoUser` + """ + model = VulnExploitableNoUser() + if include_optional: + return VulnExploitableNoUser( + type = 'vulnExploitableNoUser' + ) + else: + return VulnExploitableNoUser( + type = 'vulnExploitableNoUser', + ) + """ + + def testVulnExploitableNoUser(self): + """Test VulnExploitableNoUser""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_exploitable_via_network.py b/test/test_vuln_exploitable_via_network.py new file mode 100644 index 00000000..756f8e75 --- /dev/null +++ b/test/test_vuln_exploitable_via_network.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_exploitable_via_network import VulnExploitableViaNetwork + + +class TestVulnExploitableViaNetwork(unittest.TestCase): + """VulnExploitableViaNetwork unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnExploitableViaNetwork: + """Test VulnExploitableViaNetwork + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnExploitableViaNetwork` + """ + model = VulnExploitableViaNetwork() + if include_optional: + return VulnExploitableViaNetwork( + type = 'vulnExploitableViaNetwork' + ) + else: + return VulnExploitableViaNetwork( + type = 'vulnExploitableViaNetwork', + ) + """ + + def testVulnExploitableViaNetwork(self): + """Test VulnExploitableViaNetwork""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_exploitable_with_age.py b/test/test_vuln_exploitable_with_age.py new file mode 100644 index 00000000..95e15de2 --- /dev/null +++ b/test/test_vuln_exploitable_with_age.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_exploitable_with_age import VulnExploitableWithAge + + +class TestVulnExploitableWithAge(unittest.TestCase): + """VulnExploitableWithAge unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnExploitableWithAge: + """Test VulnExploitableWithAge + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnExploitableWithAge` + """ + model = VulnExploitableWithAge() + if include_optional: + return VulnExploitableWithAge( + type = 'vulnExploitableWithAge', + extra = sysdig_client.models.vuln_exploitable_with_age_extra.VulnExploitableWithAge_extra( + age = 30, ) + ) + else: + return VulnExploitableWithAge( + type = 'vulnExploitableWithAge', + extra = sysdig_client.models.vuln_exploitable_with_age_extra.VulnExploitableWithAge_extra( + age = 30, ), + ) + """ + + def testVulnExploitableWithAge(self): + """Test VulnExploitableWithAge""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_exploitable_with_age_extra.py b/test/test_vuln_exploitable_with_age_extra.py new file mode 100644 index 00000000..4c9c6435 --- /dev/null +++ b/test/test_vuln_exploitable_with_age_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_exploitable_with_age_extra import VulnExploitableWithAgeExtra + + +class TestVulnExploitableWithAgeExtra(unittest.TestCase): + """VulnExploitableWithAgeExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnExploitableWithAgeExtra: + """Test VulnExploitableWithAgeExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnExploitableWithAgeExtra` + """ + model = VulnExploitableWithAgeExtra() + if include_optional: + return VulnExploitableWithAgeExtra( + age = 30 + ) + else: + return VulnExploitableWithAgeExtra( + ) + """ + + def testVulnExploitableWithAgeExtra(self): + """Test VulnExploitableWithAgeExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_is_fixable.py b/test/test_vuln_is_fixable.py new file mode 100644 index 00000000..448fe41a --- /dev/null +++ b/test/test_vuln_is_fixable.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_is_fixable import VulnIsFixable + + +class TestVulnIsFixable(unittest.TestCase): + """VulnIsFixable unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnIsFixable: + """Test VulnIsFixable + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnIsFixable` + """ + model = VulnIsFixable() + if include_optional: + return VulnIsFixable( + type = 'vulnIsFixable' + ) + else: + return VulnIsFixable( + type = 'vulnIsFixable', + ) + """ + + def testVulnIsFixable(self): + """Test VulnIsFixable""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_is_fixable_with_age.py b/test/test_vuln_is_fixable_with_age.py new file mode 100644 index 00000000..3374ff64 --- /dev/null +++ b/test/test_vuln_is_fixable_with_age.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_is_fixable_with_age import VulnIsFixableWithAge + + +class TestVulnIsFixableWithAge(unittest.TestCase): + """VulnIsFixableWithAge unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnIsFixableWithAge: + """Test VulnIsFixableWithAge + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnIsFixableWithAge` + """ + model = VulnIsFixableWithAge() + if include_optional: + return VulnIsFixableWithAge( + type = 'vulnIsFixableWithAge', + extra = sysdig_client.models.vuln_is_fixable_with_age_extra.VulnIsFixableWithAge_extra( + age = 30, ) + ) + else: + return VulnIsFixableWithAge( + type = 'vulnIsFixableWithAge', + extra = sysdig_client.models.vuln_is_fixable_with_age_extra.VulnIsFixableWithAge_extra( + age = 30, ), + ) + """ + + def testVulnIsFixableWithAge(self): + """Test VulnIsFixableWithAge""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_is_fixable_with_age_extra.py b/test/test_vuln_is_fixable_with_age_extra.py new file mode 100644 index 00000000..f4332503 --- /dev/null +++ b/test/test_vuln_is_fixable_with_age_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_is_fixable_with_age_extra import VulnIsFixableWithAgeExtra + + +class TestVulnIsFixableWithAgeExtra(unittest.TestCase): + """VulnIsFixableWithAgeExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnIsFixableWithAgeExtra: + """Test VulnIsFixableWithAgeExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnIsFixableWithAgeExtra` + """ + model = VulnIsFixableWithAgeExtra() + if include_optional: + return VulnIsFixableWithAgeExtra( + age = 30 + ) + else: + return VulnIsFixableWithAgeExtra( + ) + """ + + def testVulnIsFixableWithAgeExtra(self): + """Test VulnIsFixableWithAgeExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_is_in_use.py b/test/test_vuln_is_in_use.py new file mode 100644 index 00000000..1ca29257 --- /dev/null +++ b/test/test_vuln_is_in_use.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_is_in_use import VulnIsInUse + + +class TestVulnIsInUse(unittest.TestCase): + """VulnIsInUse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnIsInUse: + """Test VulnIsInUse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnIsInUse` + """ + model = VulnIsInUse() + if include_optional: + return VulnIsInUse( + type = 'vulnIsInUse' + ) + else: + return VulnIsInUse( + type = 'vulnIsInUse', + ) + """ + + def testVulnIsInUse(self): + """Test VulnIsInUse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_pkg_type.py b/test/test_vuln_pkg_type.py new file mode 100644 index 00000000..6e4267b5 --- /dev/null +++ b/test/test_vuln_pkg_type.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_pkg_type import VulnPkgType + + +class TestVulnPkgType(unittest.TestCase): + """VulnPkgType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnPkgType: + """Test VulnPkgType + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnPkgType` + """ + model = VulnPkgType() + if include_optional: + return VulnPkgType( + type = 'vulnPkgType', + extra = sysdig_client.models.vuln_pkg_type_extra.VulnPkgType_extra( + pkg_type = 'os', ) + ) + else: + return VulnPkgType( + type = 'vulnPkgType', + extra = sysdig_client.models.vuln_pkg_type_extra.VulnPkgType_extra( + pkg_type = 'os', ), + ) + """ + + def testVulnPkgType(self): + """Test VulnPkgType""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_pkg_type_extra.py b/test/test_vuln_pkg_type_extra.py new file mode 100644 index 00000000..47b643a0 --- /dev/null +++ b/test/test_vuln_pkg_type_extra.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_pkg_type_extra import VulnPkgTypeExtra + + +class TestVulnPkgTypeExtra(unittest.TestCase): + """VulnPkgTypeExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnPkgTypeExtra: + """Test VulnPkgTypeExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnPkgTypeExtra` + """ + model = VulnPkgTypeExtra() + if include_optional: + return VulnPkgTypeExtra( + pkg_type = 'os' + ) + else: + return VulnPkgTypeExtra( + pkg_type = 'os', + ) + """ + + def testVulnPkgTypeExtra(self): + """Test VulnPkgTypeExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_severity.py b/test/test_vuln_severity.py new file mode 100644 index 00000000..8b1fc028 --- /dev/null +++ b/test/test_vuln_severity.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_severity import VulnSeverity + + +class TestVulnSeverity(unittest.TestCase): + """VulnSeverity unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnSeverity: + """Test VulnSeverity + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnSeverity` + """ + model = VulnSeverity() + if include_optional: + return VulnSeverity( + type = 'vulnSeverity', + extra = sysdig_client.models.vuln_severity_extra.VulnSeverity_extra( + level = 'critical', ) + ) + else: + return VulnSeverity( + type = 'vulnSeverity', + extra = sysdig_client.models.vuln_severity_extra.VulnSeverity_extra( + level = 'critical', ), + ) + """ + + def testVulnSeverity(self): + """Test VulnSeverity""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_severity_equals.py b/test/test_vuln_severity_equals.py new file mode 100644 index 00000000..88bd46ab --- /dev/null +++ b/test/test_vuln_severity_equals.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_severity_equals import VulnSeverityEquals + + +class TestVulnSeverityEquals(unittest.TestCase): + """VulnSeverityEquals unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnSeverityEquals: + """Test VulnSeverityEquals + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnSeverityEquals` + """ + model = VulnSeverityEquals() + if include_optional: + return VulnSeverityEquals( + type = 'vulnSeverityEquals', + extra = sysdig_client.models.vuln_severity_extra.VulnSeverity_extra( + level = 'critical', ) + ) + else: + return VulnSeverityEquals( + type = 'vulnSeverityEquals', + extra = sysdig_client.models.vuln_severity_extra.VulnSeverity_extra( + level = 'critical', ), + ) + """ + + def testVulnSeverityEquals(self): + """Test VulnSeverityEquals""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_severity_extra.py b/test/test_vuln_severity_extra.py new file mode 100644 index 00000000..c6ce647c --- /dev/null +++ b/test/test_vuln_severity_extra.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_severity_extra import VulnSeverityExtra + + +class TestVulnSeverityExtra(unittest.TestCase): + """VulnSeverityExtra unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnSeverityExtra: + """Test VulnSeverityExtra + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnSeverityExtra` + """ + model = VulnSeverityExtra() + if include_optional: + return VulnSeverityExtra( + level = 'critical' + ) + else: + return VulnSeverityExtra( + ) + """ + + def testVulnSeverityExtra(self): + """Test VulnSeverityExtra""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vuln_total_by_severity.py b/test/test_vuln_total_by_severity.py new file mode 100644 index 00000000..35e38e53 --- /dev/null +++ b/test/test_vuln_total_by_severity.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +Sysdig Secure Vulnerability Management Runtimeview Public API + +This API allows reading runtime vulnerability data. + +The version of the OpenAPI document: 1.0.3 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vuln_total_by_severity import VulnTotalBySeverity + + +class TestVulnTotalBySeverity(unittest.TestCase): + """VulnTotalBySeverity unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnTotalBySeverity: + """Test VulnTotalBySeverity + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnTotalBySeverity` + """ + model = VulnTotalBySeverity() + if include_optional: + return VulnTotalBySeverity( + critical = 12345, + high = 12345, + medium = 12345, + low = 12345, + negligible = 12345 + ) + else: + return VulnTotalBySeverity( + ) + """ + + def testVulnTotalBySeverity(self): + """Test VulnTotalBySeverity""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vulnerability.py b/test/test_vulnerability.py new file mode 100644 index 00000000..e02d59b5 --- /dev/null +++ b/test/test_vulnerability.py @@ -0,0 +1,81 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vulnerability import Vulnerability + + +class TestVulnerability(unittest.TestCase): + """Vulnerability unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Vulnerability: + """Test Vulnerability + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Vulnerability` + """ + model = Vulnerability() + if include_optional: + return Vulnerability( + name = 'CVE-2021-1234', + severity = 'critical', + cvss_score = sysdig_client.models.cvss_score.CvssScore( + version = '3.0.0', + score = 1, + vector = 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', ), + disclosure_date = 'Fri Jan 01 18:00:00 CST 2021', + solution_date = 'Fri Jan 01 18:00:00 CST 2021', + exploitable = True, + exploit = sysdig_client.models.exploit.Exploit( + publication_date = '2024-01-22T08:51:46Z', + links = [ + 'https://sysdig-example.com/exploits/12345' + ], ), + fix_version = '1.2.3', + main_provider = 'vulndb', + package_ref = '2772f8a6c73fa17', + risk_accept_refs = [ + 'e6b4b0d3255bfef' + ], + providers_metadata = {"first.org":{"epssScore":{"score":4.2E-4,"percentile":0.05089,"timestamp":"2024-12-04T00:00:00Z"}},"nvd":{"cvssScore":{"version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","score":5.5},"publicationDate":"2024-09-04T19:15:30.77Z","severity":"medium"},"rhel":{"cvssScore":{"version":"3.1","vector":"AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","score":5.5},"severity":"medium"}}, + cisa_kev = {"publishDate":"2023-12-06","dueDate":"2023-10-31","knownRansomwareCampaignUse":"false"} + ) + else: + return Vulnerability( + name = 'CVE-2021-1234', + severity = 'critical', + cvss_score = sysdig_client.models.cvss_score.CvssScore( + version = '3.0.0', + score = 1, + vector = 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H', ), + exploitable = True, + ) + """ + + def testVulnerability(self): + """Test Vulnerability""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vulnerability_management_api.py b/test/test_vulnerability_management_api.py new file mode 100644 index 00000000..20031ab6 --- /dev/null +++ b/test/test_vulnerability_management_api.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +Sysdig Secure Vulnerability Management Runtimeview Public API + +This API allows reading runtime vulnerability data. + +The version of the OpenAPI document: 1.0.3 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.vulnerability_management_api import VulnerabilityManagementApi + + +class TestVulnerabilityManagementApi(unittest.TestCase): + """VulnerabilityManagementApi unit test stubs""" + + def setUp(self) -> None: + self.api = VulnerabilityManagementApi() + + def tearDown(self) -> None: + pass + + def test_scanner_api_service_list_runtime_results(self) -> None: + """Test case for scanner_api_service_list_runtime_results + + Get a list of runtime scan results + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vulnerability_management_page.py b/test/test_vulnerability_management_page.py new file mode 100644 index 00000000..a52c68c1 --- /dev/null +++ b/test/test_vulnerability_management_page.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Secure Vulnerability Management Runtimeview Public API + +This API allows reading runtime vulnerability data. + +The version of the OpenAPI document: 1.0.3 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vulnerability_management_page import VulnerabilityManagementPage + + +class TestVulnerabilityManagementPage(unittest.TestCase): + """VulnerabilityManagementPage unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnerabilityManagementPage: + """Test VulnerabilityManagementPage + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnerabilityManagementPage` + """ + model = VulnerabilityManagementPage() + if include_optional: + return VulnerabilityManagementPage( + total = 1, + next = 'MTI0MjM0Cg==' + ) + else: + return VulnerabilityManagementPage( + ) + """ + + def testVulnerabilityManagementPage(self): + """Test VulnerabilityManagementPage""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_vulnerability_summary.py b/test/test_vulnerability_summary.py new file mode 100644 index 00000000..aba6e38e --- /dev/null +++ b/test/test_vulnerability_summary.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.vulnerability_summary import VulnerabilitySummary + + +class TestVulnerabilitySummary(unittest.TestCase): + """VulnerabilitySummary unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VulnerabilitySummary: + """Test VulnerabilitySummary + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `VulnerabilitySummary` + """ + model = VulnerabilitySummary() + if include_optional: + return VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True + ) + else: + return VulnerabilitySummary( + critical_severity_count = 1, + high_severity_count = 2, + medium_severity_count = 3, + low_severity_count = 4, + negligible_severity_count = 5, + has_exploit = True, + ) + """ + + def testVulnerabilitySummary(self): + """Test VulnerabilitySummary""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_wasted_workload_data_request.py b/test/test_wasted_workload_data_request.py new file mode 100644 index 00000000..ec40bce8 --- /dev/null +++ b/test/test_wasted_workload_data_request.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.wasted_workload_data_request import WastedWorkloadDataRequest + + +class TestWastedWorkloadDataRequest(unittest.TestCase): + """WastedWorkloadDataRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WastedWorkloadDataRequest: + """Test WastedWorkloadDataRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WastedWorkloadDataRequest` + """ + model = WastedWorkloadDataRequest() + if include_optional: + return WastedWorkloadDataRequest( + date_range = sysdig_client.models.date_range.DateRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025', ), + scope = [ + sysdig_client.models.prom_ql_matcher.PromQL Matcher( + label = 'kube_cluster_name', + operator = 'REGEX_MATCH', + value = 'my_service.*', ) + ], + group_by = [ + 'kube_cluster_name' + ] + ) + else: + return WastedWorkloadDataRequest( + date_range = sysdig_client.models.date_range.DateRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025', ), + ) + """ + + def testWastedWorkloadDataRequest(self): + """Test WastedWorkloadDataRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_wasted_workload_spend_data_response.py b/test/test_wasted_workload_spend_data_response.py new file mode 100644 index 00000000..b921e6a8 --- /dev/null +++ b/test/test_wasted_workload_spend_data_response.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.wasted_workload_spend_data_response import WastedWorkloadSpendDataResponse + + +class TestWastedWorkloadSpendDataResponse(unittest.TestCase): + """WastedWorkloadSpendDataResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WastedWorkloadSpendDataResponse: + """Test WastedWorkloadSpendDataResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WastedWorkloadSpendDataResponse` + """ + model = WastedWorkloadSpendDataResponse() + if include_optional: + return WastedWorkloadSpendDataResponse( + total = sysdig_client.models.wasted_workload_spend_data_response_total.WastedWorkloadSpendDataResponse_total( + accrued = 31.59, + estimated = 5.6, + wasted = 25.73, ), + group_by_data = [ + {"group":{"kube_cluster_name":"test-k8s-cluster"},"accrued":26.59,"estimated":3.6,"wasted":22.99} + ] + ) + else: + return WastedWorkloadSpendDataResponse( + ) + """ + + def testWastedWorkloadSpendDataResponse(self): + """Test WastedWorkloadSpendDataResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_wasted_workload_spend_data_response_group_by_data_inner.py b/test/test_wasted_workload_spend_data_response_group_by_data_inner.py new file mode 100644 index 00000000..9ec68030 --- /dev/null +++ b/test/test_wasted_workload_spend_data_response_group_by_data_inner.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.wasted_workload_spend_data_response_group_by_data_inner import ( + WastedWorkloadSpendDataResponseGroupByDataInner, +) + + +class TestWastedWorkloadSpendDataResponseGroupByDataInner(unittest.TestCase): + """WastedWorkloadSpendDataResponseGroupByDataInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WastedWorkloadSpendDataResponseGroupByDataInner: + """Test WastedWorkloadSpendDataResponseGroupByDataInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WastedWorkloadSpendDataResponseGroupByDataInner` + """ + model = WastedWorkloadSpendDataResponseGroupByDataInner() + if include_optional: + return WastedWorkloadSpendDataResponseGroupByDataInner( + group = { + 'key' : 'kube_cluster_name:test-k8s-cluster' + }, + accrued = 26.59, + estimated = 3.6, + wasted = 22.99 + ) + else: + return WastedWorkloadSpendDataResponseGroupByDataInner( + ) + """ + + def testWastedWorkloadSpendDataResponseGroupByDataInner(self): + """Test WastedWorkloadSpendDataResponseGroupByDataInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_wasted_workload_spend_data_response_total.py b/test/test_wasted_workload_spend_data_response_total.py new file mode 100644 index 00000000..70cd262b --- /dev/null +++ b/test/test_wasted_workload_spend_data_response_total.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.wasted_workload_spend_data_response_total import WastedWorkloadSpendDataResponseTotal + + +class TestWastedWorkloadSpendDataResponseTotal(unittest.TestCase): + """WastedWorkloadSpendDataResponseTotal unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WastedWorkloadSpendDataResponseTotal: + """Test WastedWorkloadSpendDataResponseTotal + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WastedWorkloadSpendDataResponseTotal` + """ + model = WastedWorkloadSpendDataResponseTotal() + if include_optional: + return WastedWorkloadSpendDataResponseTotal( + accrued = 31.59, + estimated = 5.6, + wasted = 25.73 + ) + else: + return WastedWorkloadSpendDataResponseTotal( + ) + """ + + def testWastedWorkloadSpendDataResponseTotal(self): + """Test WastedWorkloadSpendDataResponseTotal""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_webhook_notification_channel_options_v1.py b/test/test_webhook_notification_channel_options_v1.py new file mode 100644 index 00000000..d9605814 --- /dev/null +++ b/test/test_webhook_notification_channel_options_v1.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.webhook_notification_channel_options_v1 import WebhookNotificationChannelOptionsV1 + + +class TestWebhookNotificationChannelOptionsV1(unittest.TestCase): + """WebhookNotificationChannelOptionsV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WebhookNotificationChannelOptionsV1: + """Test WebhookNotificationChannelOptionsV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WebhookNotificationChannelOptionsV1` + """ + model = WebhookNotificationChannelOptionsV1() + if include_optional: + return WebhookNotificationChannelOptionsV1( + has_hiding_of_sensitive_info = True, + url = 'http://some-website/some-path', + is_allows_insecure_connections = False, + additional_headers = { + 'key' : 'CUSTOM_HEADER' + }, + custom_data = { + 'key' : {"testField":"testValue"} + } + ) + else: + return WebhookNotificationChannelOptionsV1( + ) + """ + + def testWebhookNotificationChannelOptionsV1(self): + """Test WebhookNotificationChannelOptionsV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_webhook_notification_channel_response_v1.py b/test/test_webhook_notification_channel_response_v1.py new file mode 100644 index 00000000..28689393 --- /dev/null +++ b/test/test_webhook_notification_channel_response_v1.py @@ -0,0 +1,54 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.webhook_notification_channel_response_v1 import WebhookNotificationChannelResponseV1 + + +class TestWebhookNotificationChannelResponseV1(unittest.TestCase): + """WebhookNotificationChannelResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WebhookNotificationChannelResponseV1: + """Test WebhookNotificationChannelResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WebhookNotificationChannelResponseV1` + """ + model = WebhookNotificationChannelResponseV1() + if include_optional: + return WebhookNotificationChannelResponseV1( + options = None + ) + else: + return WebhookNotificationChannelResponseV1( + options = None, + ) + """ + + def testWebhookNotificationChannelResponseV1(self): + """Test WebhookNotificationChannelResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_cost_trends_data_request.py b/test/test_workload_cost_trends_data_request.py new file mode 100644 index 00000000..786835d8 --- /dev/null +++ b/test/test_workload_cost_trends_data_request.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_cost_trends_data_request import WorkloadCostTrendsDataRequest + + +class TestWorkloadCostTrendsDataRequest(unittest.TestCase): + """WorkloadCostTrendsDataRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadCostTrendsDataRequest: + """Test WorkloadCostTrendsDataRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadCostTrendsDataRequest` + """ + model = WorkloadCostTrendsDataRequest() + if include_optional: + return WorkloadCostTrendsDataRequest( + trend_range_in_days = 10, + var_date = 'Tue Feb 11 18:00:00 CST 2025', + scope = [ + sysdig_client.models.prom_ql_matcher.PromQL Matcher( + label = 'kube_cluster_name', + operator = 'REGEX_MATCH', + value = 'my_service.*', ) + ], + group_by = [ + 'kube_cluster_name' + ] + ) + else: + return WorkloadCostTrendsDataRequest( + trend_range_in_days = 10, + var_date = 'Tue Feb 11 18:00:00 CST 2025', + ) + """ + + def testWorkloadCostTrendsDataRequest(self): + """Test WorkloadCostTrendsDataRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_cost_trends_data_response.py b/test/test_workload_cost_trends_data_response.py new file mode 100644 index 00000000..02453a02 --- /dev/null +++ b/test/test_workload_cost_trends_data_response.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_cost_trends_data_response import WorkloadCostTrendsDataResponse + + +class TestWorkloadCostTrendsDataResponse(unittest.TestCase): + """WorkloadCostTrendsDataResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadCostTrendsDataResponse: + """Test WorkloadCostTrendsDataResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadCostTrendsDataResponse` + """ + model = WorkloadCostTrendsDataResponse() + if include_optional: + return WorkloadCostTrendsDataResponse( + current_range = None, + previous_range = None, + total = sysdig_client.models.workload_cost_trends_data_response_total.WorkloadCostTrendsDataResponse_total( + current = 33.754530610617486, + previous = 34.36367482352418, + change = -1.77, ), + scope = [ + sysdig_client.models.prom_ql_matcher.PromQL Matcher( + label = 'kube_cluster_name', + operator = 'REGEX_MATCH', + value = 'my_service.*', ) + ], + group_by = [ + 'kube_cluster_name' + ], + group_by_data = [ + sysdig_client.models.workload_cost_trends_data_response_group_by_data_inner.WorkloadCostTrendsDataResponse_groupByData_inner( + group = { + 'key' : 'kube_cluster_name:test-k8s-cluster' + }, + current = 33.754530610617486, + previous = 34.36367482352418, + change = -0.6091442129, ) + ] + ) + else: + return WorkloadCostTrendsDataResponse( + ) + """ + + def testWorkloadCostTrendsDataResponse(self): + """Test WorkloadCostTrendsDataResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_cost_trends_data_response_current_range.py b/test/test_workload_cost_trends_data_response_current_range.py new file mode 100644 index 00000000..29a788e4 --- /dev/null +++ b/test/test_workload_cost_trends_data_response_current_range.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_cost_trends_data_response_current_range import WorkloadCostTrendsDataResponseCurrentRange + + +class TestWorkloadCostTrendsDataResponseCurrentRange(unittest.TestCase): + """WorkloadCostTrendsDataResponseCurrentRange unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadCostTrendsDataResponseCurrentRange: + """Test WorkloadCostTrendsDataResponseCurrentRange + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadCostTrendsDataResponseCurrentRange` + """ + model = WorkloadCostTrendsDataResponseCurrentRange() + if include_optional: + return WorkloadCostTrendsDataResponseCurrentRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025' + ) + else: + return WorkloadCostTrendsDataResponseCurrentRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025', + ) + """ + + def testWorkloadCostTrendsDataResponseCurrentRange(self): + """Test WorkloadCostTrendsDataResponseCurrentRange""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_cost_trends_data_response_group_by_data_inner.py b/test/test_workload_cost_trends_data_response_group_by_data_inner.py new file mode 100644 index 00000000..2a09215a --- /dev/null +++ b/test/test_workload_cost_trends_data_response_group_by_data_inner.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_cost_trends_data_response_group_by_data_inner import ( + WorkloadCostTrendsDataResponseGroupByDataInner, +) + + +class TestWorkloadCostTrendsDataResponseGroupByDataInner(unittest.TestCase): + """WorkloadCostTrendsDataResponseGroupByDataInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadCostTrendsDataResponseGroupByDataInner: + """Test WorkloadCostTrendsDataResponseGroupByDataInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadCostTrendsDataResponseGroupByDataInner` + """ + model = WorkloadCostTrendsDataResponseGroupByDataInner() + if include_optional: + return WorkloadCostTrendsDataResponseGroupByDataInner( + group = { + 'key' : 'kube_cluster_name:test-k8s-cluster' + }, + current = 33.754530610617486, + previous = 34.36367482352418, + change = -0.6091442129 + ) + else: + return WorkloadCostTrendsDataResponseGroupByDataInner( + ) + """ + + def testWorkloadCostTrendsDataResponseGroupByDataInner(self): + """Test WorkloadCostTrendsDataResponseGroupByDataInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_cost_trends_data_response_previous_range.py b/test/test_workload_cost_trends_data_response_previous_range.py new file mode 100644 index 00000000..3ffeb73f --- /dev/null +++ b/test/test_workload_cost_trends_data_response_previous_range.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_cost_trends_data_response_previous_range import WorkloadCostTrendsDataResponsePreviousRange + + +class TestWorkloadCostTrendsDataResponsePreviousRange(unittest.TestCase): + """WorkloadCostTrendsDataResponsePreviousRange unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadCostTrendsDataResponsePreviousRange: + """Test WorkloadCostTrendsDataResponsePreviousRange + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadCostTrendsDataResponsePreviousRange` + """ + model = WorkloadCostTrendsDataResponsePreviousRange() + if include_optional: + return WorkloadCostTrendsDataResponsePreviousRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025' + ) + else: + return WorkloadCostTrendsDataResponsePreviousRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025', + ) + """ + + def testWorkloadCostTrendsDataResponsePreviousRange(self): + """Test WorkloadCostTrendsDataResponsePreviousRange""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_cost_trends_data_response_total.py b/test/test_workload_cost_trends_data_response_total.py new file mode 100644 index 00000000..0570b078 --- /dev/null +++ b/test/test_workload_cost_trends_data_response_total.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_cost_trends_data_response_total import WorkloadCostTrendsDataResponseTotal + + +class TestWorkloadCostTrendsDataResponseTotal(unittest.TestCase): + """WorkloadCostTrendsDataResponseTotal unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadCostTrendsDataResponseTotal: + """Test WorkloadCostTrendsDataResponseTotal + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadCostTrendsDataResponseTotal` + """ + model = WorkloadCostTrendsDataResponseTotal() + if include_optional: + return WorkloadCostTrendsDataResponseTotal( + current = 33.754530610617486, + previous = 34.36367482352418, + change = -1.77 + ) + else: + return WorkloadCostTrendsDataResponseTotal( + ) + """ + + def testWorkloadCostTrendsDataResponseTotal(self): + """Test WorkloadCostTrendsDataResponseTotal""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_ml_runtime_detection_content.py b/test/test_workload_ml_runtime_detection_content.py new file mode 100644 index 00000000..e01bf344 --- /dev/null +++ b/test/test_workload_ml_runtime_detection_content.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_ml_runtime_detection_content import WorkloadMlRuntimeDetectionContent + + +class TestWorkloadMlRuntimeDetectionContent(unittest.TestCase): + """WorkloadMlRuntimeDetectionContent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadMlRuntimeDetectionContent: + """Test WorkloadMlRuntimeDetectionContent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadMlRuntimeDetectionContent` + """ + model = WorkloadMlRuntimeDetectionContent() + if include_optional: + return WorkloadMlRuntimeDetectionContent( + type = 'workloadRuntimeDetection', + command = 'bash', + exe = '/bin/bash', + detected_class_probability = 0.8, + policy_id = 2 + ) + else: + return WorkloadMlRuntimeDetectionContent( + type = 'workloadRuntimeDetection', + command = 'bash', + exe = '/bin/bash', + detected_class_probability = 0.8, + policy_id = 2, + ) + """ + + def testWorkloadMlRuntimeDetectionContent(self): + """Test WorkloadMlRuntimeDetectionContent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_rightsizing_data_request.py b/test/test_workload_rightsizing_data_request.py new file mode 100644 index 00000000..c97d8fbe --- /dev/null +++ b/test/test_workload_rightsizing_data_request.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_rightsizing_data_request import WorkloadRightsizingDataRequest + + +class TestWorkloadRightsizingDataRequest(unittest.TestCase): + """WorkloadRightsizingDataRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadRightsizingDataRequest: + """Test WorkloadRightsizingDataRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadRightsizingDataRequest` + """ + model = WorkloadRightsizingDataRequest() + if include_optional: + return WorkloadRightsizingDataRequest( + date_range = sysdig_client.models.date_range.DateRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025', ), + algorithm = '', + scope = [ + sysdig_client.models.prom_ql_matcher.PromQL Matcher( + label = 'kube_cluster_name', + operator = 'REGEX_MATCH', + value = 'my_service.*', ) + ] + ) + else: + return WorkloadRightsizingDataRequest( + date_range = sysdig_client.models.date_range.DateRange( + start_date = 'Sun Feb 16 18:00:00 CST 2025', + end_date = 'Tue Feb 18 18:00:00 CST 2025', ), + algorithm = '', + ) + """ + + def testWorkloadRightsizingDataRequest(self): + """Test WorkloadRightsizingDataRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_rightsizing_data_response.py b/test/test_workload_rightsizing_data_response.py new file mode 100644 index 00000000..e539f2c2 --- /dev/null +++ b/test/test_workload_rightsizing_data_response.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_rightsizing_data_response import WorkloadRightsizingDataResponse + + +class TestWorkloadRightsizingDataResponse(unittest.TestCase): + """WorkloadRightsizingDataResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadRightsizingDataResponse: + """Test WorkloadRightsizingDataResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadRightsizingDataResponse` + """ + model = WorkloadRightsizingDataResponse() + if include_optional: + return WorkloadRightsizingDataResponse( + group_by_data = [ + sysdig_client.models.workload_rightsizing_data_response_group_by_data_inner.WorkloadRightsizingDataResponse_groupByData_inner( + group = {"cluster":"test-cluster","namespace":"prod","workload":"web-api","container":"web-api-container"}, + suggested_cpu = 100, + suggested_memory = 1024, + monthly_cost = 10.02, + monthly_potential_savings = 2, + workload_type = 'Deployment', + number_of_pods = 1, + requested_cpu = 120, + requested_memory = 2048, ) + ] + ) + else: + return WorkloadRightsizingDataResponse( + ) + """ + + def testWorkloadRightsizingDataResponse(self): + """Test WorkloadRightsizingDataResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_rightsizing_data_response_group_by_data_inner.py b/test/test_workload_rightsizing_data_response_group_by_data_inner.py new file mode 100644 index 00000000..2da1ad5f --- /dev/null +++ b/test/test_workload_rightsizing_data_response_group_by_data_inner.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_rightsizing_data_response_group_by_data_inner import ( + WorkloadRightsizingDataResponseGroupByDataInner, +) + + +class TestWorkloadRightsizingDataResponseGroupByDataInner(unittest.TestCase): + """WorkloadRightsizingDataResponseGroupByDataInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadRightsizingDataResponseGroupByDataInner: + """Test WorkloadRightsizingDataResponseGroupByDataInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadRightsizingDataResponseGroupByDataInner` + """ + model = WorkloadRightsizingDataResponseGroupByDataInner() + if include_optional: + return WorkloadRightsizingDataResponseGroupByDataInner( + group = {"cluster":"test-cluster","namespace":"prod","workload":"web-api","container":"web-api-container"}, + suggested_cpu = 100, + suggested_memory = 1024, + monthly_cost = 10.02, + monthly_potential_savings = 2, + workload_type = 'Deployment', + number_of_pods = 1, + requested_cpu = 120, + requested_memory = 2048 + ) + else: + return WorkloadRightsizingDataResponseGroupByDataInner( + ) + """ + + def testWorkloadRightsizingDataResponseGroupByDataInner(self): + """Test WorkloadRightsizingDataResponseGroupByDataInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_runtime_detection_content.py b/test/test_workload_runtime_detection_content.py new file mode 100644 index 00000000..96736d8c --- /dev/null +++ b/test/test_workload_runtime_detection_content.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_runtime_detection_content import WorkloadRuntimeDetectionContent + + +class TestWorkloadRuntimeDetectionContent(unittest.TestCase): + """WorkloadRuntimeDetectionContent unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadRuntimeDetectionContent: + """Test WorkloadRuntimeDetectionContent + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadRuntimeDetectionContent` + """ + model = WorkloadRuntimeDetectionContent() + if include_optional: + return WorkloadRuntimeDetectionContent( + type = 'workloadRuntimeDetection', + policy_id = 2, + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + rule_sub_type = 1, + rule_tags = [ + 'AWS_IAM' + ], + output = 'File below a known binary directory opened for writing... +', + fields = None, + run_book = 'https://www.mycompany.com/our-runbook-link', + origin = 'Sysdig' + ) + else: + return WorkloadRuntimeDetectionContent( + type = 'workloadRuntimeDetection', + policy_id = 2, + rule_name = 'Create Security Group Rule Allowing SSH Ingress', + rule_type = 6, + rule_sub_type = 1, + rule_tags = [ + 'AWS_IAM' + ], + output = 'File below a known binary directory opened for writing... +', + fields = None, + ) + """ + + def testWorkloadRuntimeDetectionContent(self): + """Test WorkloadRuntimeDetectionContent""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_workload_runtime_detection_content_all_of_fields.py b/test/test_workload_runtime_detection_content_all_of_fields.py new file mode 100644 index 00000000..9c4b8ef3 --- /dev/null +++ b/test/test_workload_runtime_detection_content_all_of_fields.py @@ -0,0 +1,52 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.workload_runtime_detection_content_all_of_fields import WorkloadRuntimeDetectionContentAllOfFields + + +class TestWorkloadRuntimeDetectionContentAllOfFields(unittest.TestCase): + """WorkloadRuntimeDetectionContentAllOfFields unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> WorkloadRuntimeDetectionContentAllOfFields: + """Test WorkloadRuntimeDetectionContentAllOfFields + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `WorkloadRuntimeDetectionContentAllOfFields` + """ + model = WorkloadRuntimeDetectionContentAllOfFields() + if include_optional: + return WorkloadRuntimeDetectionContentAllOfFields( + ) + else: + return WorkloadRuntimeDetectionContentAllOfFields( + ) + """ + + def testWorkloadRuntimeDetectionContentAllOfFields(self): + """Test WorkloadRuntimeDetectionContentAllOfFields""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_zone.py b/test/test_zone.py new file mode 100644 index 00000000..025c458d --- /dev/null +++ b/test/test_zone.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +Sysdig Secure Client API + +Sysdig Secure Client API enables you to deep-dive into specific security events. + +The version of the OpenAPI document: 1.2.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.zone import Zone + + +class TestZone(unittest.TestCase): + """Zone unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Zone: + """Test Zone + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Zone` + """ + model = Zone() + if include_optional: + return Zone( + zone_name = 'Zone example', + zone_id = 1234 + ) + else: + return Zone( + zone_name = 'Zone example', + ) + """ + + def testZone(self): + """Test Zone""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_zone_response_v1.py b/test/test_zone_response_v1.py new file mode 100644 index 00000000..0947ad4f --- /dev/null +++ b/test/test_zone_response_v1.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.zone_response_v1 import ZoneResponseV1 + + +class TestZoneResponseV1(unittest.TestCase): + """ZoneResponseV1 unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ZoneResponseV1: + """Test ZoneResponseV1 + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ZoneResponseV1` + """ + model = ZoneResponseV1() + if include_optional: + return ZoneResponseV1( + id = 1, + name = 'Production', + description = 'Production Environment', + author = 'Sysdig', + last_modified_by = 'john_doe@sysdig.com', + last_updated = 1, + is_system = False, + scopes = [ + sysdig_client.models.zone_scope.Zone Scope( + id = 1, + target_type = 'target', + rules = 'clusterId in ( "test" )', ) + ] + ) + else: + return ZoneResponseV1( + ) + """ + + def testZoneResponseV1(self): + """Test ZoneResponseV1""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_zone_scope.py b/test/test_zone_scope.py new file mode 100644 index 00000000..f904fd46 --- /dev/null +++ b/test/test_zone_scope.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.models.zone_scope import ZoneScope + + +class TestZoneScope(unittest.TestCase): + """ZoneScope unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ZoneScope: + """Test ZoneScope + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ZoneScope` + """ + model = ZoneScope() + if include_optional: + return ZoneScope( + id = 1, + target_type = 'target', + rules = 'clusterId in ( "test" )' + ) + else: + return ZoneScope( + target_type = 'target', + ) + """ + + def testZoneScope(self): + """Test ZoneScope""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_zones_api.py b/test/test_zones_api.py new file mode 100644 index 00000000..155ba771 --- /dev/null +++ b/test/test_zones_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" +Sysdig Public API + +Sysdig Public API. + +The version of the OpenAPI document: 1.1.1 +Contact: info@sysdig.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +import unittest + +from sysdig_client.api.zones_api import ZonesApi + + +class TestZonesApi(unittest.TestCase): + """ZonesApi unit test stubs""" + + def setUp(self) -> None: + self.api = ZonesApi() + + def tearDown(self) -> None: + pass + + def test_create_zone_v1(self) -> None: + """Test case for create_zone_v1 + + Create Zone + """ + pass + + def test_delete_zone_v1(self) -> None: + """Test case for delete_zone_v1 + + Delete Zone + """ + pass + + def test_edit_zone_v1(self) -> None: + """Test case for edit_zone_v1 + + Update Zone + """ + pass + + def test_get_zone_by_id_v1(self) -> None: + """Test case for get_zone_by_id_v1 + + Get Zone + """ + pass + + def test_list_zones_v1(self) -> None: + """Test case for list_zones_v1 + + List Zones + """ + pass + + +if __name__ == "__main__": + unittest.main() diff --git a/utils/sync_pagerduty_policies.py b/utils/sync_pagerduty_policies.py index eb720fd1..d8d01d52 100644 --- a/utils/sync_pagerduty_policies.py +++ b/utils/sync_pagerduty_policies.py @@ -15,26 +15,23 @@ # # Parse arguments # -parser = argparse.ArgumentParser(description='Synchronize PagerDuty escalation policies with Sysdig, ' - 'to make sure each escalation policy has a notification ' - 'channel enabled in Sysdig') -parser.add_argument('sysdig-token', nargs=1, help='Sysdig API token') -parser.add_argument('pagerduty-account-id', nargs=1, help='PagerDuty account ID') -parser.add_argument('pagerduty-access-key', nargs=1, help='PagerDuty API access key') -parser.add_argument( - '--link', - action='store_true', - help='Set to creat notification channels in Sysdig and services in PagerDuty for all escalation policies' +parser = argparse.ArgumentParser( + description="Synchronize PagerDuty escalation policies with Sysdig, " + "to make sure each escalation policy has a notification " + "channel enabled in Sysdig" ) +parser.add_argument("sysdig-token", nargs=1, help="Sysdig API token") +parser.add_argument("pagerduty-account-id", nargs=1, help="PagerDuty account ID") +parser.add_argument("pagerduty-access-key", nargs=1, help="PagerDuty API access key") parser.add_argument( - '--unlink', - action='store_true', - help='Set to remove notification channels connected to PagerDuty escalation policies' + "--link", + action="store_true", + help="Set to creat notification channels in Sysdig and services in PagerDuty for all escalation policies", ) parser.add_argument( - '--dry-run', - action='store_true', - help='Set to get a report of changes, without actually apply them') + "--unlink", action="store_true", help="Set to remove notification channels connected to PagerDuty escalation policies" +) +parser.add_argument("--dry-run", action="store_true", help="Set to get a report of changes, without actually apply them") args = vars(parser.parse_args()) @@ -53,22 +50,25 @@ def run(sysdig_token, pager_duty_id, pager_duty_token, link, unlink, dry_run): # ok, res = sysdig.list_notification_channels() if not ok: - print('\nUnable to fetch Sysdig notification channels') + print("\nUnable to fetch Sysdig notification channels") print(res) sys.exit(1) # # Find PagerDuty notification channels # - pager_duty_channels = [channel for channel in res['notificationChannels'] if channel['type'] == 'PAGER_DUTY'] - print('Found {} PagerDuty notification {} configured in Sysdig'.format( - len(pager_duty_channels), pluralize('channel', len(pager_duty_channels)))) + pager_duty_channels = [channel for channel in res["notificationChannels"] if channel["type"] == "PAGER_DUTY"] + print( + "Found {} PagerDuty notification {} configured in Sysdig".format( + len(pager_duty_channels), pluralize("channel", len(pager_duty_channels)) + ) + ) # print(json.dumps(pager_duty_channels, sort_keys=True, indent=4)) # Build map of notification channel -> integration key def get_integration_map(acc, channel): - acc[channel['options']['serviceKey']] = channel + acc[channel["options"]["serviceKey"]] = channel return acc integration_keys = reduce(get_integration_map, pager_duty_channels, {}) @@ -76,53 +76,51 @@ def get_integration_map(acc, channel): # # Get list of PagerDuty escalation policies # - escalation_policies = pager_duty.get( - '/escalation_policies')['escalation_policies'] - print('Found {} PagerDuty escalation {}'.format( - len(escalation_policies), - pluralize('policy', len(escalation_policies), 'policies'))) + escalation_policies = pager_duty.get("/escalation_policies")["escalation_policies"] + print( + "Found {} PagerDuty escalation {}".format( + len(escalation_policies), pluralize("policy", len(escalation_policies), "policies") + ) + ) escalation_policies_map = {} for escalation_policy in escalation_policies: - escalation_policies_map[escalation_policy['id']] = escalation_policy + escalation_policies_map[escalation_policy["id"]] = escalation_policy # print(json.dumps(escalation_policies, sort_keys=True, indent=4)) # # Get list of PagerDuty services # - services = pager_duty.get('/services', {'include[]': ['integrations']})['services'] - print('Found {} PagerDuty {}'.format( - len(services), pluralize('service', len(services)))) + services = pager_duty.get("/services", {"include[]": ["integrations"]})["services"] + print("Found {} PagerDuty {}".format(len(services), pluralize("service", len(services)))) # print(json.dumps(services, sort_keys=True, indent=4)) # # Get Sysdig vendor configuration # - sysdig_vendor = pager_duty.get('/vendors', {'query': 'sysdig', 'limit': 1, - 'offset': 0, 'total': 'false'})['vendors'][0] + sysdig_vendor = pager_duty.get("/vendors", {"query": "sysdig", "limit": 1, "offset": 0, "total": "false"})["vendors"][0] # # Get integration details # for service in services: - for integration in service['integrations']: - integration['details'] = pager_duty.get( - '/services/{}/integrations/{}'.format(service['id'], integration['id']))['integration'] + for integration in service["integrations"]: + integration["details"] = pager_duty.get("/services/{}/integrations/{}".format(service["id"], integration["id"]))[ + "integration" + ] # # Find integrations with Sysdig # service_integration_keys = {} for service in services: - service['sysdig_integrations'] = [integration for integration in service['integrations'] - if - 'vendor' in integration and integration['vendor'] and integration['vendor'][ - 'id'] == sysdig_vendor['id']] + service["sysdig_integrations"] = [ + integration + for integration in service["integrations"] + if "vendor" in integration and integration["vendor"] and integration["vendor"]["id"] == sysdig_vendor["id"] + ] - for integration in service['sysdig_integrations']: - service_integration_keys[integration['integration_key']] = { - 'service': service, - 'integration': integration - } + for integration in service["sysdig_integrations"]: + service_integration_keys[integration["integration_key"]] = {"service": service, "integration": integration} # # Get actions @@ -134,164 +132,183 @@ def get_integration_map(acc, channel): # delete all PagerDuty notification channels in Sysdig # for channel in pager_duty_channels: - actions.append({ - 'info': 'Sysdig: Delete channel "{}" ({})'.format(channel['name'], channel['id']), - 'fn': actions_factory.delete_notification_channel(channel) - }) + actions.append( + { + "info": 'Sysdig: Delete channel "{}" ({})'.format(channel["name"], channel["id"]), + "fn": actions_factory.delete_notification_channel(channel), + } + ) # # delete integration with Sysdig # for service in services: - if service['sysdig_integrations']: - if len(service['sysdig_integrations']) == len(service['integrations']): + if service["sysdig_integrations"]: + if len(service["sysdig_integrations"]) == len(service["integrations"]): # # service connected to Sysdig only: delete service # - actions.append({ - 'info': 'PagerDuty: Delete service "{}" ({})'.format(service['name'], service['id']), - 'fn': actions_factory.delete_service(service['id']) - }) + actions.append( + { + "info": 'PagerDuty: Delete service "{}" ({})'.format(service["name"], service["id"]), + "fn": actions_factory.delete_service(service["id"]), + } + ) else: # # service with some integrations with Sysdig: delete individual integrations # - for integration in service['sysdig_integrations']: + for integration in service["sysdig_integrations"]: actions.append( { - 'info': 'PagerDuty: Delete integration "{}" ({}) in service "{}" ({})'.format( - integration['name'], - integration['id'], - service['name'], - service['id']), - 'fn': actions_factory.delete_integration( - service['id'], - integration['id'])}) + "info": 'PagerDuty: Delete integration "{}" ({}) in service "{}" ({})'.format( + integration["name"], integration["id"], service["name"], service["id"] + ), + "fn": actions_factory.delete_integration(service["id"], integration["id"]), + } + ) if link: # # delete all PagerDuty notification channels in Sysdig that do NOT have an integration in PagerDuty # for channel in pager_duty_channels: - if not channel['options']['serviceKey'] in service_integration_keys: - actions.append({ - 'info': 'Remove notification channel "{}" not connected to any integration'.format(channel['name']), - 'fn': actions_factory.delete_notification_channel(channel) - }) + if not channel["options"]["serviceKey"] in service_integration_keys: + actions.append( + { + "info": 'Remove notification channel "{}" not connected to any integration'.format(channel["name"]), + "fn": actions_factory.delete_notification_channel(channel), + } + ) for policy in escalation_policies: - service_name = '{} (Sysdig)'.format(policy['name']) + service_name = "{} (Sysdig)".format(policy["name"]) - policy_services = [service for service in services if service['escalation_policy']['id'] == policy['id']] - sysdig_services = [service for service in policy_services if service['sysdig_integrations']] + policy_services = [service for service in services if service["escalation_policy"]["id"] == policy["id"]] + sysdig_services = [service for service in policy_services if service["sysdig_integrations"]] disconnected_services = [] for service in sysdig_services: - for integration in service['integrations']: - if integration['vendor'] and \ - integration['vendor']['id'] == sysdig_vendor['id'] and \ - integration['integration_key'] not in integration_keys: - disconnected_services.append({ - 'service': service, - 'integration': integration - }) + for integration in service["integrations"]: + if ( + integration["vendor"] + and integration["vendor"]["id"] == sysdig_vendor["id"] + and integration["integration_key"] not in integration_keys + ): + disconnected_services.append({"service": service, "integration": integration}) if not sysdig_services: # # create service and integration in PagerDuty, and notification channel in Sysdig # - actions.append({'info': 'Create service, integration, and notification channel for policy "{}"'.format( - policy['name']), 'fn': actions_factory.create_all(policy, sysdig_vendor)}) + actions.append( + { + "info": 'Create service, integration, and notification channel for policy "{}"'.format(policy["name"]), + "fn": actions_factory.create_all(policy, sysdig_vendor), + } + ) elif disconnected_services: # # create notification channel to disconnected integration # actions.append( { - 'info': 'Restore notification channel for disconnected service "{}" for policy "{}"'.format( - disconnected_services[0]['service']['name'], - policy['name']), - 'fn': actions_factory.create_notification_channel( - policy, - disconnected_services[0]['service'], - disconnected_services[0]['integration'])}) + "info": 'Restore notification channel for disconnected service "{}" for policy "{}"'.format( + disconnected_services[0]["service"]["name"], policy["name"] + ), + "fn": actions_factory.create_notification_channel( + policy, disconnected_services[0]["service"], disconnected_services[0]["integration"] + ), + } + ) else: for service in sysdig_services: - for integration in service['integrations']: - if integration['vendor'] and \ - integration['vendor']['id'] == sysdig_vendor['id'] and \ - integration['integration_key'] in integration_keys: - channel = integration_keys[integration['integration_key']] - if channel['name'] != policy['name']: + for integration in service["integrations"]: + if ( + integration["vendor"] + and integration["vendor"]["id"] == sysdig_vendor["id"] + and integration["integration_key"] in integration_keys + ): + channel = integration_keys[integration["integration_key"]] + if channel["name"] != policy["name"]: # # rename channel to match new policy name # - actions.append({ - 'info': 'Rename notification channel "{}" to policy name "{}"'.format( - channel['name'], policy['name']), - 'fn': actions_factory.rename_notification_channel(channel, policy['name'], - service_name) - }) - elif channel['options']['serviceName'] != service_name: + actions.append( + { + "info": 'Rename notification channel "{}" to policy name "{}"'.format( + channel["name"], policy["name"] + ), + "fn": actions_factory.rename_notification_channel(channel, policy["name"], service_name), + } + ) + elif channel["options"]["serviceName"] != service_name: # # rename channel service to service name # - actions.append({ - 'info': 'Rename channel service "{}" to service name "{}"'.format(service['name'], - service_name), - 'fn': actions_factory.rename_notification_channel(channel, policy['name'], - service_name) - }) - - if len(service['integrations']) == 1 and service['name'] != service_name: + actions.append( + { + "info": 'Rename channel service "{}" to service name "{}"'.format( + service["name"], service_name + ), + "fn": actions_factory.rename_notification_channel(channel, policy["name"], service_name), + } + ) + + if len(service["integrations"]) == 1 and service["name"] != service_name: # # rename service to match new policy name # - actions.append({ - 'info': 'Rename service "{}" to "{}"'.format(service['name'], service_name), - 'fn': actions_factory.rename_service(service, service_name) - }) + actions.append( + { + "info": 'Rename service "{}" to "{}"'.format(service["name"], service_name), + "fn": actions_factory.rename_service(service, service_name), + } + ) if actions: # # Run action, or just print the task in dry mode # - print('') - print('Action items:') + print("") + print("Action items:") for action in actions: if dry_run: - print('\t* {}'.format(action['info'])) + print("\t* {}".format(action["info"])) else: - print('\t* {}...'.format(action['info'])) - action['fn']() - print('\t Done!') + print("\t* {}...".format(action["info"])) + action["fn"]() + print("\t Done!") if dry_run: - print('\nTo apply changes, execute the same command without "--dry-run" parameter:\npython {}'.format( - ' '.join([arg for arg in sys.argv if arg != '--dry-run']))) + print( + '\nTo apply changes, execute the same command without "--dry-run" parameter:\npython {}'.format( + " ".join([arg for arg in sys.argv if arg != "--dry-run"]) + ) + ) else: if unlink: - print('All escalation policies have been disconnected from Sysdig!') + print("All escalation policies have been disconnected from Sysdig!") if link: - print('All escalation policies are already connected to Sysdig!') + print("All escalation policies are already connected to Sysdig!") -class PagerDutyAPI(): +class PagerDutyAPI: def __init__(self, token): - self._base_url = 'https://api.pagerduty.com' + self._base_url = "https://api.pagerduty.com" self._token = token def get(self, endpoint, params=None): - return self._base_request('get', endpoint, params=params) + return self._base_request("get", endpoint, params=params) def post(self, endpoint, data=None): - return self._base_request('post', endpoint, data=data) + return self._base_request("post", endpoint, data=data) def put(self, endpoint, data=None): - return self._base_request('put', endpoint, data=data) + return self._base_request("put", endpoint, data=data) def delete(self, endpoint, params=None): - return self._base_request('delete', endpoint, params=params) + return self._base_request("delete", endpoint, params=params) def _base_request(self, method, endpoint, params=None, data=None): url = self._get_url(endpoint) @@ -302,8 +319,9 @@ def _base_request(self, method, endpoint, params=None, data=None): def _handle_response(self, response, url): if response.status_code >= 300: - error = 'PagerDuty API request {} {} failed: {}, {}'.format( - response.request.method, url, response.status_code, response.content) + error = "PagerDuty API request {} {} failed: {}, {}".format( + response.request.method, url, response.status_code, response.content + ) print(error) raise Exception(error) @@ -316,17 +334,17 @@ def _parse_response(self, response): return response.json() def _get_url(self, endpoint): - return '{}{}'.format(self._base_url, endpoint) + return "{}{}".format(self._base_url, endpoint) def _get_headers(self): return { - 'Accept': 'application/vnd.pagerduty+json;version=2', - 'Content-Type': 'application/json', - 'Authorization': 'Token token={}'.format(self._token) + "Accept": "application/vnd.pagerduty+json;version=2", + "Content-Type": "application/json", + "Authorization": "Token token={}".format(self._token), } -class ActionFactory(): +class ActionFactory: def __init__(self, sysdig, pager_duty, pager_duty_id): self._sysdig = sysdig self._pager_duty = pager_duty @@ -334,13 +352,13 @@ def __init__(self, sysdig, pager_duty, pager_duty_id): def delete_service(self, service_id): def fn(): - self._pager_duty.delete('/services/{}'.format(service_id)) + self._pager_duty.delete("/services/{}".format(service_id)) return fn def delete_integration(self, service_id, integration_id): def fn(): - self._pager_duty.delete('/services/{}/integrations/{}'.format(service_id, integration_id)) + self._pager_duty.delete("/services/{}/integrations/{}".format(service_id, integration_id)) return fn @@ -352,114 +370,103 @@ def fn(): def create_all(self, policy, sysdig_vendor): def fn(): - new_service = self._pager_duty.post('/services', { - 'service': { - 'type': 'service', - 'name': '{} (Sysdig)'.format(policy['name']), - 'auto_resolve_timeout': None, - 'acknowledgement_timeout': None, - 'status': 'active', - 'escalation_policy': { - 'id': policy['id'], - 'type': 'escalation_policy_reference' - }, - 'incident_urgency_rule': { - 'type': 'use_support_hours', - 'during_support_hours': { - 'type': 'constant', - 'urgency': 'high' + new_service = self._pager_duty.post( + "/services", + { + "service": { + "type": "service", + "name": "{} (Sysdig)".format(policy["name"]), + "auto_resolve_timeout": None, + "acknowledgement_timeout": None, + "status": "active", + "escalation_policy": {"id": policy["id"], "type": "escalation_policy_reference"}, + "incident_urgency_rule": { + "type": "use_support_hours", + "during_support_hours": {"type": "constant", "urgency": "high"}, + "outside_support_hours": {"type": "constant", "urgency": "low"}, }, - 'outside_support_hours': { - 'type': 'constant', - 'urgency': 'low' - } - }, - 'support_hours': { - 'type': 'fixed_time_per_day', - 'time_zone': 'America/Lima', - 'start_time': '09:00:00', - 'end_time': '17:00:00', - 'days_of_week': [ - 1, - 2, - 3, - 4, - 5 - ] - }, - 'scheduled_actions': [ - { - 'type': 'urgency_change', - 'at': { - 'type': 'named_time', - 'name': 'support_hours_start' - }, - 'to_urgency': 'high' - } - ], - 'alert_creation': 'create_alerts_and_incidents', - 'alert_grouping': 'time', - 'alert_grouping_timeout': 2 - } - })['service'] - - new_integration = self._pager_duty.post('/services/{}/integrations'.format(new_service['id']), { - 'integration': { - 'type': 'integration_inbound_integration', - 'name': 'Sysdig', - 'vendor': { - 'id': sysdig_vendor['id'], - 'type': 'vendor' - }, - 'service': { - 'id': new_service['id'], - 'summary': new_service['summary'], - 'type': new_service['type'], - 'self': new_service['self'], - 'html_url': new_service['html_url'], + "support_hours": { + "type": "fixed_time_per_day", + "time_zone": "America/Lima", + "start_time": "09:00:00", + "end_time": "17:00:00", + "days_of_week": [1, 2, 3, 4, 5], + }, + "scheduled_actions": [ + { + "type": "urgency_change", + "at": {"type": "named_time", "name": "support_hours_start"}, + "to_urgency": "high", + } + ], + "alert_creation": "create_alerts_and_incidents", + "alert_grouping": "time", + "alert_grouping_timeout": 2, } + }, + )["service"] + + new_integration = self._pager_duty.post( + "/services/{}/integrations".format(new_service["id"]), + { + "integration": { + "type": "integration_inbound_integration", + "name": "Sysdig", + "vendor": {"id": sysdig_vendor["id"], "type": "vendor"}, + "service": { + "id": new_service["id"], + "summary": new_service["summary"], + "type": new_service["type"], + "self": new_service["self"], + "html_url": new_service["html_url"], + }, + } + }, + )["integration"] + + self._sysdig.create_notification_channel( + { + "type": "PAGER_DUTY", + "enabled": True, + "sendTestNotification": False, + "name": policy["name"], + "options": { + "account": self._pager_duty_id, + "serviceKey": new_integration["integration_key"], + "serviceName": new_service["name"], + "notifyOnOk": True, + "notifyOnResolve": True, + }, } - })['integration'] - - self._sysdig.create_notification_channel({ - 'type': 'PAGER_DUTY', - 'enabled': True, - 'sendTestNotification': False, - 'name': policy['name'], - 'options': { - 'account': self._pager_duty_id, - 'serviceKey': new_integration['integration_key'], - 'serviceName': new_service['name'], - 'notifyOnOk': True, - 'notifyOnResolve': True - } - }) + ) return fn def create_notification_channel(self, policy, service, integration): def fn(): - self._sysdig.create_notification_channel({ - "type": "PAGER_DUTY", - "enabled": True, - "sendTestNotification": False, - "name": policy['name'], - "options": { - "account": self._pager_duty_id, - "serviceKey": integration['integration_key'], - "serviceName": service['name'], - "notifyOnOk": True, - "notifyOnResolve": True + self._sysdig.create_notification_channel( + { + "type": "PAGER_DUTY", + "enabled": True, + "sendTestNotification": False, + "name": policy["name"], + "options": { + "account": self._pager_duty_id, + "serviceKey": integration["integration_key"], + "serviceName": service["name"], + "notifyOnOk": True, + "notifyOnResolve": True, + }, } - }) + ) return fn def rename_notification_channel(self, channel, channel_name, service_name): def fn(): new_channel = copy.deepcopy(channel) - new_channel['name'] = channel_name - new_channel['options']['serviceName'] = service_name + new_channel["name"] = channel_name + new_channel["options"]["serviceName"] = service_name self._sysdig.update_notification_channel(new_channel) return fn @@ -467,8 +474,8 @@ def fn(): def rename_service(self, service, service_name): def fn(): new_service = copy.deepcopy(service) - new_service['name'] = service_name - self._pager_duty.put('/services/{}'.format(service['id']), new_service) + new_service["name"] = service_name + self._pager_duty.put("/services/{}".format(service["id"]), new_service) return fn @@ -478,13 +485,19 @@ def pluralize(term, count, plural=None): return term else: if plural is None: - return '{}s'.format(term) + return "{}s".format(term) else: return plural # let's get started! -print('') - -run(args['sysdig-token'][0], args['pagerduty-account-id'][0], - args['pagerduty-access-key'][0], args['link'], args['unlink'], args['dry_run']) +print("") + +run( + args["sysdig-token"][0], + args["pagerduty-account-id"][0], + args["pagerduty-access-key"][0], + args["link"], + args["unlink"], + args["dry_run"], +) diff --git a/uv.lock b/uv.lock new file mode 100644 index 00000000..1cdbed35 --- /dev/null +++ b/uv.lock @@ -0,0 +1,897 @@ +version = 1 +revision = 2 +requires-python = ">=3.9" +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version < '3.10'", +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "args" +version = "0.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/1c/b701b3f4bd8d3667df8342f311b3efaeab86078a840fb826bd204118cc6b/args-0.1.0.tar.gz", hash = "sha256:a785b8d837625e9b61c39108532d95b85274acd679693b71ebb5156848fcf814", size = 3048, upload-time = "2012-05-08T07:41:57.541Z" } + +[[package]] +name = "cachetools" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/89/817ad5d0411f136c484d535952aef74af9b25e0d99e90cdffbe121e6d628/cachetools-6.1.0.tar.gz", hash = "sha256:b4c4f404392848db3ce7aac34950d17be4d864da4b8b66911008e430bc544587", size = 30714, upload-time = "2025-06-16T18:51:03.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/f0/2ef431fe4141f5e334759d73e81120492b23b2824336883a91ac04ba710b/cachetools-6.1.0-py3-none-any.whl", hash = "sha256:1c7bb3cf9193deaf3508b7c5f2a79986c13ea38965c5adcff1f84519cf39163e", size = 11189, upload-time = "2025-06-16T18:51:01.514Z" }, +] + +[[package]] +name = "certifi" +version = "2025.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload-time = "2025-08-03T03:07:47.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload-time = "2025-08-03T03:07:45.777Z" }, +] + +[[package]] +name = "chardet" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload-time = "2023-08-01T19:23:02.662Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload-time = "2023-08-01T19:23:00.661Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371, upload-time = "2025-08-09T07:57:28.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/98/f3b8013223728a99b908c9344da3aa04ee6e3fa235f19409033eda92fb78/charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72", size = 207695, upload-time = "2025-08-09T07:55:36.452Z" }, + { url = "https://files.pythonhosted.org/packages/21/40/5188be1e3118c82dcb7c2a5ba101b783822cfb413a0268ed3be0468532de/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe", size = 147153, upload-time = "2025-08-09T07:55:38.467Z" }, + { url = "https://files.pythonhosted.org/packages/37/60/5d0d74bc1e1380f0b72c327948d9c2aca14b46a9efd87604e724260f384c/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601", size = 160428, upload-time = "2025-08-09T07:55:40.072Z" }, + { url = "https://files.pythonhosted.org/packages/85/9a/d891f63722d9158688de58d050c59dc3da560ea7f04f4c53e769de5140f5/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c", size = 157627, upload-time = "2025-08-09T07:55:41.706Z" }, + { url = "https://files.pythonhosted.org/packages/65/1a/7425c952944a6521a9cfa7e675343f83fd82085b8af2b1373a2409c683dc/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2", size = 152388, upload-time = "2025-08-09T07:55:43.262Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c9/a2c9c2a355a8594ce2446085e2ec97fd44d323c684ff32042e2a6b718e1d/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0", size = 150077, upload-time = "2025-08-09T07:55:44.903Z" }, + { url = "https://files.pythonhosted.org/packages/3b/38/20a1f44e4851aa1c9105d6e7110c9d020e093dfa5836d712a5f074a12bf7/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0", size = 161631, upload-time = "2025-08-09T07:55:46.346Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fa/384d2c0f57edad03d7bec3ebefb462090d8905b4ff5a2d2525f3bb711fac/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0", size = 159210, upload-time = "2025-08-09T07:55:47.539Z" }, + { url = "https://files.pythonhosted.org/packages/33/9e/eca49d35867ca2db336b6ca27617deed4653b97ebf45dfc21311ce473c37/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a", size = 153739, upload-time = "2025-08-09T07:55:48.744Z" }, + { url = "https://files.pythonhosted.org/packages/2a/91/26c3036e62dfe8de8061182d33be5025e2424002125c9500faff74a6735e/charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f", size = 99825, upload-time = "2025-08-09T07:55:50.305Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c6/f05db471f81af1fa01839d44ae2a8bfeec8d2a8b4590f16c4e7393afd323/charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669", size = 107452, upload-time = "2025-08-09T07:55:51.461Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b5/991245018615474a60965a7c9cd2b4efbaabd16d582a5547c47ee1c7730b/charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b", size = 204483, upload-time = "2025-08-09T07:55:53.12Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2a/ae245c41c06299ec18262825c1569c5d3298fc920e4ddf56ab011b417efd/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64", size = 145520, upload-time = "2025-08-09T07:55:54.712Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a4/b3b6c76e7a635748c4421d2b92c7b8f90a432f98bda5082049af37ffc8e3/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91", size = 158876, upload-time = "2025-08-09T07:55:56.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e6/63bb0e10f90a8243c5def74b5b105b3bbbfb3e7bb753915fe333fb0c11ea/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f", size = 156083, upload-time = "2025-08-09T07:55:57.582Z" }, + { url = "https://files.pythonhosted.org/packages/87/df/b7737ff046c974b183ea9aa111b74185ac8c3a326c6262d413bd5a1b8c69/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07", size = 150295, upload-time = "2025-08-09T07:55:59.147Z" }, + { url = "https://files.pythonhosted.org/packages/61/f1/190d9977e0084d3f1dc169acd060d479bbbc71b90bf3e7bf7b9927dec3eb/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30", size = 148379, upload-time = "2025-08-09T07:56:00.364Z" }, + { url = "https://files.pythonhosted.org/packages/4c/92/27dbe365d34c68cfe0ca76f1edd70e8705d82b378cb54ebbaeabc2e3029d/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14", size = 160018, upload-time = "2025-08-09T07:56:01.678Z" }, + { url = "https://files.pythonhosted.org/packages/99/04/baae2a1ea1893a01635d475b9261c889a18fd48393634b6270827869fa34/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c", size = 157430, upload-time = "2025-08-09T07:56:02.87Z" }, + { url = "https://files.pythonhosted.org/packages/2f/36/77da9c6a328c54d17b960c89eccacfab8271fdaaa228305330915b88afa9/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae", size = 151600, upload-time = "2025-08-09T07:56:04.089Z" }, + { url = "https://files.pythonhosted.org/packages/64/d4/9eb4ff2c167edbbf08cdd28e19078bf195762e9bd63371689cab5ecd3d0d/charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849", size = 99616, upload-time = "2025-08-09T07:56:05.658Z" }, + { url = "https://files.pythonhosted.org/packages/f4/9c/996a4a028222e7761a96634d1820de8a744ff4327a00ada9c8942033089b/charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c", size = 107108, upload-time = "2025-08-09T07:56:07.176Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655, upload-time = "2025-08-09T07:56:08.475Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223, upload-time = "2025-08-09T07:56:09.708Z" }, + { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366, upload-time = "2025-08-09T07:56:11.326Z" }, + { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104, upload-time = "2025-08-09T07:56:13.014Z" }, + { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830, upload-time = "2025-08-09T07:56:14.428Z" }, + { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854, upload-time = "2025-08-09T07:56:16.051Z" }, + { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670, upload-time = "2025-08-09T07:56:17.314Z" }, + { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501, upload-time = "2025-08-09T07:56:18.641Z" }, + { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173, upload-time = "2025-08-09T07:56:20.289Z" }, + { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822, upload-time = "2025-08-09T07:56:21.551Z" }, + { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543, upload-time = "2025-08-09T07:56:23.115Z" }, + { url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326, upload-time = "2025-08-09T07:56:24.721Z" }, + { url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008, upload-time = "2025-08-09T07:56:26.004Z" }, + { url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196, upload-time = "2025-08-09T07:56:27.25Z" }, + { url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819, upload-time = "2025-08-09T07:56:28.515Z" }, + { url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350, upload-time = "2025-08-09T07:56:29.716Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644, upload-time = "2025-08-09T07:56:30.984Z" }, + { url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468, upload-time = "2025-08-09T07:56:32.252Z" }, + { url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187, upload-time = "2025-08-09T07:56:33.481Z" }, + { url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699, upload-time = "2025-08-09T07:56:34.739Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580, upload-time = "2025-08-09T07:56:35.981Z" }, + { url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366, upload-time = "2025-08-09T07:56:37.339Z" }, + { url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342, upload-time = "2025-08-09T07:56:38.687Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995, upload-time = "2025-08-09T07:56:40.048Z" }, + { url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640, upload-time = "2025-08-09T07:56:41.311Z" }, + { url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636, upload-time = "2025-08-09T07:56:43.195Z" }, + { url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939, upload-time = "2025-08-09T07:56:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580, upload-time = "2025-08-09T07:56:46.684Z" }, + { url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870, upload-time = "2025-08-09T07:56:47.941Z" }, + { url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797, upload-time = "2025-08-09T07:56:49.756Z" }, + { url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224, upload-time = "2025-08-09T07:56:51.369Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086, upload-time = "2025-08-09T07:56:52.722Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400, upload-time = "2025-08-09T07:56:55.172Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ca/9a0983dd5c8e9733565cf3db4df2b0a2e9a82659fd8aa2a868ac6e4a991f/charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05", size = 207520, upload-time = "2025-08-09T07:57:11.026Z" }, + { url = "https://files.pythonhosted.org/packages/39/c6/99271dc37243a4f925b09090493fb96c9333d7992c6187f5cfe5312008d2/charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e", size = 147307, upload-time = "2025-08-09T07:57:12.4Z" }, + { url = "https://files.pythonhosted.org/packages/e4/69/132eab043356bba06eb333cc2cc60c6340857d0a2e4ca6dc2b51312886b3/charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99", size = 160448, upload-time = "2025-08-09T07:57:13.712Z" }, + { url = "https://files.pythonhosted.org/packages/04/9a/914d294daa4809c57667b77470533e65def9c0be1ef8b4c1183a99170e9d/charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7", size = 157758, upload-time = "2025-08-09T07:57:14.979Z" }, + { url = "https://files.pythonhosted.org/packages/b0/a8/6f5bcf1bcf63cb45625f7c5cadca026121ff8a6c8a3256d8d8cd59302663/charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7", size = 152487, upload-time = "2025-08-09T07:57:16.332Z" }, + { url = "https://files.pythonhosted.org/packages/c4/72/d3d0e9592f4e504f9dea08b8db270821c909558c353dc3b457ed2509f2fb/charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19", size = 150054, upload-time = "2025-08-09T07:57:17.576Z" }, + { url = "https://files.pythonhosted.org/packages/20/30/5f64fe3981677fe63fa987b80e6c01042eb5ff653ff7cec1b7bd9268e54e/charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312", size = 161703, upload-time = "2025-08-09T07:57:20.012Z" }, + { url = "https://files.pythonhosted.org/packages/e1/ef/dd08b2cac9284fd59e70f7d97382c33a3d0a926e45b15fc21b3308324ffd/charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc", size = 159096, upload-time = "2025-08-09T07:57:21.329Z" }, + { url = "https://files.pythonhosted.org/packages/45/8c/dcef87cfc2b3f002a6478f38906f9040302c68aebe21468090e39cde1445/charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34", size = 153852, upload-time = "2025-08-09T07:57:22.608Z" }, + { url = "https://files.pythonhosted.org/packages/63/86/9cbd533bd37883d467fcd1bd491b3547a3532d0fbb46de2b99feeebf185e/charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432", size = 99840, upload-time = "2025-08-09T07:57:23.883Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d6/7e805c8e5c46ff9729c49950acc4ee0aeb55efb8b3a56687658ad10c3216/charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca", size = 107438, upload-time = "2025-08-09T07:57:25.287Z" }, + { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175, upload-time = "2025-08-09T07:57:26.864Z" }, +] + +[[package]] +name = "clint" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "args" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/b4/41ecb1516f1ba728f39ee7062b9dac1352d39823f513bb6f9e8aeb86e26d/clint-0.5.1.tar.gz", hash = "sha256:05224c32b1075563d0b16d0015faaf9da43aa214e4a2140e51f08789e7a4c5aa", size = 29355, upload-time = "2015-08-25T16:11:19.237Z" } + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "coverage" +version = "7.10.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/2c/253cc41cd0f40b84c1c34c5363e0407d73d4a1cae005fed6db3b823175bd/coverage-7.10.3.tar.gz", hash = "sha256:812ba9250532e4a823b070b0420a36499859542335af3dca8f47fc6aa1a05619", size = 822936, upload-time = "2025-08-10T21:27:39.968Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/44/e14576c34b37764c821866909788ff7463228907ab82bae188dab2b421f1/coverage-7.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:53808194afdf948c462215e9403cca27a81cf150d2f9b386aee4dab614ae2ffe", size = 215964, upload-time = "2025-08-10T21:25:22.828Z" }, + { url = "https://files.pythonhosted.org/packages/e6/15/f4f92d9b83100903efe06c9396ee8d8bdba133399d37c186fc5b16d03a87/coverage-7.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4d1b837d1abf72187a61645dbf799e0d7705aa9232924946e1f57eb09a3bf00", size = 216361, upload-time = "2025-08-10T21:25:25.603Z" }, + { url = "https://files.pythonhosted.org/packages/e9/3a/c92e8cd5e89acc41cfc026dfb7acedf89661ce2ea1ee0ee13aacb6b2c20c/coverage-7.10.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2a90dd4505d3cc68b847ab10c5ee81822a968b5191664e8a0801778fa60459fa", size = 243115, upload-time = "2025-08-10T21:25:27.09Z" }, + { url = "https://files.pythonhosted.org/packages/23/53/c1d8c2778823b1d95ca81701bb8f42c87dc341a2f170acdf716567523490/coverage-7.10.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d52989685ff5bf909c430e6d7f6550937bc6d6f3e6ecb303c97a86100efd4596", size = 244927, upload-time = "2025-08-10T21:25:28.77Z" }, + { url = "https://files.pythonhosted.org/packages/79/41/1e115fd809031f432b4ff8e2ca19999fb6196ab95c35ae7ad5e07c001130/coverage-7.10.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdb558a1d97345bde3a9f4d3e8d11c9e5611f748646e9bb61d7d612a796671b5", size = 246784, upload-time = "2025-08-10T21:25:30.195Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b2/0eba9bdf8f1b327ae2713c74d4b7aa85451bb70622ab4e7b8c000936677c/coverage-7.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c9e6331a8f09cb1fc8bda032752af03c366870b48cce908875ba2620d20d0ad4", size = 244828, upload-time = "2025-08-10T21:25:31.785Z" }, + { url = "https://files.pythonhosted.org/packages/1f/cc/74c56b6bf71f2a53b9aa3df8bc27163994e0861c065b4fe3a8ac290bed35/coverage-7.10.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:992f48bf35b720e174e7fae916d943599f1a66501a2710d06c5f8104e0756ee1", size = 242844, upload-time = "2025-08-10T21:25:33.37Z" }, + { url = "https://files.pythonhosted.org/packages/b6/7b/ac183fbe19ac5596c223cb47af5737f4437e7566100b7e46cc29b66695a5/coverage-7.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c5595fc4ad6a39312c786ec3326d7322d0cf10e3ac6a6df70809910026d67cfb", size = 243721, upload-time = "2025-08-10T21:25:34.939Z" }, + { url = "https://files.pythonhosted.org/packages/57/96/cb90da3b5a885af48f531905234a1e7376acfc1334242183d23154a1c285/coverage-7.10.3-cp310-cp310-win32.whl", hash = "sha256:9e92fa1f2bd5a57df9d00cf9ce1eb4ef6fccca4ceabec1c984837de55329db34", size = 218481, upload-time = "2025-08-10T21:25:36.935Z" }, + { url = "https://files.pythonhosted.org/packages/15/67/1ba4c7d75745c4819c54a85766e0a88cc2bff79e1760c8a2debc34106dc2/coverage-7.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:b96524d6e4a3ce6a75c56bb15dbd08023b0ae2289c254e15b9fbdddf0c577416", size = 219382, upload-time = "2025-08-10T21:25:38.267Z" }, + { url = "https://files.pythonhosted.org/packages/87/04/810e506d7a19889c244d35199cbf3239a2f952b55580aa42ca4287409424/coverage-7.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2ff2e2afdf0d51b9b8301e542d9c21a8d084fd23d4c8ea2b3a1b3c96f5f7397", size = 216075, upload-time = "2025-08-10T21:25:39.891Z" }, + { url = "https://files.pythonhosted.org/packages/2e/50/6b3fbab034717b4af3060bdaea6b13dfdc6b1fad44b5082e2a95cd378a9a/coverage-7.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:18ecc5d1b9a8c570f6c9b808fa9a2b16836b3dd5414a6d467ae942208b095f85", size = 216476, upload-time = "2025-08-10T21:25:41.137Z" }, + { url = "https://files.pythonhosted.org/packages/c7/96/4368c624c1ed92659812b63afc76c492be7867ac8e64b7190b88bb26d43c/coverage-7.10.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1af4461b25fe92889590d438905e1fc79a95680ec2a1ff69a591bb3fdb6c7157", size = 246865, upload-time = "2025-08-10T21:25:42.408Z" }, + { url = "https://files.pythonhosted.org/packages/34/12/5608f76070939395c17053bf16e81fd6c06cf362a537ea9d07e281013a27/coverage-7.10.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3966bc9a76b09a40dc6063c8b10375e827ea5dfcaffae402dd65953bef4cba54", size = 248800, upload-time = "2025-08-10T21:25:44.098Z" }, + { url = "https://files.pythonhosted.org/packages/ce/52/7cc90c448a0ad724283cbcdfd66b8d23a598861a6a22ac2b7b8696491798/coverage-7.10.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:205a95b87ef4eb303b7bc5118b47b6b6604a644bcbdb33c336a41cfc0a08c06a", size = 250904, upload-time = "2025-08-10T21:25:45.384Z" }, + { url = "https://files.pythonhosted.org/packages/e6/70/9967b847063c1c393b4f4d6daab1131558ebb6b51f01e7df7150aa99f11d/coverage-7.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b3801b79fb2ad61e3c7e2554bab754fc5f105626056980a2b9cf3aef4f13f84", size = 248597, upload-time = "2025-08-10T21:25:47.059Z" }, + { url = "https://files.pythonhosted.org/packages/2d/fe/263307ce6878b9ed4865af42e784b42bb82d066bcf10f68defa42931c2c7/coverage-7.10.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0dc69c60224cda33d384572da945759756e3f06b9cdac27f302f53961e63160", size = 246647, upload-time = "2025-08-10T21:25:48.334Z" }, + { url = "https://files.pythonhosted.org/packages/8e/27/d27af83ad162eba62c4eb7844a1de6cf7d9f6b185df50b0a3514a6f80ddd/coverage-7.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a83d4f134bab2c7ff758e6bb1541dd72b54ba295ced6a63d93efc2e20cb9b124", size = 247290, upload-time = "2025-08-10T21:25:49.945Z" }, + { url = "https://files.pythonhosted.org/packages/28/83/904ff27e15467a5622dbe9ad2ed5831b4a616a62570ec5924d06477dff5a/coverage-7.10.3-cp311-cp311-win32.whl", hash = "sha256:54e409dd64e5302b2a8fdf44ec1c26f47abd1f45a2dcf67bd161873ee05a59b8", size = 218521, upload-time = "2025-08-10T21:25:51.208Z" }, + { url = "https://files.pythonhosted.org/packages/b8/29/bc717b8902faaccf0ca486185f0dcab4778561a529dde51cb157acaafa16/coverage-7.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:30c601610a9b23807c5e9e2e442054b795953ab85d525c3de1b1b27cebeb2117", size = 219412, upload-time = "2025-08-10T21:25:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7a/5a1a7028c11bb589268c656c6b3f2bbf06e0aced31bbdf7a4e94e8442cc0/coverage-7.10.3-cp311-cp311-win_arm64.whl", hash = "sha256:dabe662312a97958e932dee056f2659051d822552c0b866823e8ba1c2fe64770", size = 218091, upload-time = "2025-08-10T21:25:54.102Z" }, + { url = "https://files.pythonhosted.org/packages/b8/62/13c0b66e966c43d7aa64dadc8cd2afa1f5a2bf9bb863bdabc21fb94e8b63/coverage-7.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:449c1e2d3a84d18bd204258a897a87bc57380072eb2aded6a5b5226046207b42", size = 216262, upload-time = "2025-08-10T21:25:55.367Z" }, + { url = "https://files.pythonhosted.org/packages/b5/f0/59fdf79be7ac2f0206fc739032f482cfd3f66b18f5248108ff192741beae/coverage-7.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d4f9ce50b9261ad196dc2b2e9f1fbbee21651b54c3097a25ad783679fd18294", size = 216496, upload-time = "2025-08-10T21:25:56.759Z" }, + { url = "https://files.pythonhosted.org/packages/34/b1/bc83788ba31bde6a0c02eb96bbc14b2d1eb083ee073beda18753fa2c4c66/coverage-7.10.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4dd4564207b160d0d45c36a10bc0a3d12563028e8b48cd6459ea322302a156d7", size = 247989, upload-time = "2025-08-10T21:25:58.067Z" }, + { url = "https://files.pythonhosted.org/packages/0c/29/f8bdf88357956c844bd872e87cb16748a37234f7f48c721dc7e981145eb7/coverage-7.10.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5ca3c9530ee072b7cb6a6ea7b640bcdff0ad3b334ae9687e521e59f79b1d0437", size = 250738, upload-time = "2025-08-10T21:25:59.406Z" }, + { url = "https://files.pythonhosted.org/packages/ae/df/6396301d332b71e42bbe624670af9376f63f73a455cc24723656afa95796/coverage-7.10.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b6df359e59fa243c9925ae6507e27f29c46698359f45e568fd51b9315dbbe587", size = 251868, upload-time = "2025-08-10T21:26:00.65Z" }, + { url = "https://files.pythonhosted.org/packages/91/21/d760b2df6139b6ef62c9cc03afb9bcdf7d6e36ed4d078baacffa618b4c1c/coverage-7.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a181e4c2c896c2ff64c6312db3bda38e9ade2e1aa67f86a5628ae85873786cea", size = 249790, upload-time = "2025-08-10T21:26:02.009Z" }, + { url = "https://files.pythonhosted.org/packages/69/91/5dcaa134568202397fa4023d7066d4318dc852b53b428052cd914faa05e1/coverage-7.10.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a374d4e923814e8b72b205ef6b3d3a647bb50e66f3558582eda074c976923613", size = 247907, upload-time = "2025-08-10T21:26:03.757Z" }, + { url = "https://files.pythonhosted.org/packages/38/ed/70c0e871cdfef75f27faceada461206c1cc2510c151e1ef8d60a6fedda39/coverage-7.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:daeefff05993e5e8c6e7499a8508e7bd94502b6b9a9159c84fd1fe6bce3151cb", size = 249344, upload-time = "2025-08-10T21:26:05.11Z" }, + { url = "https://files.pythonhosted.org/packages/5f/55/c8a273ed503cedc07f8a00dcd843daf28e849f0972e4c6be4c027f418ad6/coverage-7.10.3-cp312-cp312-win32.whl", hash = "sha256:187ecdcac21f9636d570e419773df7bd2fda2e7fa040f812e7f95d0bddf5f79a", size = 218693, upload-time = "2025-08-10T21:26:06.534Z" }, + { url = "https://files.pythonhosted.org/packages/94/58/dd3cfb2473b85be0b6eb8c5b6d80b6fc3f8f23611e69ef745cef8cf8bad5/coverage-7.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:4a50ad2524ee7e4c2a95e60d2b0b83283bdfc745fe82359d567e4f15d3823eb5", size = 219501, upload-time = "2025-08-10T21:26:08.195Z" }, + { url = "https://files.pythonhosted.org/packages/56/af/7cbcbf23d46de6f24246e3f76b30df099d05636b30c53c158a196f7da3ad/coverage-7.10.3-cp312-cp312-win_arm64.whl", hash = "sha256:c112f04e075d3495fa3ed2200f71317da99608cbb2e9345bdb6de8819fc30571", size = 218135, upload-time = "2025-08-10T21:26:09.584Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ff/239e4de9cc149c80e9cc359fab60592365b8c4cbfcad58b8a939d18c6898/coverage-7.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b99e87304ffe0eb97c5308447328a584258951853807afdc58b16143a530518a", size = 216298, upload-time = "2025-08-10T21:26:10.973Z" }, + { url = "https://files.pythonhosted.org/packages/56/da/28717da68f8ba68f14b9f558aaa8f3e39ada8b9a1ae4f4977c8f98b286d5/coverage-7.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4af09c7574d09afbc1ea7da9dcea23665c01f3bc1b1feb061dac135f98ffc53a", size = 216546, upload-time = "2025-08-10T21:26:12.616Z" }, + { url = "https://files.pythonhosted.org/packages/de/bb/e1ade16b9e3f2d6c323faeb6bee8e6c23f3a72760a5d9af102ef56a656cb/coverage-7.10.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:488e9b50dc5d2aa9521053cfa706209e5acf5289e81edc28291a24f4e4488f46", size = 247538, upload-time = "2025-08-10T21:26:14.455Z" }, + { url = "https://files.pythonhosted.org/packages/ea/2f/6ae1db51dc34db499bfe340e89f79a63bd115fc32513a7bacdf17d33cd86/coverage-7.10.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:913ceddb4289cbba3a310704a424e3fb7aac2bc0c3a23ea473193cb290cf17d4", size = 250141, upload-time = "2025-08-10T21:26:15.787Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ed/33efd8819895b10c66348bf26f011dd621e804866c996ea6893d682218df/coverage-7.10.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b1f91cbc78c7112ab84ed2a8defbccd90f888fcae40a97ddd6466b0bec6ae8a", size = 251415, upload-time = "2025-08-10T21:26:17.535Z" }, + { url = "https://files.pythonhosted.org/packages/26/04/cb83826f313d07dc743359c9914d9bc460e0798da9a0e38b4f4fabc207ed/coverage-7.10.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0bac054d45af7cd938834b43a9878b36ea92781bcb009eab040a5b09e9927e3", size = 249575, upload-time = "2025-08-10T21:26:18.921Z" }, + { url = "https://files.pythonhosted.org/packages/2d/fd/ae963c7a8e9581c20fa4355ab8940ca272554d8102e872dbb932a644e410/coverage-7.10.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fe72cbdd12d9e0f4aca873fa6d755e103888a7f9085e4a62d282d9d5b9f7928c", size = 247466, upload-time = "2025-08-10T21:26:20.263Z" }, + { url = "https://files.pythonhosted.org/packages/99/e8/b68d1487c6af370b8d5ef223c6d7e250d952c3acfbfcdbf1a773aa0da9d2/coverage-7.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c1e2e927ab3eadd7c244023927d646e4c15c65bb2ac7ae3c3e9537c013700d21", size = 249084, upload-time = "2025-08-10T21:26:21.638Z" }, + { url = "https://files.pythonhosted.org/packages/66/4d/a0bcb561645c2c1e21758d8200443669d6560d2a2fb03955291110212ec4/coverage-7.10.3-cp313-cp313-win32.whl", hash = "sha256:24d0c13de473b04920ddd6e5da3c08831b1170b8f3b17461d7429b61cad59ae0", size = 218735, upload-time = "2025-08-10T21:26:23.009Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c3/78b4adddbc0feb3b223f62761e5f9b4c5a758037aaf76e0a5845e9e35e48/coverage-7.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:3564aae76bce4b96e2345cf53b4c87e938c4985424a9be6a66ee902626edec4c", size = 219531, upload-time = "2025-08-10T21:26:24.474Z" }, + { url = "https://files.pythonhosted.org/packages/70/1b/1229c0b2a527fa5390db58d164aa896d513a1fbb85a1b6b6676846f00552/coverage-7.10.3-cp313-cp313-win_arm64.whl", hash = "sha256:f35580f19f297455f44afcd773c9c7a058e52eb6eb170aa31222e635f2e38b87", size = 218162, upload-time = "2025-08-10T21:26:25.847Z" }, + { url = "https://files.pythonhosted.org/packages/fc/26/1c1f450e15a3bf3eaecf053ff64538a2612a23f05b21d79ce03be9ff5903/coverage-7.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07009152f497a0464ffdf2634586787aea0e69ddd023eafb23fc38267db94b84", size = 217003, upload-time = "2025-08-10T21:26:27.231Z" }, + { url = "https://files.pythonhosted.org/packages/29/96/4b40036181d8c2948454b458750960956a3c4785f26a3c29418bbbee1666/coverage-7.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dd2ba5f0c7e7e8cc418be2f0c14c4d9e3f08b8fb8e4c0f83c2fe87d03eb655e", size = 217238, upload-time = "2025-08-10T21:26:28.83Z" }, + { url = "https://files.pythonhosted.org/packages/62/23/8dfc52e95da20957293fb94d97397a100e63095ec1e0ef5c09dd8c6f591a/coverage-7.10.3-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1ae22b97003c74186e034a93e4f946c75fad8c0ce8d92fbbc168b5e15ee2841f", size = 258561, upload-time = "2025-08-10T21:26:30.475Z" }, + { url = "https://files.pythonhosted.org/packages/59/95/00e7fcbeda3f632232f4c07dde226afe3511a7781a000aa67798feadc535/coverage-7.10.3-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:eb329f1046888a36b1dc35504d3029e1dd5afe2196d94315d18c45ee380f67d5", size = 260735, upload-time = "2025-08-10T21:26:32.333Z" }, + { url = "https://files.pythonhosted.org/packages/9e/4c/f4666cbc4571804ba2a65b078ff0de600b0b577dc245389e0bc9b69ae7ca/coverage-7.10.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce01048199a91f07f96ca3074b0c14021f4fe7ffd29a3e6a188ac60a5c3a4af8", size = 262960, upload-time = "2025-08-10T21:26:33.701Z" }, + { url = "https://files.pythonhosted.org/packages/c1/a5/8a9e8a7b12a290ed98b60f73d1d3e5e9ced75a4c94a0d1a671ce3ddfff2a/coverage-7.10.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:08b989a06eb9dfacf96d42b7fb4c9a22bafa370d245dc22fa839f2168c6f9fa1", size = 260515, upload-time = "2025-08-10T21:26:35.16Z" }, + { url = "https://files.pythonhosted.org/packages/86/11/bb59f7f33b2cac0c5b17db0d9d0abba9c90d9eda51a6e727b43bd5fce4ae/coverage-7.10.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:669fe0d4e69c575c52148511029b722ba8d26e8a3129840c2ce0522e1452b256", size = 258278, upload-time = "2025-08-10T21:26:36.539Z" }, + { url = "https://files.pythonhosted.org/packages/cc/22/3646f8903743c07b3e53fded0700fed06c580a980482f04bf9536657ac17/coverage-7.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3262d19092771c83f3413831d9904b1ccc5f98da5de4ffa4ad67f5b20c7aaf7b", size = 259408, upload-time = "2025-08-10T21:26:37.954Z" }, + { url = "https://files.pythonhosted.org/packages/d2/5c/6375e9d905da22ddea41cd85c30994b8b6f6c02e44e4c5744b76d16b026f/coverage-7.10.3-cp313-cp313t-win32.whl", hash = "sha256:cc0ee4b2ccd42cab7ee6be46d8a67d230cb33a0a7cd47a58b587a7063b6c6b0e", size = 219396, upload-time = "2025-08-10T21:26:39.426Z" }, + { url = "https://files.pythonhosted.org/packages/33/3b/7da37fd14412b8c8b6e73c3e7458fef6b1b05a37f990a9776f88e7740c89/coverage-7.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:03db599f213341e2960430984e04cf35fb179724e052a3ee627a068653cf4a7c", size = 220458, upload-time = "2025-08-10T21:26:40.905Z" }, + { url = "https://files.pythonhosted.org/packages/28/cc/59a9a70f17edab513c844ee7a5c63cf1057041a84cc725b46a51c6f8301b/coverage-7.10.3-cp313-cp313t-win_arm64.whl", hash = "sha256:46eae7893ba65f53c71284585a262f083ef71594f05ec5c85baf79c402369098", size = 218722, upload-time = "2025-08-10T21:26:42.362Z" }, + { url = "https://files.pythonhosted.org/packages/2d/84/bb773b51a06edbf1231b47dc810a23851f2796e913b335a0fa364773b842/coverage-7.10.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:bce8b8180912914032785850d8f3aacb25ec1810f5f54afc4a8b114e7a9b55de", size = 216280, upload-time = "2025-08-10T21:26:44.132Z" }, + { url = "https://files.pythonhosted.org/packages/92/a8/4d8ca9c111d09865f18d56facff64d5fa076a5593c290bd1cfc5dceb8dba/coverage-7.10.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:07790b4b37d56608536f7c1079bd1aa511567ac2966d33d5cec9cf520c50a7c8", size = 216557, upload-time = "2025-08-10T21:26:45.598Z" }, + { url = "https://files.pythonhosted.org/packages/fe/b2/eb668bfc5060194bc5e1ccd6f664e8e045881cfee66c42a2aa6e6c5b26e8/coverage-7.10.3-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e79367ef2cd9166acedcbf136a458dfe9a4a2dd4d1ee95738fb2ee581c56f667", size = 247598, upload-time = "2025-08-10T21:26:47.081Z" }, + { url = "https://files.pythonhosted.org/packages/fd/b0/9faa4ac62c8822219dd83e5d0e73876398af17d7305968aed8d1606d1830/coverage-7.10.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:419d2a0f769f26cb1d05e9ccbc5eab4cb5d70231604d47150867c07822acbdf4", size = 250131, upload-time = "2025-08-10T21:26:48.65Z" }, + { url = "https://files.pythonhosted.org/packages/4e/90/203537e310844d4bf1bdcfab89c1e05c25025c06d8489b9e6f937ad1a9e2/coverage-7.10.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee221cf244757cdc2ac882e3062ab414b8464ad9c884c21e878517ea64b3fa26", size = 251485, upload-time = "2025-08-10T21:26:50.368Z" }, + { url = "https://files.pythonhosted.org/packages/b9/b2/9d894b26bc53c70a1fe503d62240ce6564256d6d35600bdb86b80e516e7d/coverage-7.10.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c2079d8cdd6f7373d628e14b3357f24d1db02c9dc22e6a007418ca7a2be0435a", size = 249488, upload-time = "2025-08-10T21:26:52.045Z" }, + { url = "https://files.pythonhosted.org/packages/b4/28/af167dbac5281ba6c55c933a0ca6675d68347d5aee39cacc14d44150b922/coverage-7.10.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:bd8df1f83c0703fa3ca781b02d36f9ec67ad9cb725b18d486405924f5e4270bd", size = 247419, upload-time = "2025-08-10T21:26:53.533Z" }, + { url = "https://files.pythonhosted.org/packages/f4/1c/9a4ddc9f0dcb150d4cd619e1c4bb39bcf694c6129220bdd1e5895d694dda/coverage-7.10.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6b4e25e0fa335c8aa26e42a52053f3786a61cc7622b4d54ae2dad994aa754fec", size = 248917, upload-time = "2025-08-10T21:26:55.11Z" }, + { url = "https://files.pythonhosted.org/packages/92/27/c6a60c7cbe10dbcdcd7fc9ee89d531dc04ea4c073800279bb269954c5a9f/coverage-7.10.3-cp314-cp314-win32.whl", hash = "sha256:d7c3d02c2866deb217dce664c71787f4b25420ea3eaf87056f44fb364a3528f5", size = 218999, upload-time = "2025-08-10T21:26:56.637Z" }, + { url = "https://files.pythonhosted.org/packages/36/09/a94c1369964ab31273576615d55e7d14619a1c47a662ed3e2a2fe4dee7d4/coverage-7.10.3-cp314-cp314-win_amd64.whl", hash = "sha256:9c8916d44d9e0fe6cdb2227dc6b0edd8bc6c8ef13438bbbf69af7482d9bb9833", size = 219801, upload-time = "2025-08-10T21:26:58.207Z" }, + { url = "https://files.pythonhosted.org/packages/23/59/f5cd2a80f401c01cf0f3add64a7b791b7d53fd6090a4e3e9ea52691cf3c4/coverage-7.10.3-cp314-cp314-win_arm64.whl", hash = "sha256:1007d6a2b3cf197c57105cc1ba390d9ff7f0bee215ced4dea530181e49c65ab4", size = 218381, upload-time = "2025-08-10T21:26:59.707Z" }, + { url = "https://files.pythonhosted.org/packages/73/3d/89d65baf1ea39e148ee989de6da601469ba93c1d905b17dfb0b83bd39c96/coverage-7.10.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ebc8791d346410d096818788877d675ca55c91db87d60e8f477bd41c6970ffc6", size = 217019, upload-time = "2025-08-10T21:27:01.242Z" }, + { url = "https://files.pythonhosted.org/packages/7d/7d/d9850230cd9c999ce3a1e600f85c2fff61a81c301334d7a1faa1a5ba19c8/coverage-7.10.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1f4e4d8e75f6fd3c6940ebeed29e3d9d632e1f18f6fb65d33086d99d4d073241", size = 217237, upload-time = "2025-08-10T21:27:03.442Z" }, + { url = "https://files.pythonhosted.org/packages/36/51/b87002d417202ab27f4a1cd6bd34ee3b78f51b3ddbef51639099661da991/coverage-7.10.3-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:24581ed69f132b6225a31b0228ae4885731cddc966f8a33fe5987288bdbbbd5e", size = 258735, upload-time = "2025-08-10T21:27:05.124Z" }, + { url = "https://files.pythonhosted.org/packages/1c/02/1f8612bfcb46fc7ca64a353fff1cd4ed932bb6e0b4e0bb88b699c16794b8/coverage-7.10.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ec151569ddfccbf71bac8c422dce15e176167385a00cd86e887f9a80035ce8a5", size = 260901, upload-time = "2025-08-10T21:27:06.68Z" }, + { url = "https://files.pythonhosted.org/packages/aa/3a/fe39e624ddcb2373908bd922756384bb70ac1c5009b0d1674eb326a3e428/coverage-7.10.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2ae8e7c56290b908ee817200c0b65929b8050bc28530b131fe7c6dfee3e7d86b", size = 263157, upload-time = "2025-08-10T21:27:08.398Z" }, + { url = "https://files.pythonhosted.org/packages/5e/89/496b6d5a10fa0d0691a633bb2b2bcf4f38f0bdfcbde21ad9e32d1af328ed/coverage-7.10.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5fb742309766d7e48e9eb4dc34bc95a424707bc6140c0e7d9726e794f11b92a0", size = 260597, upload-time = "2025-08-10T21:27:10.237Z" }, + { url = "https://files.pythonhosted.org/packages/b6/a6/8b5bf6a9e8c6aaeb47d5fe9687014148efc05c3588110246d5fdeef9b492/coverage-7.10.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:c65e2a5b32fbe1e499f1036efa6eb9cb4ea2bf6f7168d0e7a5852f3024f471b1", size = 258353, upload-time = "2025-08-10T21:27:11.773Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6d/ad131be74f8afd28150a07565dfbdc86592fd61d97e2dc83383d9af219f0/coverage-7.10.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d48d2cb07d50f12f4f18d2bb75d9d19e3506c26d96fffabf56d22936e5ed8f7c", size = 259504, upload-time = "2025-08-10T21:27:13.254Z" }, + { url = "https://files.pythonhosted.org/packages/ec/30/fc9b5097092758cba3375a8cc4ff61774f8cd733bcfb6c9d21a60077a8d8/coverage-7.10.3-cp314-cp314t-win32.whl", hash = "sha256:dec0d9bc15ee305e09fe2cd1911d3f0371262d3cfdae05d79515d8cb712b4869", size = 219782, upload-time = "2025-08-10T21:27:14.736Z" }, + { url = "https://files.pythonhosted.org/packages/72/9b/27fbf79451b1fac15c4bda6ec6e9deae27cf7c0648c1305aa21a3454f5c4/coverage-7.10.3-cp314-cp314t-win_amd64.whl", hash = "sha256:424ea93a323aa0f7f01174308ea78bde885c3089ec1bef7143a6d93c3e24ef64", size = 220898, upload-time = "2025-08-10T21:27:16.297Z" }, + { url = "https://files.pythonhosted.org/packages/d1/cf/a32bbf92869cbf0b7c8b84325327bfc718ad4b6d2c63374fef3d58e39306/coverage-7.10.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f5983c132a62d93d71c9ef896a0b9bf6e6828d8d2ea32611f58684fba60bba35", size = 218922, upload-time = "2025-08-10T21:27:18.22Z" }, + { url = "https://files.pythonhosted.org/packages/f1/66/c06f4a93c65b6fc6578ef4f1fe51f83d61fc6f2a74ec0ce434ed288d834a/coverage-7.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:da749daa7e141985487e1ff90a68315b0845930ed53dc397f4ae8f8bab25b551", size = 215951, upload-time = "2025-08-10T21:27:19.815Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ea/cc18c70a6f72f8e4def212eaebd8388c64f29608da10b3c38c8ec76f5e49/coverage-7.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3126fb6a47d287f461d9b1aa5d1a8c97034d1dffb4f452f2cf211289dae74ef", size = 216335, upload-time = "2025-08-10T21:27:21.737Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fb/9c6d1d67c6d54b149f06b9f374bc9ca03e4d7d7784c8cfd12ceda20e3787/coverage-7.10.3-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3da794db13cc27ca40e1ec8127945b97fab78ba548040047d54e7bfa6d442dca", size = 242772, upload-time = "2025-08-10T21:27:23.884Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e5/4223bdb28b992a19a13ab1410c761e2bfe92ca1e7bba8e85ee2024eeda85/coverage-7.10.3-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4e27bebbd184ef8d1c1e092b74a2b7109dcbe2618dce6e96b1776d53b14b3fe8", size = 244596, upload-time = "2025-08-10T21:27:25.842Z" }, + { url = "https://files.pythonhosted.org/packages/d2/13/d646ba28613669d487c654a760571c10128247d12d9f50e93f69542679a2/coverage-7.10.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8fd4ee2580b9fefbd301b4f8f85b62ac90d1e848bea54f89a5748cf132782118", size = 246370, upload-time = "2025-08-10T21:27:27.503Z" }, + { url = "https://files.pythonhosted.org/packages/02/7c/aff99c67d8c383142b0877ee435caf493765356336211c4899257325d6c7/coverage-7.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6999920bdd73259ce11cabfc1307484f071ecc6abdb2ca58d98facbcefc70f16", size = 244254, upload-time = "2025-08-10T21:27:29.357Z" }, + { url = "https://files.pythonhosted.org/packages/b0/13/a51ea145ed51ddfa8717bb29926d9111aca343fab38f04692a843d50be6b/coverage-7.10.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c3623f929db885fab100cb88220a5b193321ed37e03af719efdbaf5d10b6e227", size = 242325, upload-time = "2025-08-10T21:27:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/d8/4b/6119be0089c89ad49d2e5a508d55a1485c878642b706a7f95b26e299137d/coverage-7.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:25b902c5e15dea056485d782e420bb84621cc08ee75d5131ecb3dbef8bd1365f", size = 243281, upload-time = "2025-08-10T21:27:32.815Z" }, + { url = "https://files.pythonhosted.org/packages/34/c8/1b2e7e53eee4bc1304e56e10361b08197a77a26ceb07201dcc9e759ef132/coverage-7.10.3-cp39-cp39-win32.whl", hash = "sha256:f930a4d92b004b643183451fe9c8fe398ccf866ed37d172ebaccfd443a097f61", size = 218489, upload-time = "2025-08-10T21:27:34.905Z" }, + { url = "https://files.pythonhosted.org/packages/dd/1e/9c0c230a199809c39e2dff0f1f889dfb04dcd07d83c1c26a8ef671660e08/coverage-7.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:08e638a93c8acba13c7842953f92a33d52d73e410329acd472280d2a21a6c0e1", size = 219396, upload-time = "2025-08-10T21:27:36.61Z" }, + { url = "https://files.pythonhosted.org/packages/84/19/e67f4ae24e232c7f713337f3f4f7c9c58afd0c02866fb07c7b9255a19ed7/coverage-7.10.3-py3-none-any.whl", hash = "sha256:416a8d74dc0adfd33944ba2f405897bab87b7e9e84a391e09d241956bd953ce1", size = 207921, upload-time = "2025-08-10T21:27:38.254Z" }, +] + +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "python_full_version <= '3.11'" }, +] + +[[package]] +name = "distlib" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, +] + +[[package]] +name = "expects" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/86/9a/4944ecc222f24d18e8d2819800472ffc2668e52986afd5c7bc41ecaf897b/expects-0.9.0.tar.gz", hash = "sha256:419902ccafe81b7e9559eeb6b7a07ef9d5c5604eddb93000f0642b3b2d594f4c", size = 27901, upload-time = "2018-10-25T16:01:46.973Z" } + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, +] + +[[package]] +name = "flake8" +version = "7.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mccabe" }, + { name = "pycodestyle" }, + { name = "pyflakes" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/af/fbfe3c4b5a657d79e5c47a2827a362f9e1b763336a52f926126aa6dc7123/flake8-7.3.0.tar.gz", hash = "sha256:fe044858146b9fc69b551a4b490d69cf960fcb78ad1edcb84e7fbb1b4a8e3872", size = 48326, upload-time = "2025-06-20T19:31:35.838Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl", hash = "sha256:b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e", size = 57922, upload-time = "2025-06-20T19:31:34.425Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "mamba" +version = "0.11.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "clint" }, + { name = "coverage" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/08/58d6330e23edbc2e7c0bb2b716917f4dafc9f6a508a1b297389954a10e4b/mamba-0.11.3.tar.gz", hash = "sha256:4dcf69e9a53e78d4aa5ec3dee0bb2c65f02ea68a6b62c4275653d7170b8f5fe2", size = 14156, upload-time = "2023-11-09T15:34:22.196Z" } + +[[package]] +name = "mccabe" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, +] + +[[package]] +name = "mypy" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8e/22/ea637422dedf0bf36f3ef238eab4e455e2a0dcc3082b5cc067615347ab8e/mypy-1.17.1.tar.gz", hash = "sha256:25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01", size = 3352570, upload-time = "2025-07-31T07:54:19.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/a9/3d7aa83955617cdf02f94e50aab5c830d205cfa4320cf124ff64acce3a8e/mypy-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3fbe6d5555bf608c47203baa3e72dbc6ec9965b3d7c318aa9a4ca76f465bd972", size = 11003299, upload-time = "2025-07-31T07:54:06.425Z" }, + { url = "https://files.pythonhosted.org/packages/83/e8/72e62ff837dd5caaac2b4a5c07ce769c8e808a00a65e5d8f94ea9c6f20ab/mypy-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80ef5c058b7bce08c83cac668158cb7edea692e458d21098c7d3bce35a5d43e7", size = 10125451, upload-time = "2025-07-31T07:53:52.974Z" }, + { url = "https://files.pythonhosted.org/packages/7d/10/f3f3543f6448db11881776f26a0ed079865926b0c841818ee22de2c6bbab/mypy-1.17.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a580f8a70c69e4a75587bd925d298434057fe2a428faaf927ffe6e4b9a98df", size = 11916211, upload-time = "2025-07-31T07:53:18.879Z" }, + { url = "https://files.pythonhosted.org/packages/06/bf/63e83ed551282d67bb3f7fea2cd5561b08d2bb6eb287c096539feb5ddbc5/mypy-1.17.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd86bb649299f09d987a2eebb4d52d10603224500792e1bee18303bbcc1ce390", size = 12652687, upload-time = "2025-07-31T07:53:30.544Z" }, + { url = "https://files.pythonhosted.org/packages/69/66/68f2eeef11facf597143e85b694a161868b3b006a5fbad50e09ea117ef24/mypy-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a76906f26bd8d51ea9504966a9c25419f2e668f012e0bdf3da4ea1526c534d94", size = 12896322, upload-time = "2025-07-31T07:53:50.74Z" }, + { url = "https://files.pythonhosted.org/packages/a3/87/8e3e9c2c8bd0d7e071a89c71be28ad088aaecbadf0454f46a540bda7bca6/mypy-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:e79311f2d904ccb59787477b7bd5d26f3347789c06fcd7656fa500875290264b", size = 9507962, upload-time = "2025-07-31T07:53:08.431Z" }, + { url = "https://files.pythonhosted.org/packages/46/cf/eadc80c4e0a70db1c08921dcc220357ba8ab2faecb4392e3cebeb10edbfa/mypy-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad37544be07c5d7fba814eb370e006df58fed8ad1ef33ed1649cb1889ba6ff58", size = 10921009, upload-time = "2025-07-31T07:53:23.037Z" }, + { url = "https://files.pythonhosted.org/packages/5d/c1/c869d8c067829ad30d9bdae051046561552516cfb3a14f7f0347b7d973ee/mypy-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5", size = 10047482, upload-time = "2025-07-31T07:53:26.151Z" }, + { url = "https://files.pythonhosted.org/packages/98/b9/803672bab3fe03cee2e14786ca056efda4bb511ea02dadcedde6176d06d0/mypy-1.17.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70401bbabd2fa1aa7c43bb358f54037baf0586f41e83b0ae67dd0534fc64edfd", size = 11832883, upload-time = "2025-07-31T07:53:47.948Z" }, + { url = "https://files.pythonhosted.org/packages/88/fb/fcdac695beca66800918c18697b48833a9a6701de288452b6715a98cfee1/mypy-1.17.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e92bdc656b7757c438660f775f872a669b8ff374edc4d18277d86b63edba6b8b", size = 12566215, upload-time = "2025-07-31T07:54:04.031Z" }, + { url = "https://files.pythonhosted.org/packages/7f/37/a932da3d3dace99ee8eb2043b6ab03b6768c36eb29a02f98f46c18c0da0e/mypy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c1fdf4abb29ed1cb091cf432979e162c208a5ac676ce35010373ff29247bcad5", size = 12751956, upload-time = "2025-07-31T07:53:36.263Z" }, + { url = "https://files.pythonhosted.org/packages/8c/cf/6438a429e0f2f5cab8bc83e53dbebfa666476f40ee322e13cac5e64b79e7/mypy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b", size = 9507307, upload-time = "2025-07-31T07:53:59.734Z" }, + { url = "https://files.pythonhosted.org/packages/17/a2/7034d0d61af8098ec47902108553122baa0f438df8a713be860f7407c9e6/mypy-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:69e83ea6553a3ba79c08c6e15dbd9bfa912ec1e493bf75489ef93beb65209aeb", size = 11086295, upload-time = "2025-07-31T07:53:28.124Z" }, + { url = "https://files.pythonhosted.org/packages/14/1f/19e7e44b594d4b12f6ba8064dbe136505cec813549ca3e5191e40b1d3cc2/mypy-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b16708a66d38abb1e6b5702f5c2c87e133289da36f6a1d15f6a5221085c6403", size = 10112355, upload-time = "2025-07-31T07:53:21.121Z" }, + { url = "https://files.pythonhosted.org/packages/5b/69/baa33927e29e6b4c55d798a9d44db5d394072eef2bdc18c3e2048c9ed1e9/mypy-1.17.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:89e972c0035e9e05823907ad5398c5a73b9f47a002b22359b177d40bdaee7056", size = 11875285, upload-time = "2025-07-31T07:53:55.293Z" }, + { url = "https://files.pythonhosted.org/packages/90/13/f3a89c76b0a41e19490b01e7069713a30949d9a6c147289ee1521bcea245/mypy-1.17.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341", size = 12737895, upload-time = "2025-07-31T07:53:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/23/a1/c4ee79ac484241301564072e6476c5a5be2590bc2e7bfd28220033d2ef8f/mypy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c837b896b37cd103570d776bda106eabb8737aa6dd4f248451aecf53030cdbeb", size = 12931025, upload-time = "2025-07-31T07:54:17.125Z" }, + { url = "https://files.pythonhosted.org/packages/89/b8/7409477be7919a0608900e6320b155c72caab4fef46427c5cc75f85edadd/mypy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:665afab0963a4b39dff7c1fa563cc8b11ecff7910206db4b2e64dd1ba25aed19", size = 9584664, upload-time = "2025-07-31T07:54:12.842Z" }, + { url = "https://files.pythonhosted.org/packages/5b/82/aec2fc9b9b149f372850291827537a508d6c4d3664b1750a324b91f71355/mypy-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93378d3203a5c0800c6b6d850ad2f19f7a3cdf1a3701d3416dbf128805c6a6a7", size = 11075338, upload-time = "2025-07-31T07:53:38.873Z" }, + { url = "https://files.pythonhosted.org/packages/07/ac/ee93fbde9d2242657128af8c86f5d917cd2887584cf948a8e3663d0cd737/mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15d54056f7fe7a826d897789f53dd6377ec2ea8ba6f776dc83c2902b899fee81", size = 10113066, upload-time = "2025-07-31T07:54:14.707Z" }, + { url = "https://files.pythonhosted.org/packages/5a/68/946a1e0be93f17f7caa56c45844ec691ca153ee8b62f21eddda336a2d203/mypy-1.17.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:209a58fed9987eccc20f2ca94afe7257a8f46eb5df1fb69958650973230f91e6", size = 11875473, upload-time = "2025-07-31T07:53:14.504Z" }, + { url = "https://files.pythonhosted.org/packages/9f/0f/478b4dce1cb4f43cf0f0d00fba3030b21ca04a01b74d1cd272a528cf446f/mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:099b9a5da47de9e2cb5165e581f158e854d9e19d2e96b6698c0d64de911dd849", size = 12744296, upload-time = "2025-07-31T07:53:03.896Z" }, + { url = "https://files.pythonhosted.org/packages/ca/70/afa5850176379d1b303f992a828de95fc14487429a7139a4e0bdd17a8279/mypy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14", size = 12914657, upload-time = "2025-07-31T07:54:08.576Z" }, + { url = "https://files.pythonhosted.org/packages/53/f9/4a83e1c856a3d9c8f6edaa4749a4864ee98486e9b9dbfbc93842891029c2/mypy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:9a2b7d9180aed171f033c9f2fc6c204c1245cf60b0cb61cf2e7acc24eea78e0a", size = 9593320, upload-time = "2025-07-31T07:53:01.341Z" }, + { url = "https://files.pythonhosted.org/packages/38/56/79c2fac86da57c7d8c48622a05873eaab40b905096c33597462713f5af90/mypy-1.17.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:15a83369400454c41ed3a118e0cc58bd8123921a602f385cb6d6ea5df050c733", size = 11040037, upload-time = "2025-07-31T07:54:10.942Z" }, + { url = "https://files.pythonhosted.org/packages/4d/c3/adabe6ff53638e3cad19e3547268482408323b1e68bf082c9119000cd049/mypy-1.17.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55b918670f692fc9fba55c3298d8a3beae295c5cded0a55dccdc5bbead814acd", size = 10131550, upload-time = "2025-07-31T07:53:41.307Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c5/2e234c22c3bdeb23a7817af57a58865a39753bde52c74e2c661ee0cfc640/mypy-1.17.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:62761474061feef6f720149d7ba876122007ddc64adff5ba6f374fda35a018a0", size = 11872963, upload-time = "2025-07-31T07:53:16.878Z" }, + { url = "https://files.pythonhosted.org/packages/ab/26/c13c130f35ca8caa5f2ceab68a247775648fdcd6c9a18f158825f2bc2410/mypy-1.17.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c49562d3d908fd49ed0938e5423daed8d407774a479b595b143a3d7f87cdae6a", size = 12710189, upload-time = "2025-07-31T07:54:01.962Z" }, + { url = "https://files.pythonhosted.org/packages/82/df/c7d79d09f6de8383fe800521d066d877e54d30b4fb94281c262be2df84ef/mypy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:397fba5d7616a5bc60b45c7ed204717eaddc38f826e3645402c426057ead9a91", size = 12900322, upload-time = "2025-07-31T07:53:10.551Z" }, + { url = "https://files.pythonhosted.org/packages/b8/98/3d5a48978b4f708c55ae832619addc66d677f6dc59f3ebad71bae8285ca6/mypy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:9d6b20b97d373f41617bd0708fd46aa656059af57f2ef72aa8c7d6a2b73b74ed", size = 9751879, upload-time = "2025-07-31T07:52:56.683Z" }, + { url = "https://files.pythonhosted.org/packages/29/cb/673e3d34e5d8de60b3a61f44f80150a738bff568cd6b7efb55742a605e98/mypy-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d1092694f166a7e56c805caaf794e0585cabdbf1df36911c414e4e9abb62ae9", size = 10992466, upload-time = "2025-07-31T07:53:57.574Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d0/fe1895836eea3a33ab801561987a10569df92f2d3d4715abf2cfeaa29cb2/mypy-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79d44f9bfb004941ebb0abe8eff6504223a9c1ac51ef967d1263c6572bbebc99", size = 10117638, upload-time = "2025-07-31T07:53:34.256Z" }, + { url = "https://files.pythonhosted.org/packages/97/f3/514aa5532303aafb95b9ca400a31054a2bd9489de166558c2baaeea9c522/mypy-1.17.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b01586eed696ec905e61bd2568f48740f7ac4a45b3a468e6423a03d3788a51a8", size = 11915673, upload-time = "2025-07-31T07:52:59.361Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c3/c0805f0edec96fe8e2c048b03769a6291523d509be8ee7f56ae922fa3882/mypy-1.17.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43808d9476c36b927fbcd0b0255ce75efe1b68a080154a38ae68a7e62de8f0f8", size = 12649022, upload-time = "2025-07-31T07:53:45.92Z" }, + { url = "https://files.pythonhosted.org/packages/45/3e/d646b5a298ada21a8512fa7e5531f664535a495efa672601702398cea2b4/mypy-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:feb8cc32d319edd5859da2cc084493b3e2ce5e49a946377663cc90f6c15fb259", size = 12895536, upload-time = "2025-07-31T07:53:06.17Z" }, + { url = "https://files.pythonhosted.org/packages/14/55/e13d0dcd276975927d1f4e9e2ec4fd409e199f01bdc671717e673cc63a22/mypy-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d7598cf74c3e16539d4e2f0b8d8c318e00041553d83d4861f87c7a72e95ac24d", size = 9512564, upload-time = "2025-07-31T07:53:12.346Z" }, + { url = "https://files.pythonhosted.org/packages/1d/f3/8fcd2af0f5b806f6cf463efaffd3c9548a28f84220493ecd38d127b6b66d/mypy-1.17.1-py3-none-any.whl", hash = "sha256:a9f52c0351c21fe24c21d8c0eb1f62967b262d6729393397b6f443c3b773c3b9", size = 2283411, upload-time = "2025-07-31T07:53:24.664Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pycodestyle" +version = "2.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/e0/abfd2a0d2efe47670df87f3e3a0e2edda42f055053c85361f19c0e2c1ca8/pycodestyle-2.14.0.tar.gz", hash = "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783", size = 39472, upload-time = "2025-06-20T18:49:48.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d", size = 31594, upload-time = "2025-06-20T18:49:47.491Z" }, +] + +[[package]] +name = "pydantic" +version = "2.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/92/b31726561b5dae176c2d2c2dc43a9c5bfba5d32f96f8b4c0a600dd492447/pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8", size = 2028817, upload-time = "2025-04-23T18:30:43.919Z" }, + { url = "https://files.pythonhosted.org/packages/a3/44/3f0b95fafdaca04a483c4e685fe437c6891001bf3ce8b2fded82b9ea3aa1/pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d", size = 1861357, upload-time = "2025-04-23T18:30:46.372Z" }, + { url = "https://files.pythonhosted.org/packages/30/97/e8f13b55766234caae05372826e8e4b3b96e7b248be3157f53237682e43c/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d", size = 1898011, upload-time = "2025-04-23T18:30:47.591Z" }, + { url = "https://files.pythonhosted.org/packages/9b/a3/99c48cf7bafc991cc3ee66fd544c0aae8dc907b752f1dad2d79b1b5a471f/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572", size = 1982730, upload-time = "2025-04-23T18:30:49.328Z" }, + { url = "https://files.pythonhosted.org/packages/de/8e/a5b882ec4307010a840fb8b58bd9bf65d1840c92eae7534c7441709bf54b/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02", size = 2136178, upload-time = "2025-04-23T18:30:50.907Z" }, + { url = "https://files.pythonhosted.org/packages/e4/bb/71e35fc3ed05af6834e890edb75968e2802fe98778971ab5cba20a162315/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b", size = 2736462, upload-time = "2025-04-23T18:30:52.083Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/c8f7593e6bc7066289bbc366f2235701dcbebcd1ff0ef8e64f6f239fb47d/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2", size = 2005652, upload-time = "2025-04-23T18:30:53.389Z" }, + { url = "https://files.pythonhosted.org/packages/d2/7a/996d8bd75f3eda405e3dd219ff5ff0a283cd8e34add39d8ef9157e722867/pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a", size = 2113306, upload-time = "2025-04-23T18:30:54.661Z" }, + { url = "https://files.pythonhosted.org/packages/ff/84/daf2a6fb2db40ffda6578a7e8c5a6e9c8affb251a05c233ae37098118788/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac", size = 2073720, upload-time = "2025-04-23T18:30:56.11Z" }, + { url = "https://files.pythonhosted.org/packages/77/fb/2258da019f4825128445ae79456a5499c032b55849dbd5bed78c95ccf163/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a", size = 2244915, upload-time = "2025-04-23T18:30:57.501Z" }, + { url = "https://files.pythonhosted.org/packages/d8/7a/925ff73756031289468326e355b6fa8316960d0d65f8b5d6b3a3e7866de7/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b", size = 2241884, upload-time = "2025-04-23T18:30:58.867Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b0/249ee6d2646f1cdadcb813805fe76265745c4010cf20a8eba7b0e639d9b2/pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22", size = 1910496, upload-time = "2025-04-23T18:31:00.078Z" }, + { url = "https://files.pythonhosted.org/packages/66/ff/172ba8f12a42d4b552917aa65d1f2328990d3ccfc01d5b7c943ec084299f/pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640", size = 1955019, upload-time = "2025-04-23T18:31:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, + { url = "https://files.pythonhosted.org/packages/53/ea/bbe9095cdd771987d13c82d104a9c8559ae9aec1e29f139e286fd2e9256e/pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d", size = 2028677, upload-time = "2025-04-23T18:32:27.227Z" }, + { url = "https://files.pythonhosted.org/packages/49/1d/4ac5ed228078737d457a609013e8f7edc64adc37b91d619ea965758369e5/pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954", size = 1864735, upload-time = "2025-04-23T18:32:29.019Z" }, + { url = "https://files.pythonhosted.org/packages/23/9a/2e70d6388d7cda488ae38f57bc2f7b03ee442fbcf0d75d848304ac7e405b/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb", size = 1898467, upload-time = "2025-04-23T18:32:31.119Z" }, + { url = "https://files.pythonhosted.org/packages/ff/2e/1568934feb43370c1ffb78a77f0baaa5a8b6897513e7a91051af707ffdc4/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7", size = 1983041, upload-time = "2025-04-23T18:32:33.655Z" }, + { url = "https://files.pythonhosted.org/packages/01/1a/1a1118f38ab64eac2f6269eb8c120ab915be30e387bb561e3af904b12499/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4", size = 2136503, upload-time = "2025-04-23T18:32:35.519Z" }, + { url = "https://files.pythonhosted.org/packages/5c/da/44754d1d7ae0f22d6d3ce6c6b1486fc07ac2c524ed8f6eca636e2e1ee49b/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b", size = 2736079, upload-time = "2025-04-23T18:32:37.659Z" }, + { url = "https://files.pythonhosted.org/packages/4d/98/f43cd89172220ec5aa86654967b22d862146bc4d736b1350b4c41e7c9c03/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3", size = 2006508, upload-time = "2025-04-23T18:32:39.637Z" }, + { url = "https://files.pythonhosted.org/packages/2b/cc/f77e8e242171d2158309f830f7d5d07e0531b756106f36bc18712dc439df/pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a", size = 2113693, upload-time = "2025-04-23T18:32:41.818Z" }, + { url = "https://files.pythonhosted.org/packages/54/7a/7be6a7bd43e0a47c147ba7fbf124fe8aaf1200bc587da925509641113b2d/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782", size = 2074224, upload-time = "2025-04-23T18:32:44.033Z" }, + { url = "https://files.pythonhosted.org/packages/2a/07/31cf8fadffbb03be1cb520850e00a8490c0927ec456e8293cafda0726184/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9", size = 2245403, upload-time = "2025-04-23T18:32:45.836Z" }, + { url = "https://files.pythonhosted.org/packages/b6/8d/bbaf4c6721b668d44f01861f297eb01c9b35f612f6b8e14173cb204e6240/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e", size = 2242331, upload-time = "2025-04-23T18:32:47.618Z" }, + { url = "https://files.pythonhosted.org/packages/bb/93/3cc157026bca8f5006250e74515119fcaa6d6858aceee8f67ab6dc548c16/pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9", size = 1910571, upload-time = "2025-04-23T18:32:49.401Z" }, + { url = "https://files.pythonhosted.org/packages/5b/90/7edc3b2a0d9f0dda8806c04e511a67b0b7a41d2187e2003673a996fb4310/pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3", size = 1956504, upload-time = "2025-04-23T18:32:51.287Z" }, + { url = "https://files.pythonhosted.org/packages/30/68/373d55e58b7e83ce371691f6eaa7175e3a24b956c44628eb25d7da007917/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa", size = 2023982, upload-time = "2025-04-23T18:32:53.14Z" }, + { url = "https://files.pythonhosted.org/packages/a4/16/145f54ac08c96a63d8ed6442f9dec17b2773d19920b627b18d4f10a061ea/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29", size = 1858412, upload-time = "2025-04-23T18:32:55.52Z" }, + { url = "https://files.pythonhosted.org/packages/41/b1/c6dc6c3e2de4516c0bb2c46f6a373b91b5660312342a0cf5826e38ad82fa/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d", size = 1892749, upload-time = "2025-04-23T18:32:57.546Z" }, + { url = "https://files.pythonhosted.org/packages/12/73/8cd57e20afba760b21b742106f9dbdfa6697f1570b189c7457a1af4cd8a0/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e", size = 2067527, upload-time = "2025-04-23T18:32:59.771Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d5/0bb5d988cc019b3cba4a78f2d4b3854427fc47ee8ec8e9eaabf787da239c/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c", size = 2108225, upload-time = "2025-04-23T18:33:04.51Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c5/00c02d1571913d496aabf146106ad8239dc132485ee22efe08085084ff7c/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec", size = 2069490, upload-time = "2025-04-23T18:33:06.391Z" }, + { url = "https://files.pythonhosted.org/packages/22/a8/dccc38768274d3ed3a59b5d06f59ccb845778687652daa71df0cab4040d7/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052", size = 2237525, upload-time = "2025-04-23T18:33:08.44Z" }, + { url = "https://files.pythonhosted.org/packages/d4/e7/4f98c0b125dda7cf7ccd14ba936218397b44f50a56dd8c16a3091df116c3/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c", size = 2238446, upload-time = "2025-04-23T18:33:10.313Z" }, + { url = "https://files.pythonhosted.org/packages/ce/91/2ec36480fdb0b783cd9ef6795753c1dea13882f2e68e73bce76ae8c21e6a/pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808", size = 2066678, upload-time = "2025-04-23T18:33:12.224Z" }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, + { url = "https://files.pythonhosted.org/packages/08/98/dbf3fdfabaf81cda5622154fda78ea9965ac467e3239078e0dcd6df159e7/pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101", size = 2024034, upload-time = "2025-04-23T18:33:32.843Z" }, + { url = "https://files.pythonhosted.org/packages/8d/99/7810aa9256e7f2ccd492590f86b79d370df1e9292f1f80b000b6a75bd2fb/pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64", size = 1858578, upload-time = "2025-04-23T18:33:34.912Z" }, + { url = "https://files.pythonhosted.org/packages/d8/60/bc06fa9027c7006cc6dd21e48dbf39076dc39d9abbaf718a1604973a9670/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d", size = 1892858, upload-time = "2025-04-23T18:33:36.933Z" }, + { url = "https://files.pythonhosted.org/packages/f2/40/9d03997d9518816c68b4dfccb88969756b9146031b61cd37f781c74c9b6a/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535", size = 2068498, upload-time = "2025-04-23T18:33:38.997Z" }, + { url = "https://files.pythonhosted.org/packages/d8/62/d490198d05d2d86672dc269f52579cad7261ced64c2df213d5c16e0aecb1/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d", size = 2108428, upload-time = "2025-04-23T18:33:41.18Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ec/4cd215534fd10b8549015f12ea650a1a973da20ce46430b68fc3185573e8/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6", size = 2069854, upload-time = "2025-04-23T18:33:43.446Z" }, + { url = "https://files.pythonhosted.org/packages/1a/1a/abbd63d47e1d9b0d632fee6bb15785d0889c8a6e0a6c3b5a8e28ac1ec5d2/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca", size = 2237859, upload-time = "2025-04-23T18:33:45.56Z" }, + { url = "https://files.pythonhosted.org/packages/80/1c/fa883643429908b1c90598fd2642af8839efd1d835b65af1f75fba4d94fe/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039", size = 2239059, upload-time = "2025-04-23T18:33:47.735Z" }, + { url = "https://files.pythonhosted.org/packages/d4/29/3cade8a924a61f60ccfa10842f75eb12787e1440e2b8660ceffeb26685e7/pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27", size = 2066661, upload-time = "2025-04-23T18:33:49.995Z" }, +] + +[[package]] +name = "pyflakes" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/45/dc/fd034dc20b4b264b3d015808458391acbf9df40b1e54750ef175d39180b1/pyflakes-3.4.0.tar.gz", hash = "sha256:b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58", size = 64669, upload-time = "2025-06-20T18:45:27.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f", size = 63551, upload-time = "2025-06-20T18:45:26.937Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyproject-api" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/fd/437901c891f58a7b9096511750247535e891d2d5a5a6eefbc9386a2b41d5/pyproject_api-1.9.1.tar.gz", hash = "sha256:43c9918f49daab37e302038fc1aed54a8c7a91a9fa935d00b9a485f37e0f5335", size = 22710, upload-time = "2025-05-12T14:41:58.025Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/e6/c293c06695d4a3ab0260ef124a74ebadba5f4c511ce3a4259e976902c00b/pyproject_api-1.9.1-py3-none-any.whl", hash = "sha256:7d6238d92f8962773dd75b5f0c4a6a27cce092a14b623b811dba656f3b628948", size = 13158, upload-time = "2025-05-12T14:41:56.217Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, +] + +[[package]] +name = "pytest-cov" +version = "6.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage", extra = ["toml"] }, + { name = "pluggy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload-time = "2025-06-12T10:47:47.684Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload-time = "2025-06-12T10:47:45.932Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload-time = "2024-08-06T20:31:40.178Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload-time = "2024-08-06T20:31:42.173Z" }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload-time = "2024-08-06T20:31:44.263Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload-time = "2024-08-06T20:31:50.199Z" }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload-time = "2024-08-06T20:31:52.292Z" }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload-time = "2024-08-06T20:31:53.836Z" }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload-time = "2024-08-06T20:31:55.565Z" }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload-time = "2024-08-06T20:31:56.914Z" }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, + { url = "https://files.pythonhosted.org/packages/65/d8/b7a1db13636d7fb7d4ff431593c510c8b8fca920ade06ca8ef20015493c5/PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", size = 184777, upload-time = "2024-08-06T20:33:25.896Z" }, + { url = "https://files.pythonhosted.org/packages/0a/02/6ec546cd45143fdf9840b2c6be8d875116a64076218b61d68e12548e5839/PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", size = 172318, upload-time = "2024-08-06T20:33:27.212Z" }, + { url = "https://files.pythonhosted.org/packages/0e/9a/8cc68be846c972bda34f6c2a93abb644fb2476f4dcc924d52175786932c9/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", size = 720891, upload-time = "2024-08-06T20:33:28.974Z" }, + { url = "https://files.pythonhosted.org/packages/e9/6c/6e1b7f40181bc4805e2e07f4abc10a88ce4648e7e95ff1abe4ae4014a9b2/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", size = 722614, upload-time = "2024-08-06T20:33:34.157Z" }, + { url = "https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", size = 737360, upload-time = "2024-08-06T20:33:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/d7/12/7322c1e30b9be969670b672573d45479edef72c9a0deac3bb2868f5d7469/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", size = 699006, upload-time = "2024-08-06T20:33:37.501Z" }, + { url = "https://files.pythonhosted.org/packages/82/72/04fcad41ca56491995076630c3ec1e834be241664c0c09a64c9a2589b507/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", size = 723577, upload-time = "2024-08-06T20:33:39.389Z" }, + { url = "https://files.pythonhosted.org/packages/ed/5e/46168b1f2757f1fcd442bc3029cd8767d88a98c9c05770d8b420948743bb/PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", size = 144593, upload-time = "2024-08-06T20:33:46.63Z" }, + { url = "https://files.pythonhosted.org/packages/19/87/5124b1c1f2412bb95c59ec481eaf936cd32f0fe2a7b16b97b81c4c017a6a/PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", size = 162312, upload-time = "2024-08-06T20:33:49.073Z" }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sysdig-sdk-python" +version = "0.19.1" +source = { editable = "." } +dependencies = [ + { name = "pydantic" }, + { name = "python-dateutil" }, + { name = "typing-extensions" }, + { name = "urllib3" }, +] + +[package.dev-dependencies] +dev = [ + { name = "expects" }, + { name = "flake8" }, + { name = "mamba" }, + { name = "mypy" }, + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "requests-toolbelt" }, + { name = "tatsu" }, + { name = "tox" }, + { name = "types-python-dateutil" }, +] + +[package.metadata] +requires-dist = [ + { name = "pydantic", specifier = ">=2" }, + { name = "python-dateutil", specifier = ">=2.5.3" }, + { name = "python-dateutil", specifier = ">=2.8.2" }, + { name = "typing-extensions", specifier = ">=4.7.1" }, + { name = "urllib3", specifier = ">=2.1.0,<3.0.0" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "expects", specifier = "==0.9.0" }, + { name = "flake8", specifier = ">=4.0.0" }, + { name = "mamba", specifier = "==0.11.3" }, + { name = "mypy", specifier = ">=1.5" }, + { name = "pytest", specifier = ">=7.2.1" }, + { name = "pytest-cov", specifier = ">=2.8.1" }, + { name = "pyyaml", specifier = "==6.0.2" }, + { name = "requests", specifier = "==2.32.4" }, + { name = "requests-toolbelt", specifier = "==1.0.0" }, + { name = "tatsu", specifier = "==5.8.3" }, + { name = "tox", specifier = ">=3.9.0" }, + { name = "types-python-dateutil", specifier = ">=2.8.19.14" }, +] + +[[package]] +name = "tatsu" +version = "5.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dd/e6/f46e17ed341ff7584b23a63508c781e6e5e984a9e6eb0b66b273991a02eb/TatSu-5.8.3.zip", hash = "sha256:571ecbcdf33b7828c05e5cd95a8e8ad06af111c2c83a6a245be4d8f7c43de7bb", size = 205187, upload-time = "2022-07-29T21:44:19.461Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/67/413a03b1048f9f237e3f242e6e829688d8c9cf1fbe6bd8bb5f574ae67ac9/TatSu-5.8.3-py2.py3-none-any.whl", hash = "sha256:0a836692e67247cad9f251e083b045b13345cc715e69a7fbc16522beaa0f2163", size = 101486, upload-time = "2022-07-29T21:44:15.033Z" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, +] + +[[package]] +name = "tox" +version = "4.28.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "chardet" }, + { name = "colorama" }, + { name = "filelock" }, + { name = "packaging" }, + { name = "platformdirs" }, + { name = "pluggy" }, + { name = "pyproject-api" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/01/321c98e3cc584fd101d869c85be2a8236a41a84842bc6af5c078b10c2126/tox-4.28.4.tar.gz", hash = "sha256:b5b14c6307bd8994ff1eba5074275826620325ee1a4f61316959d562bfd70b9d", size = 199692, upload-time = "2025-07-31T21:20:26.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/54/564a33093e41a585e2e997220986182c037bc998abf03a0eb4a7a67c4eff/tox-4.28.4-py3-none-any.whl", hash = "sha256:8d4ad9ee916ebbb59272bb045e154a10fa12e3bbdcf94cc5185cbdaf9b241f99", size = 174058, upload-time = "2025-07-31T21:20:24.836Z" }, +] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20250809" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/53/07dac71db45fb6b3c71c2fd29a87cada2239eac7ecfb318e6ebc7da00a3b/types_python_dateutil-2.9.0.20250809.tar.gz", hash = "sha256:69cbf8d15ef7a75c3801d65d63466e46ac25a0baa678d89d0a137fc31a608cc1", size = 15820, upload-time = "2025-08-09T03:14:14.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/5e/67312e679f612218d07fcdbd14017e6d571ce240a5ba1ad734f15a8523cc/types_python_dateutil-2.9.0.20250809-py3-none-any.whl", hash = "sha256:768890cac4f2d7fd9e0feb6f3217fce2abbfdfc0cadd38d11fba325a815e4b9f", size = 17707, upload-time = "2025-08-09T03:14:13.314Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, +] + +[[package]] +name = "virtualenv" +version = "20.33.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/60/4f20960df6c7b363a18a55ab034c8f2bcd5d9770d1f94f9370ec104c1855/virtualenv-20.33.1.tar.gz", hash = "sha256:1b44478d9e261b3fb8baa5e74a0ca3bc0e05f21aa36167bf9cbf850e542765b8", size = 6082160, upload-time = "2025-08-05T16:10:55.605Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/ff/ded57ac5ff40a09e6e198550bab075d780941e0b0f83cbeabd087c59383a/virtualenv-20.33.1-py3-none-any.whl", hash = "sha256:07c19bc66c11acab6a5958b815cbcee30891cd1c2ccf53785a28651a0d8d8a67", size = 6060362, upload-time = "2025-08-05T16:10:52.81Z" }, +]